04. 연산자

DEV_HOYA·2023년 10월 22일

Java

목록 보기
4/12
post-thumbnail

📌 Chapter 04

⭐ 연산자 우선순위

증산시 관비 논삼대

✅ 연산방향

  • 한 문장내에 우선순위가 같은 연산자가 둘 이상 존재할때 연산순위

⭐ 이항 연산자

✅ 복합 대입 연산자

short num = 10;
num = (short)(num + 77L); // 형 변환 안하면 컴파일 오류

int rate = 3;
rate = (int)(rate * 3.5); // 형 변환 안하면 컴파일 오류

// 복합 대입연산자를 사용하면 형변환 안써도됨[좋진 않음]
// 자바에서 자동으로 형변환을 넣어준다
num = 10;
num += 77L; // 형 변환 필요없음
rate = 3;
rate *= 3.5; // 형 변환 필요없음

✅ 관계 연산자

System.out.println(7.0 == 7)
// true 
// 7이 7.0으로 형변환이 일어남

✅ 논리 연산자

int num1 = 0;
int num2 = 0;
boolean result;

result = ((num1+=10) < 0) && ((num2+=10) > 0);
result = ((num1+=10) > 0) || ((num2+=10) > 0);
System.out.println(num1); // 20
System.out.println(num2); // 0

✅ SCE(Short-Circuit Evaluation)

  • 연산의 효율 및 속도를 높이기 위해서 불필요한 연산을 생략하는 행위
  • &&의 왼쪽 피연산자가 false이면, 오른쪽 피연산자는 확인하지 않는다.
  • ||의 왼쪽 피연산자가 true이면, 오른쪽 피연산자는 확인하지 않는다.

⭐ 단항 연산자

✅ 부호 연산자

short num1 = 5;
System.out.println(+num1); // int형으로 되어 출력

short num2 = 7;
short num3 = (short)(+num2); // 형 변환 하지 않으면 오류 발생
// num2가 +연산을 만나 int형으로 바뀐후 short형으로 형변환 해줘야됨

⭐ 비트 연산자

  • 비트 연산자의 피연산자는 정수형뿐이다.(실수형 X)
  • 각각의 비트를 대상으로 연산을 진행한 후 연산결과를 하나로 묶어서 반환

& : AND
| : OR
^ : XOR(다르면 1, 같으면 0)
~ : NOT(비트 반전)

⭐ 시프트 연산자

  • << 2배증가 : 비트열을 왼쪽으로 이동하고 빈공간을 0으로 채움
  • >> 2배감소 : 비트열을 오른쪽으로 이동하고 빈공간을 음수인경우 1, 양수인 경우 0으로 채움
  • >>> : 비트열을 오른쪽으로 이동하고 빈공간을 0으로 채움
byte num;

num = 2; // 00000010
System.out.println((byte)(num << 1)); //00000100
System.out.println((byte)(num << 2)); // 00001000
System.out.println((byte)(num << 3)); // 00010000

num = 8; // 00001000
System.out.println((byte)(num >> 1)); // 00000100
System.out.println((byte)(num >> 2)); // 00000010
System.out.println((byte)(num >> 3)); // 00000001

num = -8; // 11111000
System.out.println((byte)(num >> 1)); // 11111100
System.out.println((byte)(num >> 2)); // 11111110
System.out.println((byte)(num >> 3)); // 11111111

/*
4
8
16
4
2
1
-4
-2
-1
*/

0개의 댓글