๋๊ฐ์ ํผ์ฐ์ฐ์๋ฅผ ๊ฐ๋ ์ดํญ ์ฐ์ฐ์๋ก์จ, ๊ธฐ๋ณธ์ ์ธ ์ฌ์น์ฐ์ฐ์ ๋ค๋ฃจ๋ ์ฐ์ฐ์
์ผ์ชฝ์ ํผ์ฐ์ฐ์์ ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์๋ฅผ ๋ํ๋ ์ฐ์ฐ์๋ก ์ซ์+์ซ์, ๋ฌธ์์ด+๋ฌธ์์ด์ด ๊ฐ๋ฅํ๊ณ ๋ฌธ์์ด+์ซ์๋ฅผ ํ ์ ์ซ์๋ฅผ ์๋์ผ๋ก ๋ฌธ์์ด๋ก ๋ณํํ์ฌ ๋ง์
์ด ๊ฐ๋ฅํ๋ค.
๋ฌธ์+์ซ์๋ฅผ ํ ๊ฒฝ์ฐ์๋ ์์คํค ์ฝ๋๋ฅผ ์ด์ฉํ์ฌ ๋ฌธ์๋ก ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ ๋๋ค.
๋ฌธ์์ ๋ง๋ ์์คํค ์ฝ๋๊ฐ๊ณผ ์ซ์๋ฅผ ๋ํ ๊ฒฐ๊ณผ๊ฐ์ ํด๋นํ๋ ์์คํค์ฝ๋๋ฅผ returnํ๊ธฐ ๋๋ฌธ์ด๋ค.
int left = 2020;
int right = 1;
int year = left + right;
char ch = A;
System.out.println(year); //2021
System.out.println("20"+"21"); //2021
System.out.println("Hello "+ year); //Hello 2021
System.out.println(ch + 2); //C
System.out.println( 9 + '0'); //9
์ผ์ชฝ์ ํผ์ฐ์ฐ์์์ ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์๋ฅผ ๋นผ๋ ์ฐ์ฐ์๋ก ์ซ์-์ซ์์ ๊ฐ์ด ์ฌ์ฉ๊ฐ๋ฅํ๊ณ ๋ฌธ์์ด์ ๋ถ๊ฐ๋ฅํ๋ค.
์ผ์ชฝ์ ํผ์ฐ์ฐ์์ ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์๋ฅผ ๊ณฑํ๋ ์ฐ์ฐ์๋ก ์ซ์*์ซ์์ ๊ฐ์ด ์ฌ์ฉ๊ฐ๋ฅํ๊ณ ๋ฌธ์์ด์ ๋ถ๊ฐ๋ฅํ๋ค.
์ผ์ชฝ์ ํผ์ฐ์ฐ์๋ฅผ ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์๋ก ๋๋๋ ์ฐ์ฐ์๋ก ์ซ์/์ซ์์ ๊ฐ์ด ์ฌ์ฉ๊ฐ๋ฅํ๊ณ ๋ฌธ์์ด์ ๋ถ๊ฐ๋ฅํ๋ค.
์ ์/์ ์๋ฅผ ํ ์ ๋๋จธ์ง๋ ๋ฒ๋ ค์ง ๋ชซ๋ง ๊ตฌํด์ง๋ฉฐ ๋ ํผ์ฐ์ฐ์ ์ค ํ๋๋ผ๋ ์ค์(๋ถ๋ ์์๋ฐฉ์)๊ฐ ์กด์ฌํ๋ค๋ฉด ๊ฒฐ๊ณผ๋ ์ค์๊ฐ ๋์จ๋ค.
์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์๊ฐ 0์ด ๋ ์ ์๋ค. (0์ผ๋ก ๋๋ ์ ์๊ณ ๋๋๋ค๋ฉด ์ปดํ์ผ ์๋ฌ๊ฐ ๋๋ค.)
0์ด ์๋ ์ ์๋ฅผ 0.0์ผ๋ก ๋๋๋ค๋ฉด Infinity, 0์ 0.0์ผ๋ก ๋๋๋ค๋ฉด NaN์ด ๋ฐํ๋๋ค.
int left = 5;
int right = 2;
System.out.println(left/right); // 2
System.out.println(left/2.0); // 2.5
System.out.println(left/0.0); //Infinity
System.out.println(0/0.0); //NaN์ผ์ชฝ์ ํผ์ฐ์ฐ์๋ฅผ ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์๋ก ๋๋ ๋๋จธ์ง๋ฅผ ๊ตฌํ๋ ์ฐ์ฐ์๋ก ์ซ์%์ซ์์ ๊ฐ์ด ์ฌ์ฉ๊ฐ๋ฅํ๊ณ ๋ฌธ์์ด์ ๋ถ๊ฐ๋ฅํ๋ค.
์ผ์ชฝ ํผ์ฐ์ฐ์๋ฅผ 0.0์ด๋ 0์ผ๋ก ๋๋๋ค๋ฉด NaN์ด ๋ฐํ๋๋ค. (์ผ์ชฝ ํผ์ฐ์ฐ์๊ฐ ์ ์์ธ๋ฐ 0์ผ๋ก ๋๋๋ค๋ฉด ์ปดํ์ผ ์๋ฌ)
System.out.println(5%0); //์ปดํ์ผ ์๋ฌ
System.out.println(5.0%0); //NaN
System.out.println(0.0%0); //NaN
System.out.println(0%0); //์ปดํ์ผ ์๋ฌ
System.out.println(5%0.0); //NaN
System.out.println(5.0%0.0); //NaN
System.out.println(0.0%0.0); //NaN
System.out.println(0%0.0); //NaNํผ ์ฐ์ฐ์๋ฅผ ํ๊ฐ๋ง ๊ฐ๋ ์ฐ์ฐ์
์ซ์๋ฅผ ์
๋ ฅ์ +๋ ํ์์ ์ผ๋ก ์ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ์๋ต์ด ๊ฐ๋ฅํ๋ค.
-๋ ๋ถํธ๋ฅผ ๋ฐ๊พธ๋ ์ฐ์ฐ์๋ก 2์ ๋ณด์๋ฅผ ์ทจํ๋ ์ฐ์ฐ์์ด๋ค.
System.out.println(2);//2
System.out.println(+2);//2
System.out.println(-2);// -2
์ฆ๊ฐ ์ฐ์ฐ์ ๋ ๋ฆฝ์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ ์์น์ ์๊ด์์ด ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ๋๋ค.
int i=1;
int j=1;
i++; // i = 2
++j; // j = 2
i--; // i = 1
--j; // j = 1๋ค๋ฅธ ๋ช ๋ น๋ฌธ๊ณผ ๊ฐ์ด ์ฐ์ธ๋ค๋ฉด ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง๋ค.
-
์ ์ ์ฆ๊ฐ ์ฐ์ฐ
ํผ์ฐ์ฐ์๋ฅผ ์ฐธ์กฐํ๊ธฐ์ ์ ๊ฐ์ ์ฆ๊ฐ ์ํค๊ณ ๋ ํ์ ํผ์ฐ์ฐ์๋ฅผ ์ฐธ์กฐํ๋ค.
int i=1; System.out.println(++i); //2์ถ๋ ฅ System.out.println(--i); //1์ถ๋ ฅ
-
ํ์ ์ฆ๊ฐ ์ฐ์ฐ
ํผ์ฐ์ฐ์๋ฅผ ๋จผ์ ์ฐธ์กฐํ๊ณ ๋ ํ ์ฆ๊ฐ ์ํจ๋ค.
int i = 1; System.out.println(i++); //1 ์ถ๋ ฅ ํ i=2 System.out.println(i--); //2 ์ถ๋ ฅ ํ i=1
ํผ์ฐ์ฐ์๋ฅผ ์ด์ง์๋ก ์๊ฐํ๊ณ ๊ฐ ์๋ฆฌ์(bit)๋จ์๋ก ๊ณ์ฐํ๋ ์ฐ์ฐ์
1์ ๋ณด์๋ฅผ ๊ตฌํ๋ ์ฐ์ฐ์๋ก ๊ฐ bit๋ฅผ ๋ฐ์ ์ํค๋ ์ฐ์ฐ์
๋ ํผ์ฐ์ฐ์์ ๊ฐ bit๋ค์ AND ์ฐ์ฐ
-
1 & 1 = 1
-
1 & 0 = 0
-
0 & 1 = 0
-
0 & 0 = 0
byte num1 = 10; //bit๋ก 00001010
byte num2 = 20; //bit๋ก 00010100
byte num3 = num1 & num2;
System.out.println(num3); //๋นํธ ๊ณฑํ๋ฉด 00000000๋ก 0์ด ๋์จ๋ค.๋ ํผ์ฐ์ฐ์์ ๊ฐ bit๋ฅผ OR ์ฐ์ฐ
-
1 | 1 = 1
-
1 | 0 = 1
-
0 | 1 = 1
-
0 | 0 = 0
byte num1 = 10; //bit๋ก 00001010
byte num2 = 20; //bit๋ก 00010100
byte num3 = num1 | num2;
System.out.println(num3); //๋นํธ ๊ณฑํ๋ฉด 00011110๋ก 30์ด ๋์จ๋ค.๋ ํผ์ฐ์ฐ์์ ๊ฐ bit๋ฅผ XOR ์ฐ์ฐ
-
1 ^ 1 = 0
-
1 ^ 0 = 1
-
0 ^ 1 = 1
-
0 ^ 0 = 0
byte num1 = 10; //bit๋ก 00001010
byte num2 = 20; //bit๋ก 00010100
byte num3 = num1 ^ num2;
System.out.println(num3); //๋นํธ XORํ๋ฉด 00011110๋ก 30์ด ๋์จ๋ค.์ผ์ชฝ์ ํผ์ฐ์ฐ์์ bit๋ฅผ ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์์ ์๋งํผ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋์ํค๊ณ ๋ฐ๋ฆฐ ์ค๋ฅธ์ชฝ ๋์ ๋นํธ๋ ์ญ์ ๋๋ฉฐ ์๋ก ์ค๋ ๊ฐ์ฅ ์ผ์ชฝ์ bit๋ ์๋ ๋ถํธ์ ๋ฐ๋ผ 0(์์) or 1(์์)๋ก ์ฑ์์ง๋ค.
byte num1 = 10; //00001010
byte num2 = -10; //11110110
System.out.println(num1 >> 1); //00000101
System.out.println(num2 >> 1); //11111011์ผ์ชฝ์ ํผ์ฐ์ฐ์์ bit๋ฅผ ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์์ ์๋งํผ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋์ํค๊ณ ๋ฐ๋ฆฐ ์ค๋ฅธ์ชฝ ๋์ ๋นํธ๋ ์ญ์ ๋๋ฉฐ ์๋ก ์ค๋ ๊ฐ์ฅ ์ผ์ชฝ์ bit๋ ๋ถํธ์ ์๊ด์์ด 0์ผ๋ก ์ฑ์์ง๋ค.
byte num1 = 10; //00001010
byte num2 = -10; //11110110
System.out.println(num1 >> 1); //00000101
System.out.println(num2 >> 1); //01111011์ผ์ชฝ์ ํผ์ฐ์ฐ์์ bit๋ฅผ ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์์ ์๋งํผ ์ผ์ชฝ์ผ๋ก ์ด๋์ํค๊ณ ๋ฐ๋ฆฐ ์ผ์ชฝ ๋์ ๋นํธ๋ ์ญ์ ๋๋ฉฐ ์๋ก ์ค๋ ๊ฐ์ฅ ์ค๋ฅธ์ชฝ์ bit๋ 0์ผ๋ก ์ฑ์์ง๋ค.
byte num1 = 10; //00001010
byte num2 = -10; //11110110
System.out.println(num1 << 1); //00010100
System.out.println(num2 << 1); //11101100๋ ํผ์ฐ์ฐ์๊ฐ์ ๊ฐ์ ๋น๊ตํ๊ธฐ ์ํ ์ฐ์ฐ์
๋ ํผ์ฐ์ฐ์ ๊ฐ์ด ๊ฐ์์ง ๋น๊ตํ๋ ์ฐ์ฐ์๋ก ์์ํ ํ์
๋ผ๋ฆฌ ๋น๊ตํ ๋๋ ๊ฐ์ ๋น๊ตํ๊ณ ๋ฐ์ดํฐ ํฌ๊ธฐ๊ฐ ๋ค๋ฅธ ๋ฐ์ดํฐํ์
๋ผ๋ฆฌ์ ๋น๊ต๋ผ๋ฉด ํฐ ๋ฐ์ดํฐ ํ์
์ผ๋ก ๋ณํ๋์ด ๋น๊ตํ๋ค.
์ฐธ์กฐ ํ์
(String, Array, Class...)๋ผ๋ฆฌ์ ๋น๊ต๋ผ๋ฉด ๋์ผํ ์๋ณธ ๋ฐ์ดํฐ(๊ฐ์ฒด)์ธ์ง ๋น๊ตํ๋ค.
-
== : ๋ ํผ์ฐ์ฐ์ ๊ฐ์ด ๊ฐ์ผ๋ฉด
false, ์๋๋ฉดfalse๋ฐํ -
!= : ๋ ํผ์ฐ์ฐ์ ๊ฐ์ด ๊ฐ์ง ์์ผ๋ฉด
false, ๊ฐ์ผ๋ฉดfalse๋ฐํ
์ผ์ชฝ ํผ์ฐ์ฐ์๊ฐ ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์๋ณด๋ค ์์์ง(์๊ฑฐ๋ ๊ฐ์์ง) ํ๋จํ์ฌ ๋ง๋ค๋ฉด true, ์๋๋ผ๋ฉด false๋ฐํ
์ผ์ชฝ ํผ์ฐ์ฐ์๊ฐ ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์๋ณด๋ค ํฐ์ง(ํฌ๊ฑฐ๋ ๊ฐ์์ง) ํ๋จํ์ฌ ๋ง๋ค๋ฉด true, ์๋๋ผ๋ฉด false ๋ฐํ
boolean ํ(true/false)๋ฅผ ๋น๊ตํ๋ ์ฐ์ฐ์๋ก ๋ ํผ์ฐ์ฐ์๊ฐ booleanํ์ผ๋๋ง ์ฌ์ฉ๊ฐ๋ฅ ํ๋ค.
ํ๊ฐ์ ํผ์ฐ์ฐ์์ ๊ฐ์ ๋ฐ๊พธ๋ ์ฐ์ฐ์
boolean t = true;
System.out.println(!t); //false;๋ ํผ์ฐ์ฐ์๊ฐ ๋ชจ๋ true์ด๋ฉด true ์๋๋ฉด false๋ฅผ ๋ฐํํ๋ค.
boolean t = true;
boolean f = false;
System.out.println(t && t); //true
System.out.println(t && f); //false
System.out.println(f && t); //false
System.out.println(f && f); //false๋ ํผ์ฐ์ฐ์์ค ํ๋๋ผ๋ true์ด๋ฉด true ์๋๋ฉด false๋ฅผ ๋ฐํํ๋ค.
boolean t = true;
boolean f = false;
System.out.println(t || t); //true
System.out.println(t || f); //true
System.out.println(f || t); //true
System.out.println(f || f); //false๋ ผ๋ฆฌ ์ฐ์ฐ์๋ฅผ ์ํ ์ค true๋ false์กฐ๊ฑด์ด ๋ง์กฑ๋๋ค๋ฉด ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์๋ ์ฐธ์กฐ์ํ๊ณ ๋ฐ๋ก true ๋ฆฌํดํ๋ ๊ฒ
System.out.println(f && t); //์ผ์ชฝ์ด ํผ์ฐ์ฐ์๊ฐ ์ด๋ฏธ false์ด๋ฏ๋ก ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์์ธ t ๋ ์ฐธ์กฐํ์ง ์๊ณ ๋ฐ๋ก false return
System.out.println(t && f); //์ผ์ชฝ์ด true์ด๊ธฐ ๋๋ฌธ์ ์ค๋ฅธ์ชฝํผ์ฐ์ฐ์ ๊ฐ์ ๋ฐ๋ผ return๊ฐ์ด ๋ค๋ฅด๋ฏ๋ก ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์ ์ฐธ์กฐํ false return
System.out.println(t || f); //์ผ์ชฝ์ด ํผ์ฐ์ฐ์๊ฐ ์ด๋ฏธ true์ด๋ฏ๋ก ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์์ธ t ๋ ์ฐธ์กฐํ์ง ์๊ณ ๋ฐ๋ก truereturn
System.out.println(f || f); //์ผ์ชฝ์ด false์ด๊ธฐ ๋๋ฌธ์ ์ค๋ฅธ์ชฝํผ์ฐ์ฐ์ ๊ฐ์ ๋ฐ๋ผ return๊ฐ์ด ๋ค๋ฅด๋ฏ๋ก ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์ ์ฐธ์กฐํ false return๋นํธ ์ฐ์ฐ์๋ฅผ ๋
ผ๋ฆฌํ(boolean)์๋ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ๊ฒฐ๊ณผ๊ฐ์ ๋์ผํ์ง๋ง ๋จ๋ฝ ํ๋ก ํ๊ฐ๊ฐ ๋์ง ์๋๋ค.
(์์ชฝ ํผ์ฐ์ฐ์๋ฅผ ๋ชจ๋ ์ฐธ์กฐํ ๊ฒฐ๊ณผ ๊ฐ ๋ฐํ)
boolean t = true;
boolean f = false;
System.out.println(t & t); //true
System.out.println(t & f); //false
System.out.println(f & t); //false
System.out.println(f & f); //false
System.out.println(t | t); //true
System.out.println(t | f); //true
System.out.println(f | t); //true
System.out.println(f | f); //false
System.out.println(t ^ t); //false
System.out.println(t ^ f); //true
System.out.println(f ^ t); //true
System.out.println(f ^ f); //false์ฐธ์กฐ ํ์
์ ๋ณ์๊ฐ ํน์ ํ์
์ธ์ง ๊ฒ์ฌํ๋ ์ฐ์ฐ์๋ก ๊ฐ๋ค๋ฉด true, ์๋๋ผ๋ฉด false๊ฐ ๋ฐํ๋๊ณ null์ ๊ฒ์ฌํ๋ ค๊ณ ํ๋ค๋ฉด false๊ฐ ๋ฐํ๋๋ค.
์ฐธ์กฐ ํ์
๋ณ์๊ฐ ์ด๊ธฐํ๊ฐ ๋์ง ์์๋ค๋ฉด ๊ฒ์ฌํ ๋ณ์์ ์ฐธ์กฐ ๊ฐ์ด ์์ผ๋ฏ๋ก ์ปดํ์ผ ์๋ฌ๊ฐ ๋ฌ๋ค.
์๋ฐ์ ๋ชจ๋ ๊ฐ์ฒด๋ ์์์ ์ผ๋ก Object๋ฅผ ์์๋ฐ๊ณ ์๊ธฐ ๋๋ฌธ์ Object๋ก ๋น๊ตํด๋ true๊ฐ ๋์ค๋ฉฐ ์ผ์ชฝ ํผ์ฐ์ฐ์๋ก ์์ํ์
์ ์ฌ ์ ์๋ค.
int[] i;
System.out.println(i instanceof int[]); //์ปดํ์ผ ์๋ฌ
int[] i = new int[5];
System.out.println(i instanceof Object); //true
System.out.println(i instanceof int[]); //true
Object j = new int[5];
System.out.println(i instanceof int[]); //true
System.out.println(j instanceof Object);//true
System.out.println(null instanceof Object);//false
System.out.println("hello" instanceof Object);//true
System.out.println("hello" instanceof String);//true
ArrayList arrayList= new ArrayList();
System.out.println(arrayList instanceof ArrayList); //true
System.out.println(arrayList instanceof Object); //true์ฐ๋ฆฌ๊ฐ ์ผ๋ฐ์ ์ผ๋ก ๋ณ์์ ๊ฐ์ ํ ๋นํ๊ฑฐ๋ ์ฐธ์กฐํ ๋ฐ์ดํฐ ์ฃผ์๋ฅผ ํ ๋นํ ๋ ์ฐ๋ ์ฐ์ฐ์์ด๋ค.
์ฐ์ฐ์ ์คํ ํ ๋์
ํ๋ ์ฐ์ฐ์๋ก ์ฐ์ ์ฐ์ฐ์ or ๋นํธ ์ฐ์ฐ์ or ์ํํธ ์ฐ์ฐ์์ ๋์
์ฐ์ฐ์๋ฅผ ํฉ์น ํํ์ด๋ค.
int i = 10;
i += 1; // i = i + 1
i -= 2; // i = i - 2
i *= 3; // i = i * 3
i /= 4; // i = i / 4
i %= 5; // i = i % 5
i &= 1; // i = i & 1
i |= 2; // i = i | 2
i ^= 3; // i = i ^ 3
i <<= 1; // i = i << 1
i >>= 2; // i = i >> 2
i >>>= 3; // i = i >>> 3๋๋ค๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ๋์
๋ ๋๋ค ํํ์์ผ๋ก ์ต๋ช
์ปฌ๋ ์
์ด๋ค.
ํต์ฌ์ ๊ฐ๋จํ๊ฒ ํํ์ด๋ค.
์ปดํ์ผ๋ฌ์ ์ถ๋ก ์ ํตํด ์ง์ธ์ ์๋ ๊ฒ์ ๋ชจ๋ ์ง์ฐ๊ฑฐ๋(์๋ตํ์ฌ) ํํํ๋ ๋ฐฉ๋ฒ
interface User{
void printUserName(String name);
}
User user = new User() {
@Override
public void printUserName(String name) {
System.out.println("User name is " + name);
}
};์์ ์ฝ๋์ ๊ฐ์ด setUserName๋ฉ์๋ ํ๋๋ง์ ๊ฐ๊ณ ์๋ User ์ธํฐํ์ด์ค์์ ์ด ๋ฉ์๋๋ฅผ overrideํ๋ ค๊ณ ํ๋ค๊ณ ํ์
์ฌ๊ธฐ์ ์ปดํ์ผ๋ฌ๋ User user๋ฅผ ํตํด ๋ฐ์ดํฐ ํ์
์ ๋ช
์ ํ๊ธฐ ๋๋ฌธ์ new User๋ถ๋ถ์ ์๋ต์ด๊ฐ๋ฅํ ๊ฒ์ด๊ณ ๋ฉ์๋๋ ํ๋๋ง ๊ฐ๊ณ ์๊ธฐ๋๋ฌธ์ ๋ฉ์๋๋ฅผ ๋ช
์ํ์ง ์์๋ ๋ ๊ฒ์ด๋ค.
์ด๋ฐ ์ ์ ์ด์ฉํ์ฌ ๋๋ค์์ผ๋ก ํํํ๋ค๋ฉด ์๋์ ๊ฐ์ด ํํํ ์ ์๋ฐ.
User user = (name) -> {
System.out.println("User name is " + name);
}ํ๋ผ๋ฏธํฐ ์ธ์๊ฐ ํ๊ฐ๋ผ๋ฉด ()๋ ์๋ต์ด ๊ฐ๋ฅํ๊ณ {}์์ ์ฝ๋๊ฐ ํ์ค์ด๋ผ๋ฉด {}๋ํ ์๋ต์ด ๊ฐ๋ฅํ๋ค.
๋ง๊ทธ๋๋ก 3๊ฐ์ ํผ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ ์ฐ์ฐ์์ด๋ค.
์กฐ๊ฑด๋ฌธ (if/else)์ฒ๋ผ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
์กฐ๊ฑด๋ฌธ ? ๊ฐ1 : ๊ฐ2์ ๊ฐ์ ํํ๋ก ์กฐ๊ฑด๋ฌธ์ด ์ฐธ์ด๋ผ๋ฉด ๊ฐ1์ ์กฐ๊ฑด๋ฌธ์ด ๊ฑฐ์ง์ด๋ผ๋ฉด ๊ฐ2๋ฅผ ๋ฐํํ๋ค.
boolean isTrue1 = (10 > 1) ? true : false; //10 > 1์ true์ด๊ธฐ ๋๋ฌธ์ true๋ฅผ isTrue์ ๋ฐํํ๋ค.
(10 > 1) ? true : false; //3ํญ ์ฐ์ฐ์๋ ์์ผ๋ก์จ ๊ฐ์ ๋ง๋ค์ด๋ด๊ธฐ ๋๋ฌธ์ ์ฐธ์กฐ๋ ๋์
์ด ์๋ค๋ฉด `Not a Statment`๋ผ๋ ์ปดํ์ผ ์๋ฌ๋ฅผ ๋์ด๋ค.-
if/else๋
statement๋ก์จ ๊ฐ์ ๋ง๋ค์ด๋ด์ง ๋ชปํ๋ค. -
3ํญ ์ฐ์ฐ์๋
expression์ผ๋ก์จ ๊ฐ์ ๋ง๋ค์ด ๋ธ๋ค.
Statement์ Expression๋? (if/else์ ์ผํญ์ฐ์ฐ์์ ์ฐจ์ด)
๋๋ฌธ์ ?๋ค์ ์ค๋ 2๊ฐ์ ๊ฐ์๋ ๊ฐ๋ง ๋ฃ๊ณ ์ฝ๋๋ฅผ ๋ฃ์ง ๋ง์!!
๊ฐ๋
์ฑ๋ ์์ข์์ง๊ณ ์์ฐํ ๋ชฉ์ ์ด ๋ค๋ฅด๋ค.
| ์ฐ์ ์์ | ์ฐ์ฐ์ | ์ฐ์ฐ ๋ฐฉํฅ | ๋์ ๋ด์ฉ |
| :------: | :--------------------------------------------------------------------: | :------------: | :------------------------------------------------: | -------------- | ------- |
| 1 | . | ์ผ์ชฝ -> ์ค๋ฅธ์ชฝ | ๊ฐ์ฒด ๋ฉค๋ฒ ์ ๊ทผ |
| | [, ] | ์ผ์ชฝ -> ์ค๋ฅธ์ชฝ | ๋ฐฐ์ด ์์ ์ ๊ทผ |
| | (args) | ์ผ์ชฝ -> ์ค๋ฅธ์ชฝ | ๋ฉ์๋ ํธ์ถ |
| | i++, i-- | ์ผ์ชฝ -> ์ค๋ฅธ์ชฝ | ํ์ ์ฆ๊ฐ |
| 2 | ++i, --i | ์ผ์ชฝ <- ์ค๋ฅธ์ชฝ | ์ ์ ์ฆ๊ฐ |
| | +, - | ์ผ์ชฝ <- ์ค๋ฅธ์ชฝ | ๋จํญ ์ฆ๊ฐ |
| | ~, ! | ์ผ์ชฝ <- ์ค๋ฅธ์ชฝ | ๋นํธ ๋ณด์, ๋ถ์ ์ฐ์ฐ |
| 3 | new | ์ผ์ชฝ <- ์ค๋ฅธ์ชฝ | ๊ฐ์ฒด ์์ฑ |
| | (datatype) | ์ผ์ชฝ <- ์ค๋ฅธ์ชฝ | ์บ์คํ
(ํ ๋ณํ) |
| 4 | *, /, % | ์ผ์ชฝ -> ์ค๋ฅธ์ชฝ | ๊ณฑํ๊ธฐ, ๋๋๊ธฐ, ๋๋จธ์ง |
| 5 | +,- | ์ผ์ชฝ -> ์ค๋ฅธ์ชฝ | ๋ํ๊ธฐ, ๋นผ๊ธฐ |
| 6 | <<, >>, >>> | ์ผ์ชฝ -> ์ค๋ฅธ์ชฝ | ์ผ์ชฝ ์ํํธ, ์ค๋ฅธ์ชฝ ์ํํธ, ๋ถํธ์๋ ์ค๋ฅธ์ชฝ ์ํํธ |
| 7 | <, <=, >, >= | ์ผ์ชฝ -> ์ค๋ฅธ์ชฝ | ์์, ์๊ฑฐ๋ ๊ฐ์, ํผ, ํฌ๊ฑฐ๋ ๊ฐ์ |
| | instanceof | ์ผ์ชฝ -> ์ค๋ฅธ์ชฝ | ํ์
๋น๊ต |
| 8 | ==, != | ์ผ์ชฝ -> ์ค๋ฅธ์ชฝ | ๊ฐ์, ๊ฐ์ง ์์ |
| 9 | & | ์ผ์ชฝ -> ์ค๋ฅธ์ชฝ | AND |
| 10 | ^ | ์ผ์ชฝ -> ์ค๋ฅธ์ชฝ | XOR |
| 11 | | | ์ผ์ชฝ -> ์ค๋ฅธ์ชฝ | OR |
| 12 | && | ์ผ์ชฝ -> ์ค๋ฅธ์ชฝ | ๋
ผ๋ฆฌ AND |
| 13 | | | | ์ผ์ชฝ -> ์ค๋ฅธ์ชฝ | ๋
ผ๋ฆฌ OR |
| 14 | ?: | ์ผ์ชฝ <- ์ค๋ฅธ์ชฝ | 3ํญ ์ฐ์ฐ์ |
| 15 | =, *=, /=, %=, +=, -=, <<=, >>=, >>>=, &=, ^=, | = | ์ผ์ชฝ <- ์ค๋ฅธ์ชฝ | ๋์
์ฐ์ฐ์ |
| 16 | -> | ์ผ์ชฝ -> ์ค๋ฅธ์ชฝ | ๋๋ค ํํ์ |
//Java 12 ์ด์
int num = 1;
int result = 0;
switch(num){
case 1:
result = 1;
System.out.println("1");
break;
case 2:
result = 2;
System.out.println("2");
break;
case 3:
result = 3;
System.out.println("3");
break;
}
//Java 12
var result2 = switch(num){
case 1 -> 1;
case 2 -> System.out.println("2"); //compile error
case 3 -> 3;
case 4 : //compile error
System.out.println("4");
break;
default -> throw new IllegalStateException("default");
};
//Java13
var result3 = switch(num){
case 1 : {
System.out.println("1");
yield 1;
}
case 2 : yield 2;
case 3 : yield 3;
default :
throw new IllegalStateException("default");
};
var result4 = switch(num){
case 1 -> {
System.out.println("1");
yield 1;
}
case 2 -> 2;
case 3 -> {
yield 3;
System.out.println("2"); //compile error
}
default ->
throw new IllegalStateException("default");
};๊ธฐ์กด์ switch๋ฌธ์์ ์ธ๋ถ ๋ณ์์ ๊ฐ์ ๋์
ํ๊ธฐ ์ํด์๋ ์์ ์ฝ๋์ ๊ฐ์ด result = 1๊ณผ ๊ฐ์ ์์ผ๋ก ๋งค case๋ง๋ค ์ถ๊ฐํด์ฃผ์ด์ผ ํ์๋ค.
Java 8์ดํ์ ๋๋ค์์ด ์๊ธฐ๊ณ ๋์ Java์ ๋ง์ ๋ณํ๊ฐ ์์๊ณ Java 12์๋ case๋ง๋ค ๊ฒฐ๊ณผ๊ฐ์ ๋ฐํํ๋ switch๋ฌธ์ ๊ฒฝ์ฐ ๋๋ค ํํ์(->)์ ์ฌ์ฉ ํ ์ ์๊ฒ ๋์๋ค.
Java 12์ ๋๋ค ํํ์์ ๊ฒฝ์ฐ ๋ฐ๋ก ๋์
๊ฐ์ ์ฐํญ์ ํํํด์ฃผ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ถ๊ฐ ์์
์ ๋ชปํ๋ค๋ ๋จ์ ์ด ์์ด
Java 13์ yield๊ฐ ์ถ๊ฐ ๋์๋ค.
yield๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋น ๊ฐ์ returnํ๊ณ case๋ฌธ์ ์ข
๋ฃํ๊ธฐ ๋๋ฌธ์ yield๋ค์ ์ค์ ๋ค๋ฅธ ๊ตฌ๋ฌธ์ด ์จ๋ค๋ฉด compile error๊ฐ ๋๋ค.
-
๊ฐ case๋ง๋ค ๋ฐํํ์ ์ ์ปดํ์ผ์์ ์ถ๋ก ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ์ถ๋ก ํ ๋ฐ์ดํฐ ํ์ ์ธ
var์ด ๊ฐ๋ฅํ๋ค. -
๋ชจ๋ case์ ๋ํด ๋ฐํ ๊ฐ์ด ์์ด์ผ error๊ฐ ์๋๊ธฐ ๋๋ฌธ์
default๋ฌธ๋ ๋ฐ๋์ ์์ด์ผ ํ๋ค. -
๋๋ค ํํ์(->)๊ณผ๊ธฐ์กด ํํ์ (:)์ ํผ์ฉํด์ ์ฌ์ฉ์ด ๋ถ๊ฐ๋ฅํ๋ค. -
break;๊ตฌ๋ฌธ ์์ด๋ ๋ค์ case๋ก ๋์ด๊ฐ์ง ์๋๋ค.