★ 연산자 자료의 가공을 위해 정해진 방식에 따라 계산하고 결과를 얻기 위한 행위를 의미하는 기호들의 총칭
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의 보수 설명 필요
'자바 학습일지' 카테고리의 다른 글
[Java] Scanner와 BufferedReader의 차이와 특성 (0) | 2021.05.02 |
---|---|
연산자와 표준입출력2 (0) | 2021.04.28 |
2일차, Java 프로그램 작성과 실행 (0) | 2021.01.27 |
Java CDM창 사용하기 원하는 위치로 변경해보기 (0) | 2021.01.27 |
1일차 -2, 환경변수 Path를 설정해보자 (0) | 2021.01.25 |