연산자의 종류


단항 연산자 - ++ , -- , + , - ,~ ,! 

이항 연산자 - 산술 연산자, 비교 연산자, 논리 연산자 , 

삼항 연산자 - ? :

대입 연산자 - = , -= 등등 

 

 

연산자의 우선순위


단항연산자 > 이항연산자(산술>비교>논리) > 삼항연산자 > 대입연산자

 

 

수학의 공식과 우선순위가 같지만 몇가지 주의해야할 것이 있다.

1. <<, >> , >>> 는 덧셈 연산자보다 우선순위가 낮다.

             ex -> x << 2+1    은 x << (2+1)과 같다.

2. II , I(or)는 &&, &(and) 보다 우선순위가 낮다.

             

 

 

증감 연산자(단항연산자)


증가 연산자 (++) - 피연산자의 값을 1증가시킨다.

감소연산자(--) - 피연산자의 값을 1 감소시킨다.

 

전위형 -> j = ++i;         -> 값이 참조되기 전에 증가시킨다.

후위형 -> j = i++;        -> 값이 참조된 후에 증가시킨다.

 

 

부호연산자(+,-) 와 논리부정연산자(!) (단항연산자)


부호연산자(+,-) -> +는 1을 곱하고 , -는 피연산자에 -1을 곱한다.

논리부정연산자(!) -> true는 false로 , false는 true로 

 

비트전환연산자(~)  (단항연산자)


정수를 2진수를 표현했을 때, 1은 0으로 0은 1로 바꾼다. 정수형에서만 사용

 

10을 -10으로 만드려면 

        1. 10을 2진수로 바꾼다.  0(부호)  0001010

        2.  ~10 을 해준다.   1(부호)  1110101        -> 10진수로는 -11

        3.   +1 을 해준다.    1(부호) 1110110          -> 10진수로는 -10이된다.

 

 

이항연산자의 특징


이항연산자는 연산을 수행하기 전에 피연산자의 타입을 일치시킨다.

    - int보다 크기가 작은 타입은 int로 변환한다.  ( byte , char, short  -> int)

    - 피연산자 중 표현범위가 큰 타입으로 형변환 한다.  

                  - char + int -> int + int -> int

                  - float + int  -> float + float -> float

                  - long + float -> float + float -> float

                  - float + double -> dlouble + double -> double   

byte a = 10;
byte b = 20;
byte c = a+b;  //에러... byte를 더하면 int로 형변환이 되는데 타입이 byte여서..

byte c = (byte)(a+b) ; //하면 a+b에서 int로 변했던것이 다시 byte로 변해서됨

int a = 1000000;
int b = 2000000;
long c = a*b;  // c는 -1454759936이 저장된다. int값의 범위가 넘어서 정수오버플로우가발생

long c = (long)a*b // 해야함


char c1 = 'a' ; a는 97임
char c2 = c1 +1 ; //에러 int형으로 형변환됨.
char c2 = ++c1 ; //형변환이 일어나지않아서됨

 

 

나머지 연산자, 쉬프트연산자 ( <<, >> , >>>) ( 산술연산자) (이항연산자)


 

나머지 연산자 - %

     - 나누기한 나머지를 반환한다.

10 % 8 -> 2        //왼쪽 연산자의 부호를 따름.
10 % -8 -> 2
-10 % 8 -> -2
-10 % -8 -> -2

 

쉬프트 연산자 ( << , >> , >>> )

     - 2n승으로 곱하거나  나눈 결과를 반환한다.

      - 곱셈, 나눗셈보다 빠르다.

x << n 은 x * 2n승과 같다.
x >> n 은 x / 2n승과 같다.
8 << 2는 8*22승과 같다. 32

 

비교연산자 ( < , > , >= , <= , == , !=) ( 비교연산자 ) (이항연산자)


피연산자를 같은 타입으로 변환한 후에 비교한다(이항연산자 특징)

기본형과 참조형에 사용할 수 있지만 참조형에는 ==와 !=만 사용가능

 

'A' < 'B' -> 65 < 66 -> true   // int로 형변환
'0' == 0 -> 48 == 0  -> false // int로 형변환 
0.1d == 0.1f  -> 0.1d == 0.d -> false   //실수는 근사값이기때문에 float를 double바꾸는 과정중에 바뀔수 있다.

 

비트연산자 ( & I ^ ) (논리연산자) (이항연산자)


OR 연산자 ( I) : 피연산자중 어느 한쪽이 1이면 1이다.

AND 연산자 (&) : 피연산자 중 양쪽 모두 1이면 1이다.

XOR 연산자 ( ^) : 피연산자가 서로 다를때 1이다.

 

      3 I 5 = 7인데 그 이유는

                 3은 2진수가 0(부호) 0000011

                 5는 2진수가 0(부호) 00000101

                 즉                 0(부호) 0000111 -> 7

 

 

16진수에 주로 쓴다.

       0x185C >> 4 & 0x000F = 0x0005

 풀이

 

논리연산자 ( && II ) 


&& 가 II 보다 우선순위가 높다.

 

삼항연산자(? :)


조건식의 연산결과가 true이면 식1의 결과

                                   false이면 식2의 결과를 반환

 

            (조건식) ? 식1 : 식2

int score = 50;
char grade = score >=90 ? 'A' : (score >= 80? 'B' : 'C');  false반환

 

 

https://github.com/developer-hyun/JAVA

'IT 관련 > JAVA' 카테고리의 다른 글

자바 배열(array)  (0) 2022.06.11
자바 조건문(if while 등)  (0) 2022.06.06
자바 printf 와 Scanner  (0) 2022.05.19
자바 상수,리터럴 ( constant , literal)  (0) 2022.05.17
자바 실수(float)  (0) 2022.05.16

+ Recent posts