남궁성님의 자바의 정석 기초편을 보면서 혼자 공부하는 공간입니다. 참고 부탁드립니다.
연산자 : 연산을 수행하는 기호 (+, -, *, /)
피연산자 : 연산자의 연산 수행 대상
*모든 연산자는 연산결과를 반환한다.
연산자의 종류
산술 연산자 | + - * / << >> | 사칙 연산과 나머지 연산(%) |
비교 연산자 | > < >= <= == != | 크고 작음과 같고 다름을 비교 |
논리 연산자 | && || ! | 그리고(AND)와 또는(OR) 으로 조건을 연결 |
대입 연산자 | = | 우변의 값을 좌변에 저장 |
기타 | (type) ? : instance of | 형변환 연산자, 삼항 연산자, instanceof 연산자 |
연산자의 우선 순위와 연산자의 결합 법칙은 아래 3가지만 기억!
- 산술 > 비교 > 논리 > 대입, 대입은 제일 마지막에 수행
- 단항(1) > 이항(2) > 삼항(3), 단항 연산자의 우선순위가 이항 연산자보다 높다
- 단항 연산자와 대입연산자를 제외한 모든 연산의 진행방향은 왼쪽에서 오른쪽!
증감 연산자
증가 연산자 ++ 피연산자의 값을 +1 증가
감소 연산자 -- 피연산자의 값을 -1 감소
전위형 : 값이 참조되기 전에 증가시킴 j = ++i;
휘위형 : 값이 참조된 후에 증가시킴 j = i++;
* 증감연산자가 독립적으로 사용된 경우, 전위형과 후위형의 차이 X
전위형
j = ++i ;
++i ; //증가 후에
j = i ; //참조하여 대입
후위형
j = i++;
j = i ; //참조하여 대입 후에
i++; // 증가
형변환 연산자
형변환
- 변수 또는 상수의 타입을 다른 타입으로 변환하는 것
(타입) 피연산자
double d = 85.4; //double은 8byte
int score = (int)d ; // int는 4byte
> int score = (int)85.4 ;
> int scroe = 85;
자동형변환
float f = 1234; // float는 실수 1234는 정수로 타입 불일치, 하지만 float 타입이 크기 때문에 작은 타입의 값을 큰 타입의 변수에 넣어서 상관 X
float f = (float) 1234; // 자동형변환 > 컴파일러가 자동으로 형변환
int i = 3.14f ; // 에러 int < float 값손실 발생으로 컴파일러가 자동 형변환 X
> int i = (int)3.14f // 수동 형변환
> int i = 3;
형변환 예제 (리터럴 , 변수 차이)
byte b = 100; //OK byte타입 (-128 ~ 127)
byte b = (byte)100; //OK byte타입으로 자동 형변환하여 대입 / 100은 리터럴
int i = 100;
byte b = i; // 에러 int타입을 byte 타입에 대입 / i는 변수
byte b = (byte) i ; // OK byte타입으로 형변환하여 대입
산술 변환
연산 전에 피연산자의 타입을 일치시키는 것
- 두 피연산자의 타입을 같게 일치시킨다. (보다 큰 타입으로 일치)
- 피연산자의 타입이 int 보다 작은 타입이면 int로 변환
반올림 Math.round()
실수를 소수점 첫째자리에서 반올림한 정수를 반환
long result = Math.round(4.52); //result = 5 ;
나머지 연산자 %
오른쪽 피연산자로 나누고 남은 나머지를 반환
비교 연산자
두 피연산자를 비교해서 true(참) 또는 false(거짓)을 반환
비교 연산자 | 연산 결과 |
> | 좌변값이 크면, true 아니면 false |
< | 좌변값이 작으면, true 아니면 false |
>= | 좌변값이 크거나 같으면, true 아니면 false |
<= | 좌변값이 작거나 같으면, true 아니면 false |
== | 두 값이 같으면, true 아니면 false |
!= | 두 값이 다르면, true 아니면 false |
문자열의 비교
문자열 비교에는 == 대신 equals()를 사용!
String str1 = "abc";
String str2= "abc";
System.out.println(str1==str2); //true
System.out.println(str1.equals(str2)); //true
String str1 = new String("abc");
String str2 = new String("abc");
System.out.println(str1==str2) ; //false
Systeou.out.println(str1.equals(str2)); //true
논리 연산자
조건식을 연결할 때 사용하는 연산자
- || (or결합) : 피연산자 중 어느 한쪽이 true이면 true 결과로 얻는다
- && (AND결합) : 피연산자 양쪽 모두 true이어야 true 결과로 얻는다
논리 부정 연산자 ( ! )
true를 false 로, false 를 true로 변경
조건 연산자
조건식의 결과에 따라 연산결과를 달리한다.
조건식 ? 식1 : 식2
조건식이 참이면 식1 , 거짓이면 식2
result = (x>y) ? x : y // 괄호생략가능
대입 연산자
오른쪽 피연산자를 왼쪽 피연산자에 저장 후 저장된 값을 반환
복합 대입 연산자
대입 연산자와 다른 연산자를 하나로 축약
i +=3 ; // i = i+3;
i -= 3; // i = i-3;
i += 10 + j // i = i+(10+j)
'프로그래밍 > JAVA' 카테고리의 다른 글
자바의 정석 기초 (Math.random() 사용하여 임의의 정수(실수) 만들기 / 난수 ) (0) | 2020.06.22 |
---|---|
자바의 정석 기초 ( 조건문 / 반복문 / if문 / 블럭 / if-else문 / switch문 / switch문 제약 조건) (0) | 2020.06.19 |
자바의 정석 기초 ( 타입간 변환방법 / 숫자 변환 / 문자 변환 / 문자열 변환) (0) | 2020.06.17 |
자바의 정석 기초 ( 화면 입력 Scanner) (0) | 2020.06.16 |
자바의 정석 기초 ( 자바 출력 printf / printf 지시자 ) (0) | 2020.06.16 |
댓글