티스토리 뷰

배운 것 기록/java

[eclipse] 연산자

키죽 2022. 4. 26. 23:10

단항 연산자 (증감 연산자) (++, --)

+ 양수 표현, 실제로 사용할 필요 없다
- 음수 표현
++ 증가 연산자, 1씩 증가
-- 감소 연산자, 1씩 감소
int i = 3;
i++;
System.out.println(i);	// 4
++i;
System.out.println(i);	// 5
System.out.println(++i);	// 6 증가하고 출력
System.out.println(i++);	// 6 출력부터 하고 증가(7이지만 6 나온 이유)
System.out.println(i);		// 7 (값은 누적)

 

1. 선행연산자 (전위연산자)

 - 피연산자의 앞쪽(좌측)에 붙여서 값을 1증가 또는 감소 먼저 피연산자의 값을 증감시킨 후 다른 연산에 참여

 ex) ++i, --i

 

2. 후행연산자 (후위연산자)

 - 피연산자의 뒷쪽(우측)에 붙여서 값을 1증가 또는 감소시키는데 피연산자를 먼저 다른 연산에 참여시킨 후 피연산자 값을 1증감

 ex) i++, i--

int x1 = 5;
int y1 = ++x1;	// 선행연산자
	// x1 값을 먼저 1증가 시킨 후, 대입연산자를 통해 xy값을 y1에 대입
System.out.println(y1);	// 6
		
int x2 = 5;
int y2 = x2++;	// 후행연산자
	// x2 값을 먼저 y2에 대입한 후, x2의 값을 1증가 시킴
System.out.println(y2);	// 5
		
System.out.println("x1: " + x1 + ", y1: " + y1);	// x1: 6, y1: 6
System.out.println("x2: " + x2 + ", y2: " + y2);	// x2: 6, y2: 5
int x = 10, y = 5;
		
x++;		// x = 10, y = 5
int z = x + y;	// x = 10, y = 5, z = 15
y--;		// x = 11, y = 4, z = 16
		
System.out.println("x: " + x + ", y: " + y + ", z: " + z);	// x: 11, y: 4, z: 16

 

 

산술 연산자

+ - * / % -
        나머지 이항연산자

 

문자열 + 문자열에서 '+'는 연결 연산자 역할

System.out.println(10 + 3);	// 13
System.out.println(10 - 3);	// 7
System.out.println(10 * 3);	// 30
System.out.println(10 / 3);	// 3 (몫)
System.out.println(10 % 3);	// 1 (나머지)
		
byte b1 = 10, b2 = 20, b3;
System.out.println(b1 + b2);
		
	
//b3 = b1 + b2;	// 오류! byte + byte = int 이므로 byte 타입인 b3에 저장 불가!
b3 = (byte)(b1 + b2);	// 연산 결과에 형변환 연산자를 적용해서 byte 타입으로 변환
System.out.println(b3);
		
		
int result = 1+2;
result = result - 1;
System.out.println(result);	// 2
result = result + 2; 
System.out.println(result);	// 4

 

대입 연산자(=)

- 우변의 데이터를 좌변의 변수에 대입(저장, 할당)

- 연산이 우측에서 좌측으로 진행

x = y = 3;	// y에 3을 대입하고 x에 y를 대입

 

확장 대입 연산자 (복합 대입 연산자)

- 대입 연산자와 산술 연산자를 조합한 연산자

- 좌변과 우변의 데이터끼리 산술연산을 먼저 수행한 후 대입

+=     -=     *=     /=     %=

// a = a + 1;
// a += 1;

int a = 10, b = 0;
b += a;	// 10
b += a;	// 20
b -= a;	// 10
b *= a;	// 100
b /= a; // 10
b %= a;	// 0 	b값을 "누적"

 

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

== : 좌우가 같은지 비교, 값이 같다면 true, 다르면 false

!= : ≠로 좌우가 다른지 비교, 값이 다르면 true, 같다면 false

> 크다, >= 크거나 같다, < 작다, <= 작거나 같다

- 두 피연산자 간의 대소관계 등을 비교해 true 또는 false 값을 반환

int a = 10, b = 5;
System.out.println(a > b);	// true
System.out.println(a < b);	// false
System.out.println(a <= b);	// false
System.out.println(a >= b);	// true
System.out.println(a == b);	// false
System.out.println(a != b);	// true
	
// char 은 비교연산 사용하면 유니코드 정수 값을 비교
System.out.println('A' > 'B');	// false
System.out.println('A' == 65);	// true
System.out.println("A > "B");	// 문자열 비교못함
	
System.out.println(2 == 2.0);	// true
System.out.println(0.1 == 0.1f); // false 근사치 표현으로 다른값으로 취급
System.out.println((float)0.1 == 0.1f); // true

 

 

논리 연산자

- 두 피연산자 간의 논리적인 판별을 수행- 피연산자 모두 boolean 만 사용 가능, 결과값도 boolean으로 리턴

AND 연산자(&, &&) - 논리곱 : 좌우 조건 모두 만족할 때 true

OR 연산자(|, ||) - 논리합 :  좌우 조건 중 하나만 만족하면 true, 모두 false 일 때만 false

NOT 연산자 (!) -  논리부정 : 단항 연산자로 현재 값을 반전 (!true == false, !false == true)

XOR 연산자(^) - 배타적 논리합 : 좌우 결과가 다른 경우 true, 같으면 false

boolean a = false;
boolean b = true;
a && b;	// false
b && b;	// true
!a && b;// true
a || b;	// true
a || a;	// false
!a;	// true
a ^ a;	// false
b ^ a;	// true
		
int i = 10;
i++ > 9 || i++ < 10;	// true
System.out.println(i);	// 11

 

삼항 연산자 (조건연산자)

- 연산에 참여하는 항이 3개인 연산자

- 특정 조건에 따라 다른 값을 실행하는 연산자 (= if ~ else)

- 2가지 경우의 수(T or F)에 대한 결과 수행

 

연산식(조건식) ? true 값1 : false 값2;

- 연산식에는 결과값이 boolean 타입(T or F)인 식만 올 수 있음

int a = 10;
String x = a % 2 == 0 ? "짝" : "홀";
System.out.println(x);	// 짝
	
a = 30;
int b = 20;
// a와 b를 비교해 최댓값 출력
int max = a > b ? a : b;
System.out.println(a);	// 30
// 최솟값 출력
int min = a < b ? a : b;
System.out.println(b);	// 20
// 반올림
double d = 3.4;
int result = d - (int)d <= 0.5 ? (int)d : (int)d + 1;
System.out.println(result);

나정말 이해가.. 느리구나 눈물난다...

다시 정리할 쯤엔 그래도 할만해졌다. 익숙하진 않지만.

'배운 것 기록 > java' 카테고리의 다른 글

[eclipse] 중첩 if , switch문  (0) 2022.04.28
[eclipse] 조건문  (0) 2022.04.27
[eclipse] 형변환  (0) 2022.04.26
422 String, printf(), println()  (0) 2022.04.24
422 변수  (0) 2022.04.24
댓글
최근에 올라온 글
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
글 보관함