본문 바로가기

자바 학습일지

연산자와 표준 입출력1

★ 연산자 자료의 가공을 위해 정해진 방식에 따라 계산하고 결과를 얻기 위한 행위를 의미하는 기호들의 총칭

 

1. 최우선 연산자

    .     접근연산자      :  특정 범위 내에 속해 있는 멤버 지칭할 때 사용 - 인식

                                ex) System.out.println("출력내용"); 

  [   ]   배열참조연산   : 자료형이나 클래스와 함께 사용되어 해당 변수나 객체가 배열로 선언됨을 알리는 역할

                                ex) String[] ar = {"AA", "BB", "CC"};

  (   )   (괄호)연산자    : 특정 연산자들을 묶어서 먼저 처리할 수 있도록 만들어주는 연산자

                                ex) int x = 5 * (3+2);

 

2. 단항 연산자 : 항이 하나

  ! (Not = 논리부정)    : 논리 자료형의 데이터 값을 부정하는 연산자

                                ex) boolean bool = false; 또는 boolean bool2 = !bool;

                                ex) !x x는 반드시 boolean

                                     만약에 x = true !x  -->  전체가 false가 되는 것

                                ※ boolean는 1byte, true or false로 표현한다.

 

 ~ (비트 부정)            : 비트값으로 존재하는 모든 자료들에 대해 부정의 값을 취할 수 있는 연산자

                                연산자 이름에 비트가 들어가는 경우 무조건 2진수로 바꾼다.

                                ex) ~x x가 5라고 할때 0101

                                     1010 ----------- 10진수 -6이 나온다. (1의 보수를 구하는 연산)

                                단, boolean, float, double형은 ~ 연산자를 사용할 수 없다.

                                byte, short, char, int형은 '~'연산 결과 후 int, long형에만 담을 수 있다.

                                ex) byte b = 120;

                                     int i = ~b;

                                long형은 '~' 연산 후 long형에만 담을 수 있다!

                                ex) long l = 120L;

                                     long l = ~l;

 

 + / - 부호연산자      : 영수, 음수 판별해주는 연산자

 ++ / -- 전위형증감   : 특정 변수의 값을 하나 증가시키거나 하나 감소시키는 연산자

                               ex) int a = 4;

                                    int b = ++a;

                                    print --------> 5

                               ++a or a++ 일 경우 둘다 a = a+1; // 1을 더해서 a에 저장하라

                               ++a 앞에 있으면 전위형 증가연산자 우선순위 2등급

                               a++ 뒤에 있으면 후위형 증가연산자 우선순위 10등급 = (대입연산자 9순위)보다 늦다.

                               -----> 자료형에서 casting 연산자 or 행변환이 있다.

 

3. 산술연산자

  +, -, *, /, %           : byte, short, char, int 자료형 사이의 연산에서는 결과가 int다.

                             long, float, double 자료형이 연산되면 큰 자료형으로 결과가 결정된다.

                             '/' 몫, '%' 나머지 값(자바스크립트와 다르다)

 

4. 시프트 연산자

                           : Shift(이동) 무엇을 이동하냐? ; 비트 시프트트연산자 우선 순위 4등급

                             대상 변수의 값을 2진 비트로 바꾼 후 특정 비트 수만큼 이동시켜 원하는 부분의 비트

                             데이터를 얻어 내는 연산자이다.

  <<                     : Left shift

                             ex) int x = 10;

                                     x << 2

 

                                     0000 1010

                                 00|0010 10___     => x 값 만큼 왼쪽으로 이동이 된다.

                                                             벗어난 값은 소멸되고 빈 자리 __에는 0으로 채운다.

                                  ---------------

                                 (00)0010 1000    => 10진수로 변환하면 40이 나온다. 원래 값의 *2의 n승(n 이동수)

 

  >>                      : Right shift

                                 int x = 10;

                                 x >> 2

 

                                       0000 1010

                                        __00 0010|10 => 벗어난 값은 소멸, __빈칸은 양수면 0, 음수면 1로 표기

                                     ------------------

                                       0000 0010

                                    ==> 값은 계산하면 2가 나온다. 원래 값에 다가 *2의 n승 분의 1, 소멸된 10은 OverFlow가

                                           발생할 수 있다. 1은 의미가 있다. 2.5에서 0.5가 날아감

 

  >>>                   : unsinged right shift 부호가 없다.

                             >>와 기본적으로 같지만 원본데이터가 음수일 경우에도 빈 비트를 0으로 채운다.

                                ex) -3 >> 3 = -1

                                     -3 >>> 3 = 536870911

 

※1의 보수, 2의 보수 설명 필요