연산자의 종류
· 대입, 부호, 산술, 복합 대입 연산자, 증감 연산자, 관계 연산자, 논리 연산자, 조건 연산자, 비트 연산자
· 항과 연산자
항(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
}
}
'개발 > 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 |