연산자 (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 |