Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 미래직장
- 버리자
- 팝업창
- 페이지이동
- 파일호출
- scanner
- Alert
- 영감
- 동기 부여
- iframe
- 파일 호출
- session.setAttribute
- target
- session.getAttribute
- "
- 로그인화면
- 향상된 for문
- 동기부여
- opener
- ;
- Import
- BEANS
- 빈즈
- \
- session.removeAttribute
- javaBeans
- 페이지 이동
- 데이터사이언스
- static
- 자바빈즈
Archives
- Today
- Total
갈림길 이정표
[3. 연산자] 본문
3.1 연산자와 연산식
3.2 연산의 방향과 우선순위
3.3 단항 연산자
3.4 이항 연산자
3.5 삼항 연산자
package pack1;
public class Test2 {
public static void main(String[] args) {
//산술연산자
int a = 5; //치환 연산자
int b = 3;
int c = a + b;
System.out.println(a + b);
System.out.println(a - b);
System.out.println(a * b);
System.out.println(a / b); //몫
System.out.println(a % b); // 나머지
System.out.println(a / (double)b); //몫 + 소수점
// System.out.println(a / 0); // err (/ by zero)
System.out.println(a / 0.0); // err (infinity)
System.out.println(a % 0.0); // err (NaN) Not a Number
System.out.println(0 / 0.0); // err (NaN)
System.out.println();
System.out.println(3 + 4 * 5);
int mbc = 3 + 4 * 5;
System.out.println((3 + 4) * 5); //연산자 우선순위 (괄호 > (*,/) > (+,=) > (=치환))
System.out.println();
String ss1 = "대한";
String ss2 = "민국";
String ss3 = ss1 + ss2; // 문자열 합치기
System.out.println(ss3);
System.out.println(ss3 + " " + 2020);
System.out.println(ss3 + " " + (2000 + 20));
System.out.println(ss3 + " " + 2000 + 20); // 문자열이 더 큰 개념이니까
String ss4 = "5" + 6; // 56이 아니라 5,6이 찍힘, 자동적으로 문자열 변환
System.out.println(ss4);
int ia = Integer.parseInt("5") + 6; // 강제적으로 문자열을 정수화 (참고 parsedouble)
System.out.println(ia); // 참고로 parse 는 '문법적으로 분석하다'
String ss5 = Integer.toString(5) + 6; // 정수를 문자열로... (근데 python 에서 이해하는 방식은 다르니 참고!)
System.out.println(ss5);
//누적
int no = 1;
no = no + 1;
no += 1; // 윗 줄과 똑같은 결과이지만 연산속도가 더 빠르다
no++; // 후위 연산자 (단, 1씩만 늘어남) ... ++,-- 증감 연산자
++no; // 전위 연산자 (단, 1씩만 늘어남)
System.out.println("no : " + Integer.toString(no)); // 사실 "no : " + no 해도 됨
System.out.println();
//증감 연산자
int imsi = 5;
int result = ++imsi +1; // 치환 전 늘어남 (다른 연산 수행전 증가시킴)
System.out.println(imsi);
System.out.println(result);
int imsi2 = 5;
int result2 = imsi2++ +1; // 치환이 끝나고 늘어남 (다른 연산 수행 후 증가시킴, result 연산 포함)
System.out.println(imsi2);
System.out.println(result2);
// 이렇게 다른 연산자와 쓰면 헷갈리므로 증감연산자는 단일로 쓴다
//부호에 대해
System.out.println();
int imsi3 = 3;
System.out.println(imsi3);
System.out.println(-imsi3);
System.out.println(imsi3 * -1);
}
}
package pack1;
public class Test3 {
public static void main(String[] args) {
//관계, 논리, 기타 연산자
int a = 5;
System.out.println(a > 3);
System.out.println(a <= 3);
System.out.println(a == 3); //같다
System.out.println(a != 3); //같지 않다
System.out.println();
int b =10;
System.out.println(a > 3 && b <= 10);
System.out.println(a > 3 && b == 10);
System.out.println(a > 20 && b <= 5); //&&: 앞에 것이 거짓이면 뒤에꺼는 쳐다도 안봄
System.out.println(a > 20 & b <= 5); // &: 앞에 것이 거짓이라도 뒤에꺼 쳐다봄
System.out.println(a > 6 || b < 10);
System.out.println(a > 6 || b < 20); // ||: 앞에거 참이면 뒤에꺼 안봄
System.out.println(a > 6 | b < 20); // |: 앞에거 참일지라도 뒤에꺼 안봄
System.out.println(a > 6 | b < 20 + 4 * 2);
// 연산자 우선순위: () > 산술 연산자 (*,/,% > +,-) > 관계 > 논리 > 치환 [assign]
// Java는 항상 왼쪽에서 오른 쪽으로 인식
System.out.println();
//shift 연산자 -> 게임 사운드 (but 자주 안쓰임)
int ii = 8, ij;
// System.out.println(ii + " " + ij); // 지역변수는 초기화 필수
System.out.println("ii:" + ii + " " + Integer.toBinaryString(ii));
ij = ii << 1; // shift 연산자 왼쪽으로 1 bit 밀어버려. 남는 것은 가장 우측 0으로 채움
System.out.println("ij:" + ij + " " + Integer.toBinaryString(ij));
ij = ii >> 2; // shift 연산자 오른쪽으로 2 bit 밀어버려. 남는 것은 가장 좌측 부호와 같은 값으로 채움
System.out.println("ij:" + ij + " " + Integer.toBinaryString(ij));
ij = ii >>> 2; // shift 연산자 오른쪽으로 2 bit 밀어버려. 남는 것은 가장 좌측 0으로 채움
System.out.println("ij:" + ij + " " + Integer.toBinaryString(ij));
// 자바는 시스템 제어 불가하므로 게임 만들기는 C 가 적합
// 자바 주요 라이브러리는 C로 이루어짐 (C가 assembly에 가장 가까운 기계어)
// 오히려 C 언어가 블루오션 (?) 자바 는 레드, python은 신흥
System.out.println();
//사
int result = (ii <=5)?100:100 + 50; //?: 참이면 좌측, 거짓이면 우측 값 출력
System.out.println("result : " + result);
//method = function = macro = ....
System.out.println();
int x, y, z;
x = y = z = 5;
System.out.println(x + " " + y + " " + z);
System.out.println("---");
aa();
System.out.println("-----");
bb(12);
System.out.println(bb(12));
int mbc = bb(11); // 단, return 데이터 타입 일치 해야함 (여기서는 int)
System.out.println("mbc : " + mbc);
System.out.println("프로그램 종료");
}
public static void aa() {
System.out.println("aa 메소드(단위 프로그램:unit) 수행");
}
public static int bb(int arg) {
System.out.println("bb 메소드(단위 프로그램:unit) 수행");
int imsi = arg + 100;
return imsi;
}
}
//public static void main(String[] args) { -> 이렇게 써야 응용프로그램 실행
//단위 프로그램을 만들어 유지 보수 비용을 적게 만듬 (효율적 프로글매)
//(): 들어올 때 조건 & return: void, int 나갈때 조건 (반환값은 기본 하나지만 있어도 없어도 상관 무)
// 변수에 값 지정하는 방법
// 1. 직접 값 지정 (치환 assign)
// 2. 인수 전달 (argument 또는 parameter) -> 보통 메소드 안에 있음
// && 와 & 차이 그리고 || 와 | 차이 꼭 알자!
'Programming Language > Java 마스터하기(feat. 이것이 자바다)' 카테고리의 다른 글
[5. 참조 타입] (0) | 2020.07.19 |
---|---|
[4. 조건문과 반복문] 반복문 problem 1~3 (0) | 2020.07.19 |
[4. 조건문과 반복문] 조건문 problem 1~5 + α (0) | 2020.07.19 |
[4. 조건문과 반복문] (0) | 2020.07.19 |
[2. 변수와 타입] (0) | 2020.07.19 |
Comments