본문 바로가기

DEVELOPER/Java

자바의 연산자

반응형

연산자의 종류

· 대입, 부호, 산술, 복합 대입 연산자, 증감 연산자, 관계 연산자, 논리 연산자, 조건 연산자, 비트 연산자


· 항과 연산자

    항(operand) : 연산에 사용되는 값

    연산자(operator) : 항을 이용하여 연산하는 기호

대입 연산자(assignment operator) ' = '

    변수에 다른 변수나 값을 대입하는 연산자

 

· 부호 연산자

    단항 연산자

    변수의 부호를 유지하거나 바꿈 (+ , -)

 

· 산술 연산자

    -% 나머지 구하는 연산자, 숫자 n의 나머지 범위는 <0 ~ n-1>

 

· 복합 대입 연산자

 

· 증가, 감소 연산자

    val = ++num; 먼저 num 값이 1 증가한 후 val 변수에 대입
    val = num++; val 변수에 기준 num 값을 먼저 대입한 후 num 값 1 증가
    val = --num; 먼저 num 값이 1 감소한 후 val 변수에 대입
    val = num--; val 변수에 기존 num 값을 먼저 대입한 후 num 값 1 감소

int gameScore = 150;
int lastScore = ++gameScore; 

System.out.println(lastScore); // 151
System.out.println(gameScore); // 151



int lastScore = gameScore++;

System.out.println(lastScore) //150
System.out.println(gameScore) //151

 

· 관계 연산자(비교 연산자)

    연산의 결과가 true, false로 반환

 

· 논리 연산자

연산의 결과가 true, false로 반환


    * 논리 연산에서 모든 항이 실행되지 않는 경우 - 단락 회로 평가(short circuit evaluation)
논리 곱( && )은 두 항의 결과가 모두 true일 때만 결과가 true

앞의 항의 결과가 false이면 뒤 항의 결과를 평가하지 않음

 

논리 합( || )은 두 항의 결과가 모두 false일 때만 결과가 false

앞의 항의 결과가 true이면 뒤 항의 결과를 평가하지 않음

 

· 조건 연산자

    삼항 연산자

   조건식의 결과가 true(참)인 경우와 false(거짓)인 경우에 따라 다른 결과가 수행

import java.util.Scanner;

public class ConditionTest {

	public static void main(String[] args) {

		int max;
		System.out.println("입력 받은 두 수중 큰 수를 출력하세요\n ");
		
		Scanner scanner = new Scanner(System.in);
		System.out.println("입력1:");
		int x = scanner.nextInt();
		System.out.println("입력2:");
		int y = scanner.nextInt();
		
		max = (x > y)? x : y;
		System.out.println(max);
	}
}

 

· 비트 연산자 (java 프로그래밍에선 많이 쓰이는 편은 아님)

    대입 연산자와 다른 연산자가 함께 쓰임

    마스크 : 특정 비트를 가리고 몇개의 비트 값만 사용할 때

    비트켜기 : 특정 비트들만을 1로 설정해서 사용하고 싶을 때

    (ex. &00001111 <하위 4비트 중 1인 비트만 꺼내기>)

    비트끄기 : 특정 비트들만을 0으로 설정해서 사용하고 싶을 때

    (ex. | 11110000<하위 4비트 중 0인 비트만 0으로 만들기>)

    비트 토글 : 모든 비트들을 0은 1, 1은 0으로 바꾸고 싶을 때

 

public class BitOperationTest {

	public static void main(String[] args) {

		int num1 = 5; // 00000101
		int num2 = 10; // 00001010
		
		System.out.println( num1 | num2); // 15 00000101 | 00001010 => 00001111 따라서 15
		System.out.println( num1 & num2); // 0  00000101 & 00001010 => 00000000 따라서 0
		System.out.println( num1 ^ num2); // 15 두개의 비트가 같으면 0 다르면 1 따라서 00001111(15)
		System.out.println( ~num1); //-6 00000101 의 NOT 으로 11111010 이것은 음수
		
		System.out.println( num1 << 2); // 두 비트를 밈 00010100 => 20 ( 5 X 2^n  : n은 비트가 옮겨진 수)
		System.out.println( num1); // 5
		System.out.println( num1 <<= 2); //20 을 대입
		System.out.println( num1); // 20 
	}

}
반응형

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

Switch - Case 문  (0) 2021.04.18
조건문 - if문  (0) 2021.04.18
상수와 리터럴, 변수의 형 변환  (0) 2021.04.18
자료형 (data type)  (0) 2021.04.18
변하는 수 - 변수(Variable)  (0) 2021.04.18