티스토리 뷰

📌 비교 연산자

피연산자 두 개를 비교하는 데 사용되는 연산자이다. 제어문의 조건식에 사용되며 연산 결과는 오직 true와 false 중 하나이다. 

 

1. 대소 비교 연산자

비교 연산자 설명
> 좌항의 값이 크면 true, 아니면 false 반환
< 우항의 값이 크면 true, 아니면 false 반환
>= 좌항의 값이 크거나 같으면 true, 아니면 false 반환
<= 우항의 값이 크거나 같으면 true, 아니면 false 반환

✔ 논리형이나 참조형을 제외한 자료형에 사용할 수 있다.

 

2. 등가 비교 연산자

비교 연산자 설명
== 두 값이 같으면 true, 아니면 false를 반환
!= 두 값이 다르면 true, 아니면 false를 반환

✔  논리형이나 참조형을 제외한 자료형에 사용할 수 있다.
✔  단, 문자열은 등가 비교 연산자를 사용해서 비교할 수 없다.

public class Main {
  public static void main(String args[]) {	
    String str1 = "hello";
    String str2 = "hello";
    System.out.println("> str1==str2 비교 결과");
    System.out.println("str1과 str1은 같다 : "+(str1==str2));

    String str3 = "hello";
    String str4 = new String("hello");
    System.out.println("\n> str3==str4 비교 결과");
    System.out.println("str3과 str4는 같다 : "+(str3==str4));

    String str5 = "hello";
    String str6 = new String("hello");
    System.out.println("\n> str5.equals(str6) 비교 결과");
    System.out.println("str5과 str6은 같다 : "+(str5.equals(str6)));
  }
}

✔  문자열이 완전히 같은지 비교할 뿐이므로, 문자열의 내용이 같은 지 비교하기 위해서는 equals()를 사용하자.

✔  그리고 내용이 같더라도 서로 다른 객체라면 false를 반환하니 주의하자.

 

📌 논리 연산자

논리 연산자는 둘 이상의 조건을 '그리고(AND)', '또는(OR)'으로 연결하여 하나의 식으로 표현할 수 있게 해 준다.

 

1. 논리 연산자

✔  || (OR결합) : 피연산자 중 어느 한쪽만 true 이면 true를 결과를 얻는다.

✔  && (AND결합) : 피연산자 양 쪽 모두 true이어야 true를 결과로 얻는다.

✔  ! (논리 부정) : 피연산자가 true면 false를, false면 true를 반환한다.

 

2. 비트 연산자

비트 연산자    
&   비트 AND   피연산자 의 값이 모두 1이면 1을 반환
|   비트 OR   피연산자 중 한 쪽의 값이 1이면 1을 반환
^   비트 XOR   피연산자 중 값이 서로 다를 때 1을 반환
~   비트 NOT    피연산자를 0은 1로, 1은 0으로 변경하여 반환
<<   비트를 왼쪽으로 한 칸 이동   좌항 * 2^우항 의 결과를 반환 (2진수 기준)
>>   비트를 오른쪽으로 한 칸 이동   좌항 / 2^우항 의 결과를 반환 (2진수 기준)

✔  비트 연산자는 피연산자를 2진수로 표현한 값을 기준으로 연산한다.

✔  피연산자로 실수는 허용하지 않으며, 정수나 문자만 사용할 수 있다.

 

2-1. 비트 연산자 AND, OR, XOR

public static void main(String args[]) {
  int num1 = 1;	//0000 0001
  int num2 = 3;	//0000 0011

  // 		0000 0001
  // 		0000 0011 
  //AND연산	0000 0001 = 1
  System.out.println("num1 & num2="+(num1 & num2));

  // 		0000 0001
  // 		0000 0011
  //OR 연산 0000 0011 = 3
  System.out.println("num1 | num2="+(num1 | num2));

  // 		0000 0001
  // 		0000 0011
  //XOR연산 0000 0010 = 2
  System.out.println("num1 ^ num2="+(num1 ^ num2));
}

 

2-2. 비트 연산자 NOT

✔  비트 연산자 NOT은 단항 연산자.

public static void main(String args[]) {
  int num1 = 1;	//0000 0001
  int num2 = 3;	//0000 0011

  // 		0000 0001
  //XOR연산 	1111 1110 = -2

  //		맨 앞의 기호 비트가 1이므로 XOR 연산 결과는 음수. (1이라면 음수, 0이면 양수를 의미)
  //		해당 값의 음수를 찾기위해서는 먼저 1의 보수를 구하고
  //		추가로 마지막 자리에 +1 해주어 2의 보수를 만들어 값을 유추할 수 있다.

  //		1111 1110 의 1의 보수는(1의 보수는 두 값을 더했을때 1이 되는 값)
  //		0000 0001 인데, 여기서 1을 더해야 2의 보수가 되므로
  //		0000 0010 이 결국 1111 1110의 양수값.
  //		즉  2가 1111 1110의 2의 보수이므로, 결과는 -2를 반환

  System.out.println("~num1="+(~num1));

}

 

2-3. 비트 연산자  <<  >>

✔  10진수 기준으로 비트 연산자 << 는 2배, 비트 연산자 >> 는 1/2배의 연산 수행

✔  2진수 기준으로 비트 연산자 << 는 2^n배, 비트 연산자 >> 는 1/2^n배의 연산 수행

public static void main(String args[]) {
  int num1 = 3;	//0000 0011
  int num2 = 4;	//0000 0100


  //	0000 0011
  //	<< 왼쪽으로 한 칸씩 이동
  //	0000 0110 
  //	= 6 반환			
  System.out.println(" num1\t\t"+num1);
  System.out.println(" num1 << 1\t"+(num1<<1)+"\n");

  //	0000 0011
  //	<< 왼쪽으로 두 칸씩 이동
  //	0000 1100 
  //	= 12 반환			
  System.out.println(" num1\t\t"+num1);
  System.out.println(" num1 << 2\t"+(num1<<2)+"\n");

  //	0000 0100
  //	>> 오른쪽으로 한 칸씩 이동
  //	0000 0010 
  //	= 2 반환			
  System.out.println(" num2\t\t"+num2);
  System.out.println(" num2 >> 1\t"+(num2>>1)+"\n");
}

 

 

 

 

 

[참고] 자바의 정석

'BackEnd > JAVA' 카테고리의 다른 글

[Ch.04] 조건문과 반복문  (0) 2021.03.05
[Ch.03] 5. 기타 연산자  (0) 2021.02.28
[Ch.03] 3. 산술 연산자  (0) 2021.02.28
[Ch.03] 2. 단항 연산자  (0) 2021.02.28
[Ch.03] 1. 연산자  (0) 2021.02.28
댓글
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
최근에 올라온 글
글 보관함
Total
Today
Yesterday