3.1 부호/증감 연산자
부호 연산자는 변수의 부호를 유지하거나 변경한다.
연산식 | 설명 | ||
+ | 피연산자 | 피연산자의 부호 유지 | |
- | 피연산자 | 피연산자의 부호 변경 |
※ 주의할 점은 부호 변경 후의 타입이다.
byte b = 100;
byte result = -b; //컴파일 에러
정수타입(byte, shor, int) 연산의 결과는 int 타입이다. 부호를 변경하는 것도 연산이므로 다음과 같이 int 타입 변수에 대입해야 한다.
byte b = 100;
int result = -b;
증감 연산자(++, --)는 변수의 값을 1 증가시키거나 1 감소시키는 연산자이다.
연산식 | ||||
++ | 피연산자 | 피연산자의 값을 1 증가시킴 | ||
-- | 피연산자 | 피연산자의 값을 1 감소시킴 | ||
피연산자 | ++ | 다른 연산을 수행한 후에 피연산자의 값을 1증가시킴 | ||
피연산자 | -- | 다른 연산을 수행한 후에 피연산자의 값을1 감소시킴 |
int x = 1;
int y = 1;
int result1 = ++x + 10; -> int result1 = 2 + 10;
int result2 = y++ + 10; -> int result2 = 1 + 10; 이후 y를 1증가
//result1=12, result2=11 그리고 x와 y의 값은 2가 된다.
public class Main {
public static void main(String[] args) {
int x = 10;
int y = 10;
int z;
x++; //11
++x; //12
System.out.println("x="+x);
y--; //9 변수 단독
--y; //8
System.out.println("y="+y);
z=x++;
System.out.println("z="+z); //12
System.out.println("x="+x); //13
z = ++x;
System.out.println("z=" + z); // 14
System.out.println("x=" + x); // 14
z= ++x +y++;
System.out.println("z=" + z); //15+8=23
System.out.println("x=" + x); //15
System.out.println("y=" + y); //9
}
}
3.2 산술 연산자
연산자 | 설명 | ||
+ | 덧셈 연산 | ||
- | 뺄셈 연산 | ||
* | 곱셈 연산 | ||
/ | 나눗셈 연산 | ||
% | 나눗셈의 나머지를 산출하는 연산자 |
산술 연산자의 특징은 다음과 같다.
- 피연산자가 정수 타입(byte, short, char, int)이면 연산의 결과는 int 타입이다.
- 피연산자가 정수 타입이고 그 중 하나가 long 타입이면 연산의 결과는 long 타입이다.
- 피연산자 중 하나가 실수 타입이면 연산의 결과는 실수 타입이다.
public class Main {
public static void main(String[] args) {
byte v1 = 10;
byte v2 = 4;
long v4 = 10L;
int result1 = v1 +v2;
System.out.println(result1); //int 14
long result2 = v1+v2-v4;
System.out.println(result2); // long 4
double result3 = (double) v1 / v2;
// (double) 강제 형변환 안해주면 2.0 출력됨.
System.out.println(result3); // double 2.5
int result4 = v1 % v2;
System.out.println(result4); //int 2
}
}
3.3 오버플로우와 언더플로우
오버플로우란?
타입이 허용하는 최대값을 벗어난 것.
언더플로우란?
타입이 허용하는 최소값을 벗어난 것.
※ 오버플로우와 언더플로우가 발생되면 실행 에러가 발생하지 않고 해당 정수 타입의 최소값 또는 최대값으로 돌아간다.
byte value = 127;
value++;
System.out.println(value); //-128
예) byte 타입일 경우 최대값 127에서 1을 더하면 오버플로우가 발생하여 결과는 최소값인 -128이 된다. 그리고 다시 1을 더하면 -127이 된다.
short, int, long 타입은 값의 범위만 다를 뿐 오버플로우 및 언더플로우가 발생했을 때 마찬가지로 최소값 또는 최대값으로 되돌아간다.
'언어 > JAVA' 카테고리의 다른 글
[제어문] 조건문(if문, switch문) (0) | 2023.01.16 |
---|---|
[연산자] 비트 논리/이동 연산자, 대입/삼항 연산자, 연산의 우선순위 (0) | 2023.01.14 |
[연산자] 정확한 계산, NaN과 Infinity, 비교 연산자, 논리 연산자 (2) | 2023.01.14 |
[변수] (0) | 2023.01.13 |
JAVA - 객체 & 인스턴스 (0) | 2022.10.02 |