ํ์ตํ ๊ฒ
- ์ฐ์ ์ฐ์ฐ์
- ๋นํธ ์ฐ์ฐ์
- ๊ด๊ณ ์ฐ์ฐ์
- ๋ ผ๋ฆฌ ์ฐ์ฐ์
- instanceof
- assignment(=) operator
- ํ์ดํ(->) ์ฐ์ฐ์
- 3ํญ ์ฐ์ฐ์
- ์ฐ์ฐ์ ์ฐ์ ์์
- (optional) Java 13. switch ์ฐ์ฐ์
์ฐ์ ์ฐ์ฐ์
- + ์ฐ์ฐ์
- - ์ฐ์ฐ์
- * ์ฐ์ฐ์
- / ์ฐ์ฐ์
- % ์ฐ์ฐ์
int a = 10;
int b = 5;
// +
System.out.println(a + b);
// -
System.out.println(a - b);
// *
System.out.println(a * b);
// /
System.out.println(a / b);
// %
System.out.println(a % b);
// string + string
String p = "abc";
String q = "def";
System.out.println(p + q);
15
5
50
2
0
abcdef
๋นํธ ์ฐ์ฐ์
- <<
- ์ ์ x์ ๊ฐ ๋นํธ๋ฅผ y๋งํผ ์ผ์ชฝ์ผ๋ก ์ด๋์ํจ๋ค. (๋น์นธ์ 0์ผ๋ก ์ฑ์์ง)
- >>
- ์ ์ x์ ๊ฐ ๋นํธ๋ฅผ y๋งํผ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋์ํจ๋ค. (๋น์นธ์ ์ต์์ ๋ถํธ๋นํธ๋ก ์ฑ์์ง)
- >>>
- ์ ์ x์ ๊ฐ ๋นํธ๋ฅผ y๋งํผ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋์ํจ๋ค.( >> ๊ณผ ๊ฐ์ง๋ง, ๋ค๋ฅธ์ ์ ๋น์นธ์ด 0์ผ๋ก ์ฑ์์ง)
์ค๊ฐ ๊ฐ ๊ตฌํ๊ธฐ
int start = 2_100_000_000;
int end = 2_100_000_000;
// ์ค๋ฒํ๋ก์ฐ๋ฅผ ๋ฐฉ์งํ mid ๊ณ์ฐ๋ฒ 2๊ฐ์ง
int mid = start + (end - start) / 2;
int mid = (start + end) >>> 1;
๊ด๊ณ ์ฐ์ฐ์
- > : ์ผ์ชฝ ํญ์ด ํฌ๋ฉด true, ์๋๋ฉด false
- < : ์ค๋ฅธ์ชฝ ํญ์ด ํฌ๋ฉด true, ์๋๋ฉด false
- >= : ๊ฐ๊ฑฐ๋ ํฌ๋ฉด true, ์๋๋ฉด false
- <= : ๊ฐ๊ฑฐ๋ ์์ผ๋ฉด true, ์๋๋ฉด false
- == : ๊ฐ์ผ๋ฉด true, ์๋๋ฉด false
- != : ๋ค๋ฅด๋ฉด true, ์๋๋ฉด false
int a = 10;
int b = 5;
// > ์ฐ์ฐ์
System.out.println(a > b); // true
// < ์ฐ์ฐ์
System.out.println(a < b); // false
// >= ์ฐ์ฐ์
System.out.println(a >= b); // true
// <= ์ฐ์ฐ์
System.out.println(a <= b); // false
// == ์ฐ์ฐ์
System.out.println(a == b); // false
// != ์ฐ์ฐ์
System.out.println(a != b); // true
๋ ผ๋ฆฌ ์ฐ์ฐ์
- ๋
ผ๋ฆฌ ์ฐ์ฐ์
- ๋ ผ๋ฆฌ๊ณฑ(&&, &)
- ๋ ผ๋ฆฌํฉ( ||, | )
- ๋ฒ ํ์ ๋ ผ๋ฆฌํฉ( ^ )
- ๋ ผ๋ฆฌ ๋ถ์ ( ! )
boolean a = true;
boolean b = false;
boolean c = true;
// ๋
ผ๋ฆฌ๊ณฑ( &&,& ) : ๋ ๋ค true์ผ๋ => true
System.out.println(a && b); // false
// ๋
ผ๋ฆฌํฉ( ||, | ) : ๋ ์ค ํ๋๋ง true์ฌ๋ => true
System.out.println(a || b); // true
// ๋ฒ ํ์ ๋
ผ๋ฆฌํฉ( ^ ) : ์๋ก ๋ค๋ฅผ ๋๋ง true
System.out.println(a ^ c); // false
// ๋
ผ๋ฆฌ ๋ถ์ ( ! ) : true -> false / false -> true
System.out.println(!a); // false
instanceof
- ํด๋น ๊ฐ์ฒด๊ฐ ํด๋์ค์ ์ธ์คํด์ค์ธ์ง ํ์ธ
Parent parent = new Parent();
Child child = new Child();
System.out.println(parent instanceof Parent); // true
System.out.println(child instanceof Child); // true
System.out.println(child instanceof Parent); // false
assignment(=) operator
- ๋์
์ฐ์ฐ์ (=)
- +=
- -=
- *=
- /=
- %=
- ...
int a = 10;
int result = 0;
// +=
result += a; // result = result + a;
// -=
result -= a; // result = result - a;
// *=
result *= a; // result = result * a;
// /=
result /= a; // result = result / a;
// %=
result %= a; // result = result % a;
ํ์ดํ(->) ์ฐ์ฐ์
์๋ฐ 8 ๋ถํฐ๋ ๋๋ค ํํ์์ ์ฌ์ฉํ์ฌ, ๊ธฐ์กด์ ๋ถํ์ํ ์ฝ๋๋ฅผ ์ค์ฌ์ฃผ๊ณ , ์์ฑ๋ ์ฝ๋์ ๊ฐ๋ ์ฑ์ ๋์ฌ์ค๋ค.
๋๋ค ํํ์์ผ๋ก ํํํ๋ฉด, ํด๋์ค๋ฅผ ์์ฑํ๊ณ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ง ์์๋ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
๋๋ค ํํ์ ์์ฑ
(๋งค๊ฐ๋ณ์) -> {Body}
์ผ๋ฐ์ ์ธ ํํ
int min (int x, int y) {
return x < y ? x : y;
}
๋๋ค ํํ์
(x, y) -> x < y ? x : y;
์ต๋ช ํด๋์ค
new Object() {
int min(int x, int y) {
return x < y ? x : y;
}
}
์ต๋ช ํด๋์ค๋ ์ ์ธ๊ณผ ๋์์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ฏ๋ก, ๋๋ค ํํ์์ ์ต๋ช ํด๋์ค์ ๊ฐ๋ค๊ณ ํ ์ ์๋ค.
3ํญ ์ฐ์ฐ์
if๋ฌธ์ ์ฌ์ฉํ๋ฉด ์ฝ๋๊ฐ ์ง์ ๋ถํด์ง๊ณ ๊ธธ์ด์ง๊ธฐ ๋ง๋ จ์ด๋ค.
ํ์ง๋ง, 3ํญ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๋๊ฐ ๊น๋ํด์ง๋ค.
3ํญ ์ฐ์ฐ์ ๋ฌธ๋ฒ
(์กฐ๊ฑด๋ฌธ) ? [์ฐธ์ผ ๋] : [๊ฑฐ์ง์ผ ๋] ;
์ฝ๋
IF๋ฌธ
if ( N > 0 ) {
return 1;
} else {
return 0;
}
3ํญ ์ฐ์ฐ์
return N > 0 ? 1 : 0;
์์ฒญ๋๊ฒ ์ฝ๋๊ฐ ๊น๋ํด์ง๊ฑธ ๋ณผ ์ ์๋ค.
์ฐ์ฐ์ ์ฐ์ ์์
์ฐ์ฐ์ ์ฐ์ ์์๋ ์ธ์ฐ๊ธฐ ๋ณด๋ค, ์ง์ ์ฝ๋ฉํ๋ฉด์ ๋ชธ์ ๋๋ผ๊ฒ ๋์ด์๋ค. ๋ฌผ๋ก ๋๋ ํ๋ค๋ณด๋ ์ธ์์ง๊ฒ ๋๋...
์ฐ์ ์์ | ์ฐ์ฐ์ |
1 | . , [ ] , ( ) |
2 | ++ , -- , ! , ~ |
3 | * , / , % |
4 | + , - |
5 | << , >> , >>> |
6 | < , > , <= , >= , instance of |
7 | == , != |
8 | & |
9 | ^ |
10 | | |
11 | && |
12 | || |
13 | ? , : |
14 | = , *= , /= , += , -= , %= ,.. |
(optional) Java 13. switch ์ฐ์ฐ์
์๋ฐ 13 ์ดํ ๋ถํฐ๋ break ๋ฌธ ์์ด, yield๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ ๋ฆฌํดํ๋ฉด ๋๋ค.
Java 12 ์ด์
private static int getValueBefore12(String mode) {
int result = 0;
switch (mode) {
case "a":
case "b":
result = 1;
break;
case "c":
result = 2;
break;
case "d":
case "e":
case "f":
result = 3;
break;
default:
result = -1;
break;
};
return result;
}
Java 12
์๋ฐ 12์์ ์ง์ํ๋ case๋ฅผ ์ฌ๋ฌ๊ฐ๋ฅผ ์ค์ ํ ์๊ฐ ์๋ค.
// Java 12, multiple comma-separated labels
private static int getValueMultipleLabels(String mode) {
int result;
switch (mode) {
case "a", "b":
result = 1;
break;
case "c":
result = 2;
break;
case "d", "e", "f":
result = 3;
break;
default:
result = -1;
}
;
return result;
}
value breaks(๊ฐ์ ๋ฐ๋ก ๋ด์์ฃผ๋ฉด์ break ์ํค๋ ๋ฌธ๋ฒ)๋ ์ด์ ๋์ด์ 13์์๋ ์ฌ์ฉํ ์ ์๋ค.
// value breaks are superseded by Java 13 'yield' statements.
private static int getValueViaBreak(String mode) {
int result = switch (mode) {
case "a":
case "b":
break 1;
case "c":
break 2;
case "d":
case "e":
case "f":
break 3;
default:
break -1;
};
return result;
}
์๋ฐ 12์์ ์ฌ์ฉ ํ๋, -> (ํ์ดํ ์ฐ์ฐ์)๋ ์ฌ์ ํ ์๋ฐ 13์์๋ ์ฌ์ฉ ํ ์ ์๋ค.
// Java 12, switch expression returns a value via label rules (arrow)
private static int getValueViaArrow(String mode) {
int result = switch (mode) {
case "a", "b" -> 1;
case "c" -> 2;
case "d", "e", "f" -> {
// do something here...
System.out.println("Supports multi line block!");
yield 3;
}
default -> -1;
};
return result;
}
Java 13
์๋ฐ 13์์๋ break ๋์ ์ yield ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ ๋ฆฌํดํ ์๊ฐ ์๋ค.
private static int getValueAfter13(String mode) {
int result = switch (mode) {
case "a", "b" :
yield 1;
case "c" :
yield 2;
case "d", "e", "f" :
yield 3;
default :
yield -1;
};
return result;
}
References :
programmers.co.kr/learn/courses/5/lessons/144
mkyong.com/java/java-13-switch-expressions/
blog.naver.com/hsm622/222150928707
www.notion.so/efccbef42a38464bbacb63c71e3dd3d4?v=eb0b178f73e441f790fae45d4762ed3f