연산자 : 연산을 수행하는 기호입니다.
피연산자 : 연간자의 연산수행 대상을 의미합니다.
x + 3
연산자는 +
피연산자는 x와 3
종류 | 연산자 | 설명 |
---|---|---|
산술연산자 | +, -, *, /, %, >>, << | 사칙연산과 나머지 연산(%) |
비교연산자 | <, >, <=, >=, ==, != | 크고 작음과 같고 다름을 비교 |
논리연산자 | &&, !, &, ^, ~ | '그리고(And)'와 '또는(Or)'으로 조건을 연결 |
대입연산자 | = | 우변의 값을 좌변에 저장 |
기타 | (type), ?:, instanceof | 형변환 연산자, 삼항연산자, instanceof연산자 |
*논리연산자에 '||(or)'가 표를 만드는 기호랑 동일해서 넣지 못 했습니다..
하나의 식에 연산자가 둘 이상 있을 때, 어떤 연산을 먼저 수행할 지를 자동 결정하는 것을 의미합니다.
종류 | 연산자 | 우선순위 |
---|---|---|
단항연산자 | ++ -- + - ~ ! (type) | 1 |
산술연산자 | * / % | 2 |
산술연산자 | + - | 3 |
산술연산자 | << >> | 4 |
비교연산자 | < > <= >= instanceof | 5 |
비교연산자 | == != | 6 |
논리연산자 | & | 7 |
논리연산자 | ^ | 8 |
논리연산자 | 9 | |
논리연산자 | && | 10 |
논리연산자 | or | 11 |
삼항연산자 | ?: | 12 |
대입 연산자 | = += -= *= /= %= | 13 |
대입 연산자 | <<= >>= &= ^= = | 14 |
우선순위가 같은 연산자가 있을 때, 어떤 것을 먼저 실행될까요?
대입과 단항 연산자를 제외하면, 모주 왼쪽 -> 오른쪽으로 진행됩니다.
증감연산자는 코드를 좀 더 단순화 하기위해 등장했습니다.
증가연산자(++) 피연산자의 값을 1 증가시킵니다.
감소연산자(--) 피연산자의 값을 1 감소시킵니다.
전위형은 값이 참조되기 전에 증가시킵니다. //j = ++i;
후위형은 값이 참조된 후에 증가시킵니다. //j = i++;
"증감 연산자가 독립적으로 사용된 경우, 전위형과 후위형의 차이가 없습니다."
ex)
i++;
++i;
예제)
public class Ex3_2 {
public static void main(String [] args) {
int i = 5;
int j = 0;
j = i++; // 후위형
System.out.println("j=i++; 실행 후, i=" + i + ", j=" + j);
i = 5;
j = 0;
j = ++i; // 전위형
System.out.println("j=++i; 실행 후, i=" + i + ", j=" + j);
}
}
음과 양의 부호를 표기하는 연산자입니다.
예제)
public class Ex3_4 {
public static void main(String [] args) {
int i = -10;
i = +i;
System.out.println(i); // -10
int i = -10;
i = -i;
System.out.println(i); //10
}
}
형변환이란, 변수 또는 상수의 타입을 다른 타입으로 변환하는 것을 의미합니다.
(타입)피연산자
예제)
double d = 85.4;
int score = (int)d; // 결과: 85
char c = (char)65; // 결과: 'A'
int i1 = (int)'A' // 결과: 65
int i2 = (int)1.6f // 결과: 1
float f = (float)10 // 결과: 10.0f
자동 형변환
형변환이 생략가능합니다.
float f = 1234; // int타입의 값을 float타입의 변수에 저장
수동 형변환
형변환이 생략불가능합니다.
값손실이 일어나는 경우, 타입자체가 큰 변수를 대입하는 경우는 강제형변환 이용합니다.
int i = (int)3.14f; //값손실이 일어나는 경우
+ - * /
같은 타입끼리만 연산이 가능합니다.
연산 전에 피연산자의 타입을 일치시키는 것을 의미합니다.
예제)
public class Ex3_9 {
public static void main(String [] args) {
int a = 1_000_000;
int b = 2_000_000;
//결과가 피연산자 보다 큰타입일 경우
//산술변환을 하여 피연산자중 최소 한개를 형변환해야한다.
long c = (long)a * b;
System.out.println(c); // 2000000000000
}
}
실수를 소수점 첫 째자리에서 반올림한 정수를 반환합니다.
long result = Math.round(4.52); // 5
예제)
//만약 소수점 n번째 자리에서 반올림하고 싶은 경우
public class Ex3_11 {
public static void main(String [] args) {
double pi = 3.141592;
double shortPi = Math.round(pi * 1000) / 1000.0;
System.out.println(shortPi); //3.142
}
}
오른쪽 피연산자로 나누고 남은 나머지를 반환하고 싶은 경우 사용됩니다.
나머지 연산자는 정수만 허용되고 부호는 무시됩니다.
10 % -8 -> 2
> < >= <= == !=
두 피연산자를 비교해서 true 또는 false를 반환합니다.
비교 연산자 | 연산결과 |
---|---|
> | 좌변 값이 크면, true 아니면 false |
< | 좌변 값이 작으면, true 아니면 false |
>= | 좌변 값이 크거나 같으면, true 아니면 false |
<= | 좌변 값이 작거나 같으면, true 아니면 false |
== | 두 값이 같으면, true 아니면 false |
!= | 두 값이 다르면, true 아니면 false |
문자열 비교하는 경우 ==대신 equals()를 사용해야 합니다.
예제)
String str1 = "abc";
String str2 = "abc";
System.out.println(str1.equals(str2); //true
조건식을 연결할 때 사용하는 연산자입니다.
||(OR결합) - 피연산자 중 어느 한쪽이 true이면 ture를 결과로 얻습니다.
&&(AND결합) - 피연산자 중 양쪽이 모두 true여야 true를 결과로 얻습니다.
예제)
//x는 10보다 크고 20보다 작은경우
10 < x && x < 20
//i의 배수가 2의 배수 또는 3의 배수인 경우
i % 2 == 0 || i % 3 ==0
//i는 2의 배수 또는 3의 배수지만 6의 배수는 아니다.
(i % 2 == 0 || i % 3 ==0) && i % 6 != 0
//문자 ch는 숫자('0' ~ '9')이다.
'0' <= ch || ch <= '9'
//문자 ch는 대문자 또는 소//문자이다.
('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'Z')
true를 false로, false는 true로 바꿉니다.
boolean b = true;
!b //false
//문자 ch가 소문자가 아니다.
!('a' <= ch && ch <= 'z')
간단한 if문을 대체하기 위해 사용합니다.
조건식 ? 식1 : 식2;
조건식이 참이면 식1
조건식이 거짓이면 식2
조건식의 결과에 따라 연산결과를 달리한다.
result = (x > y) ? x : y;
오른쪽 피연산자를 왼쪽 피연산자에 저장 후 저장된 값을 반환합니다.
lvalue(left) = rvalue(right);
lvalue는 반드시 저장공간(변수)여야 한다.
대입 연산자와 다른 연산자를 하나로 축약할 때 사용됩니다.
op= | = |
---|---|
i += 3; | i = i + 3; |
i -= 3; | i = i - 3; |
i *= 3; | i = i * 3; |
i /= 3; | i = i / 3; |
i *= 10 + j; | i = i * (10 + j); |