Java/자바의 정석

[자바의 정석] 3장. 연산자

remnantcjy 2023. 1. 6. 05:49

- 논리 연산자 중 우선순위 높은 것 : && > ||

1. 산술 > 비교 > 논리 > 대입

2. 단항(형변환 연산자도 포함) > 이항 > 삼항

3. 단항 & 대입 연산자를 제외한 모든 연산의 진행방향은 왼 ---> 오

 

- 증감 연산자의 피연산자로 정수와 실수가 모두 가능

  But, 상수는 값을 변경할 수 없으므로 불가능

- 전위형은 변수의 값을 증가시킨 후에 변수의 값을 읽어오는 반면,

  후위형은 변수의 값을 먼저 읽어온 후에 값을 증가

  j = ++i; (전위형)  --->   ++i;

                                            j = i;

  j = i++; (후위형) ---> j = i;

                                        i++;

 

- 유니코드 문자표

    0     48

    A     65

    a     97

  소문자 ---> 대문자 : -32

  대문자 ---> 소문자 : +32

 

 

- round 메서드 

1. 매개변수로 받은 값 --> 소수점 첫째자리에서 반올림

2. 그 결과를 "정수"로 반환

 

 

- 나머지 연산자(%)는 나누는 수로 음수도 허용

  나머지 연산을 한 결과에 왼쪽 피연산자의 부호를 붙이면 됨

- 비교연산자는 주로 조건문과 반복문의 조건식에 사용되며, 

  연산결과는 오직 true와 false 둘 중의 하나이다.

- 대소비교 연산자 <, >, <=, >=

  기본형(boolean 제외)은 다 사용, 참조형은 사용 x

- 등가비교 연산자 ==, !=

  기본형(저장된 값이 같은지 알 수 o), 참조형(두 개의 참조변수(=객체의 주소저장) 같은 객체를 가리키고 있는지 알 수 o) 사용 o

- 기본형 & 참조형 서로 형변환 x

  등가비교 연산자 (==. !=)로 둘 비교 x

- 비교연산자도 이항 연산자로 연산 수행 전 형변환 o

 

- float 타입의 값을 정밀도가 더 높은 double로 형변환했다고 해서 오차가 적어지는 것 x

  그러면 float 타입의 값과 double 타입의 값을 비교하려면 어떻게 해야할까?

  double 타입의 값을 float 타입으로 형변환 한 다음에 비교해야 o

  그래야만 올바른 결과 얻을 수 있음 또는 어느정도의 오차는 무시하고 구함

 

- 두 문자열을 비교할 때는 비교연산자 "==" 대신 항상 !! equals() 메서드 사용

  equals()는 객체가 달라도 내용이 같으면 true를 반환

  만약, 대소문자 구별하지 않고 비교 원하면 equalsIgnoreCase() 메서드 사용

 

- 논리연산자는 둘 이상의 조건을 '그리고(AND)' 나 '또는(OR)'로 연결하여 하나의 식으로 표현 o

- OR 연산의 경우, 두 피연산자 중 어느 한 쪽만 '참'이어도 전체 연산결과가 '참'이므로

  좌측 피연산자가 ' true(참)'이면, 우측 피연산자의 값은 평가하지 않는다.

- AND 연산의 경우, 두 피연산자 중 어느 한 쪽만 '거짓'이어도 전체 연산결과가 '거짓'이므로

  좌측 피연산자가 ' false(거 짓)'이면, 우측 피연산자의 값은 평가하지 않는다.

 

- 조건 연산자는 조건문인 if문으로 바꿔 쓸 수 있으며, if문 대신 조건 연산자를 사용하면 코드를 보다 간단히 할 수 o

   조건 연산자의 결합규칙은 오른쪽 -> 왼쪽으로 () 사용하면 가독성을 높일 수 o