본문 바로가기
Programming/Java

[JAVA] 연산자

by 공부합시다홍아 2023. 10. 25.
 

[JAVA] 데이터 타입과 형변

[JAVA] - 출력과 선언 규칙 JAVA 11 jdk 설치 방법 JAVA 11 설치방법 https://www.oracle.com/ Oracle | Cloud Applications and Cloud Platform Oracle condemns the terrorist attacks against Israel and its citizens. Oracle will provide all support ne

hong-study.tistory.com


연산자 (Operartor)
  • 연산자는 변수의 값을 변경하는데 사용
  • 연산자에 따라 연산 대상이 될 수 있는 데이터 타입이 정해져 있다.
  • 오버플로(OverFlow) 또는 언더플로(UnderFlow) 등 범위를 벗어나 연산들에 대해 결과불필요한 값이 저장된다.
  • 0으로 나눌 경우는 오류가 발생

단항 연산자 ( Unary Operator )

단항 연산자는 피 연산자가 하나인 연산자를 말합니다.

  • 단항 연산자의 종류
    • 변수의 앞이나 뒤에 붙어서 변수 값을 하나 증가시키거나, 감소시키는 증/감 연산자(++, --)
    • 양수와 음수를 나타내는 부호 연산자 : + ,  -
    • 비트의 값을 바꿔주는 비트 반전 연산자 :  ~ 
    • 논리대수의 값을 반전시켜주는 논리 반전 연산자 : ! 
    • 데이터 타입을 바꿔주는 캐스트연산자 :  (type) 
  • 부호 연산자
int i = -3;
int j = 4;
int k = i + j;

System.out.println(k);
  •  증/감 연산자
package day01;

public class Operation01 {

	public static void main(String[] args) {

		int k = 0;
		
		int h = k++;
		
		int i = ++k;
		
		System.out.println("k : " + k);
		System.out.println("h : " + h);
		System.out.println("i : " + i);

	}

}

k가 0인 값.
h의 값을 받기 전 k가 언제 증감하는지 확인
k는 해당 구문이 끝난 이후 증감
h의 값은 0은 받는다.
받은 이후 k의 값이 1 증감.
i의 값은 먼저 증감 한 이후 i에 저장
i의 값은 2, k의 값 또한 2가 됌..

하여 위의 결과와 같은 값이 출력된다.

 

  • 비트 연산자
package day01;

public class Operation01 {

	public static void main(String[] args) {

		byte b = 10; //0000 1010 
		System.out.println(~b); // 1111 0101 (0000 1011)
	}

}

 

  • 논리반전 연산자
package day01;

public class Operation01 {

	public static void main(String[] args) {

		System.out.println(!true);
		boolean bool = !false;
		System.out.println(bool);
	}

}


2항 연산자

2항 연산자는 피 연산자(Operand)가 두 개인 연산자를 의미합니다.

연산자가 int형(4byte)보다 작은 크기의 데이터 타입인 경우에 boolean형을 제외하고
모두 int형으로 자동 형변환되어 연산을 수행합니다.
  • 2항 연산자의 종류
    • 산술 연산자 ( +, -, *, /, % )       ※나머지 연산은 결과가 항상 정수이다.
    • 비교 연산자 ( <, <=, >, >=, ==, != )
      • 비교 연산자의 결과 값은 크기 값을 비교하여 조건을 만족하면 true 그렇지 않으면 false를 반환합니다.
      • 만약 비교되는 숫자의 데이터 타입이 다를 경우 기본적으로 크기가 큰 데이터 타입에 맞추어                        비교 연산을 실행합니다.
package day01;

public class Operation02 {

	public static void main(String[] args) {
		int i = 2;
		int j = 3;
		
		System.out.println(i == j);
		System.out.println(i != j);
		System.out.println(i >= j);
		System.out.println(i < j);
		System.out.println(i != 21);
		System.out.println(i % j);
		System.out.println(i % 2 == 0);

	}

}
  • 비트 연산자 ( &, |, ^ )
    • 비트 연산자는 두 수를 각각 2진수로 변환하여 두 수의 각 비트 연산을 수행합니다.
    • & (비트곱) : 두 비트가 1일 때 1, 나머지는 0.
    • | (비트합) : 두 비트 중 하나 이상이 1이면 1, 두 비트 모두 0이면 0.
    • ^ (xor 배타적 논리합) : 두 비트가 다르면 1, 같으면 0

  • 비트 이동 연산자 ( <<, >> )
    • 쪽 항의 값을 2진수로 변환하여 오른쪽 항의 값만큼 비트를 왼쪽(<<), 오른쪽(>>)으로 이동시키는                   연산을 수행한다.
ex)
int a = 192;
00000000 00000000 00000000 11000000

a << 3
00000000 00000000 00000110 00000000 //1536

 

  • 논리연산자 ( &, |, &&, || )
    • & : 연산을 수행하여 양쪽 항이 모두 true일 때만 true를 반환합니다.
    • | : 연산을 수행하여 양쪽 항 중 한쪽만 true를 만족해도 true를 반환합니다.
    • && : 만일 왼쪽 항이 false일 경우에는 오른쪽 항을 수행하지 않고 무조건 false를 반환합니다.
    • || : 만일 왼쪽 항이 true일 경우에는 오른쪽 항을 수행하지 않고 무조건 true를 반환합니다.
    • &&, ||을 short circuit operator라고 부릅니다.
package day01;

public class Logical {

	public static void main(String[] args) {
		
		int x = 10;
		int y = 20;
		
		if(x != 10 & ++y == 20) {
			System.out.println("참입니다.");
		}else {
			System.out.println("거짓입니다.");
		}
		System.out.println("x는 : " + x + " y : " + y );
	}

}
package day01;

public class Logical {

	public static void main(String[] args) {
		
		int x = 10;
		int y = 20;
		
		if(x==10 | ++y == 21) {
			System.out.println("참입니다.");
		}else {
			System.out.println("거짓입니다.");
		}
		System.out.println("x : " + x + " y : " + y);
	}

}
package day01;

public class Logical {

	public static void main(String[] args) {
		
		int x = 10;
		int y = 20;
		
		if(x==10 || ++y == 21) {
			System.out.println("참입니다.");
		}else {
			System.out.println("거짓입니다.");
		}
		System.out.println("x : " + x + " y : " + y);
	}

}

  • 대입 연산자(Assignment Operator)
    • 대입 연산자의 기본형은 '=' 이고, 추가로 발전된 형태의 대입 연산자들이 있습니다.
    • +=, -=, *=, /=, %=
package day01;

public class Operation04 {

	public static void main(String[] args) {
		
		int sum = 0;
		
		for(int i=0; i<10; i++) {
			
			sum += i;
		}
		System.out.println(sum);

	}

}

3항 연산자
  • 피연산자가 3개인 연산자를 말합니다.
  • 조건식의 결과값이 참이면 연산식1, 거짓이면 연산식2를 실행하라.
  • 조건식에는 boolean형 조건식이 들어갑니다.
( 조건식 ? 연산식1 : 연산식2 )

★★★★★★★★계산순서★★★★★★★★
- 소괄호 > 단항 > 이항 > 삼항 >대입
package day01;

public class Operation04 {

	public static void main(String[] args) {
			
		int c = (int)(Math.random()*11)-5 ; // (Math.randow() * 11)-5  
		System.out.println(c < 0 ? Math.abs(c): c);
	
	}

}

 

728x90

'Programming > Java' 카테고리의 다른 글

[JAVA] 제어문  (0) 2023.10.26
[JAVA] 배열과 입력  (2) 2023.10.26
[JAVA] 데이터 타입과 형변환  (0) 2023.10.25
[JAVA] - 출력과 선언 규칙  (0) 2023.10.25
JAVA 11 jdk 설치 방법  (0) 2023.10.25