728x90
연산자(Operator)
최고 연산자
. , ( ) Integer.parseInt(), 상속(inherit)에서도 부모를 parent.child 식으로 표시
증감 연산자
++, --
package Java03;
public class Test07 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a = 10;
System.out.println("a : " + ++a);
//+1을 먼저 출력하기 때문에 값 11이 출력됨
int b = 10;
System.out.println("b : " + b++);
//b를 먼저 출력하기에 +1은 추가되지 못하고 10이 출력됨
System.out.println("b : " + b);
// 이미 b에 1이 추가된 결과를 프린트해서 11이 출력됨
}
}
산술 연산자
+, -, *, /, %(moduler:나머지)
ex) int 10 / 3 => 3
int 10 % 3 => 1
package Java03;
public class Test01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int n1, n2;
n1 = 20;
n2 = 7;
int n3 = n1 + n2; //int로 선언해줘야한다. 앞에 n1,n2는 이미 int로 지정해주었기 때문.
// n1, n2 앞에서 선언할때 n3를 할 수 있다.
System.out.println("n3 = " + n3);
n3 = n1 - n2; // int n3 = ~ 하면 오류. 이미 저장된 n3의 값만 변경
System.out.println("n3 = " + n3);
n3 = n1 / n2;
System.out.println("n3 = " + n3);
n3 = n1 % n2;
System.out.println("n3 = " + n3);
}
}
시프트 연산자
>>, << , <=비트에서 맨 첫번째 비트가 1이면 - 부호를 의미한다.
0011(2^1+2^0(3) <- <<2 : 1100
뒤에 채워지는 00을 padding이라고 하고,
결과적으로 맨 첫번째 비트가 1이 되므로 -1100의 의미가 되어서 2^2=4이므로 -4가 되는 결과를 주의한다.
package Java03;
public class Test06 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a = 12; // 1100
int b = 2;
int c = a << b; // c = a >> 2 => 0011
System.out.println("c : " + c );
int d = c << b; // d = c << 2 => 1100
System.out.println("d : " + d );
char ch = 'F';
int num = 1;
char cha_result = (char)(ch >> num); // 0100011 => 35(ASCII CODE 값 : #)
System.out.println("cha_result : " + cha_result);
}
}
비교 연산자
>, <, >=, <=, ==, !=
package Java03;
public class Test03 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int n1 = 10;
int n2 = 20;
boolean result; // True|False만 가지는 result라는 불리언 변수 선언
System.out.println("n1 = " + n1 + ", n2 = " + n2);
System.out.println("----------------");
result = n1 < n2;
System.out.println("n1 < n2 : " + result);
//boolean result = n1 > n2 ; 와 같은 의미
result = n1 == n2;
System.out.println("n1 == n2 : " + result);
result = n1 != n2;
System.out.println("n1 != n2 : " + result);
}
}
비트 연산자
&, |, ^(xor:배타적 or), ~(not)
1100 : 1100 & 1010 => 1000
&1010 : 1100 | 1010 => 1110
1000 : 1100 ^ 1010 => 1100 | 0101 => 1101
package Java03;
public class Test05 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a = 10; //1010
int b = 7; //0111
int c = a & b; // 논리 곱 : 모두 1일 때만 1, 나머지는 0
System.out.println(c);
int a2 = 12;
int b2 = 8;
int c2 = a2 | b2; //논리 합 : 두 값이 모두 0일 때만 0, 나머지는 1
System.out.println(c2);
int a3 = 9;
int b3 = 11;
int c3 = a3 ^ b3; // 배타적 or : 두 값이 서로 같을 때만 0, 서로 다를 때는 1
System.out.println(c3);
}
}
논리 연산자
&&(and), | |(or), !(not)
ex) if(a > 5 && b < 10 )
package Java03;
public class Test04 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int myAge = 30;
int limit = 35;
boolean result1 = ((limit = myAge) >=5 && myAge > 30);
System.out.println(" && 연산 결과 : " + result1);
System.out.print("-------------------\n");
int n1 = 10;
int n2 = 20;
boolean result2 = ((n1 += 10) > 20 || (n2 - 10 == 11));
System.out.println(" || 연산 결과 : " + result2);
System.out.println(" ! 연산 결과 : " + result2);
}
}
조건 연산자(삼항 연산자)
조건 ? 참_값 : 거짓_값
ex) if (a > 0 ? 10 : 0 )
package Java03;
public class Test08 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a = 10;
int b = 15;
boolean result;
result = ++a >= b ? true : false ;
System.out.println("1. result : " + result);
System.out.println(" ---------------");
int n1 = 10;
int n2 = 20;
char result2;
result2 = (n1 += n1) == n2 ? 'O' : 'X';
System.out.println("2. result2 : " + result2);
System.out.println(" ---------------");
}
}
대입 연산자
=(우측 값을 좌측에 대입), *=, /=, %=, +=, -=
ex) a *= 3 => a = a * 3
package Java03;
public class Test02 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a = 3;
a = a + 1;
System.out.println(a);
// a = a + 1;은 a = 3 + 1;이 되며, 이를 왼쪽 a의 값에 대입을 하니 첫번째 출력은 4
a += 1;
System.out.println(a);
// a가 4인 상황에서 a+=1은 1의 값을 a에 대입하라는 의미이니 5가 됩니다.
a -= 1;
System.out.println(a);
// a가 5인 상황에서 a-=1은 1의 값을 a에 빼라는 의미이니 다시 4가 됩니다.
a *= 2;
System.out.println(a);
// a가 4인 상황에서 a*=2는 2의 값을 a에 곱하라는 의미이니 8이 됩니다.
a /= 2;
System.out.println(a);
// a가 8인 상황에서 a/=2는 2의 값으로 a를 나누라는 의미이니 4가 됩니다.
a %= 2;
System.out.println(a);
// a가 4인 상황에서 a%=2는 2의 값으로 나눈 후, 나머지를 a에 대입하라는 의미이니 0이 됩니다.
}
}
'일단 해보는 코딩 > Java' 카테고리의 다른 글
[Java] If문, else if~, (0) | 2022.07.21 |
---|---|
[Java] 스캐너(Scanner) 예제모음 (0) | 2022.07.20 |
[Java] 변수 선언 규칙 (0) | 2022.07.19 |
[Java] 변수의 타입 (0) | 2022.07.19 |
[Java] 기본문법과 형변환 (0) | 2022.07.18 |