-
Live Study - Java ๊ฐ ์ ๊ณตํ๋ ๋ค์ํ ์ฐ์ฐ์Hello, World ๐ป/Java โ๏ธ 2020. 11. 24. 21:28
ํ์ต๋ด์ฉ
- ์ฐ์ฐ์ ์ฐ์ ์์
- ์ฐ์ ์ฐ์ฐ์
- ๋นํธ ์ฐ์ฐ์
- ๊ด๊ณ ์ฐ์ฐ์
- ๋ ผ๋ฆฌ ์ฐ์ฐ์
- ์ผํญ ์ฐ์ฐ์
- assignment(=) operator
- instanceof
- ํ์ดํ(->) ์ฐ์ฐ์
- (optional) Java 13. switch ์ฐ์ฐ์
์ฉ์ด ์ ๋ฆฌ
- ํผ์ฐ์ฐ์ - ์ฐ์ฐ์๊ฐ ์ฐ์ฐ์ ์ํํ๋ ค๋ฉด ์ฐ์ฐ์ ๋์์ด ์์ด์ผ ํ๋ค. ์ด ๋์์ 'ํผ์ฐ์ฐ์' ๋ผ๊ณ ํ๋ค. ํผ์ฐ์ฐ์๋ก ์์, ๋ณ์, ์ ๋ฑ์ ์ฌ์ฉํ ์ ์๋ค.
- ์ - ์์ ์ฐ์ฐ์์ ํผ์ฐ์ฐ์๋ฅผ ์กฐํฉํด ๊ณ์ฐํ๊ณ ์ ํ๋ ๋ฐ๋ฅผ ํํํ ๊ฒ์ '์'์ด๋ผ๊ณ ํ๋ค.
์) 10 * x + 20
์ฐ์ฐ์์ ์ข ๋ฅ
์ข ๋ฅ ์ฐ์ฐ์ ์ฐ์ ์ฐ์ฐ์ +, -, *, /, %, <<, >> ๋น๊ต ์ฐ์ฐ์ >, <, >=, <=, ==, != ๋ ผ๋ฆฌ ์ฐ์ฐ์ &&, ||, !, &, |, ^, ~ ๋์ ์ฐ์ฐ์ = ๊ธฐํ (type) ํ๋ณํ ์ฐ์ฐ์, ? : ์ผํญ ์ฐ์ฐ์, instanceof ํผ์ฐ์ฐ์์ ๊ฐ์๋ก ์ฐ์ฐ์๋ฅผ ๋ถ๋ฅํ๊ธฐ๋ ํ๋ค.
ํผ์ฐ์ฐ์์ ๊ฐ์๊ฐ ํ๋๋ฉด ๋จํญ ์ฐ์ฐ์ ๋ ๊ฐ๋ฉด ์ดํญ ์ฐ์ฐ์, ์ธ ๊ฐ๋ฉด ์ผํญ ์ฐ์ฐ์ ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์) -3-10
์์ ์์ ๋ ๊ฐ์ - ์ฐ์ฐ์๊ฐ ์๋ค. ๋ ๋ค ๊ฐ์ ๊ธฐํธ - ์ด์ง๋ง ์ฒ์์ - ๋ '๋ถํธ ์ฐ์ฐ์' ์ด๊ณ , ๋๋ฒ์งธ - ๋ ๋บ์ ์ฐ์ฐ์์ด๋ค.
์๋ก ๋ค๋ฅธ ์ฐ์ฐ์(๋ถํธ ์ฐ์ฐ์, ๋บ์ ์ฐ์ฐ์)์ ๊ธฐํธ๊ฐ ๊ฐ์๋ฐ, ์ด๋๋ ํผ์ฐ์ฐ์์ ๊ฐ์๋ก ๊ตฌ๋ถํ ์ ์๋ค.
์ฐ์ฐ์ ์ฐ์ ์์
๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ค ์ฐ์ฐ์๊ฐ ๋จผ์ ์คํ๋ ์ง๋ ์์์ ์ผ๋ก ๋ณด๊ณ ํ๋จ์ด ๊ฐ๋ฅํ ๊ฒ ๊ฐ๋ค. ์์์ ์ผ๋ก ํ๋จ์ด ๊ฐ๋ฅํ ์์๋ค์ ์ญ ํ์ด๋ณด๊ณ ํน๋ณํ ๊ธฐ์ตํด์ผํ ์์๋ฅผ ๋ฐ๋ก ๊ณต๋ถํ๋ ๊ฒ์ด ์ข์ ๊ฒ ๊ฐ๋ค.
-x + 10 ๋จํญ ์ฐ์ฐ์๊ฐ ์ดํญ ์ฐ์ฐ์๋ณด๋ค ์ฐ์ ์์๊ฐ ๋๊ธฐ ๋๋ฌธ์, x ์ ๋ถํธ๋ฅผ ๋ฐ๊พธ๊ณ + ์ฐ์ฐ์ด ์ํ๋๋ค. x + y * 5 *, / ์ฐ์ฐ์๊ฐ +, - ์ฐ์ฐ์๋ณด๋ค ์ฐ์ ์์๊ฐ ๋๋ค. x + 5 > y * 2 ์ฐ์ ์ฐ์ฐ์ (+, -, *, /, %) ๊ฐ ๋น๊ต ์ฐ์ฐ์ (>, <, >=, <=, ==, !=) ๋ณด๋ค ์ฐ์ ์์๊ฐ ๋๋ค. 3 < x && x < 10 ๋น๊ต ์ฐ์ฐ์๊ฐ ๋ ผ๋ฆฌ ์ฐ์ฐ์ (&&, ||) ๋ณด๋ค ์ฐ์ ์์๊ฐ ๋๋ค. result = x + y * 5 ๋์ ์ฐ์ฐ์ (=) ๋ ์ฐ์ฐ์๋ค ์ค์์ ์ฐ์ ์์๊ฐ ์ ์ผ ๋ฎ๋ค. = ์ฐ์ฐ์ ์ค๋ฅธ์ชฝ ์์ ๊ฒฐ๊ณผ๊ฐ result ์ ์ ์ฅ๋๋ค. ํน๋ณํ ๋ด๋ ๊ฒ
x << 3 + 5 ๋นํธ ์ฐ์ฐ์ >>, << ๋ ๋ค๋ฅธ ์ฐ์ ์ฐ์ฐ์๋ณด๋ค ์ฐ์ ์์๊ฐ ๋ฎ๋ค. ๊ทธ๋์ 3 + 5๊ฐ ๋จผ์ ์ํ๋๊ณ ๋นํธ ์ฐ์ฐ์ ์ํํ๋ค. number & 5 == 0 ๋ ผ๋ฆฌ ์ฐ์ฐ์๋ ๋น๊ต ์ฐ์ฐ์๋ณด๋ค ์ฐ์ ์์๊ฐ ๋ฎ๋ค. ๊ทธ๋์ 5 == 0 ์ด ๋จผ์ ์ํ๋๋ค. x > 0 || x > 5 && x < 10 AND (&&) ์ฐ์ฐ์๋ OR (||) ์ฐ์ฐ์๋ณด๋ค ์ฐ์ ์์๊ฐ ๋๋ค. ์ด๋ฐ ๊ฒฝ์ฐ ๊ดํธ๋ฅผ ์ฌ์ฉํ๋ฉด ์ข ๋ ๋ช ํํ ํํํ ์ ์๋ค. (x > 0 || x > 5) && x < 10 ํ๋ฒ ์ฑ ๋ณด๊ธฐ.. ์์์๋ถํฐ ์ฐ์ ์์๊ฐ ๋ด๋ ค๊ฐ๋ค.
๋จํญ ์ฐ์ฐ์ ++ -- + - ~ ! (ํ๋ณํ) ์ฐ์ ์ฐ์ฐ์ * / % + - << >> ๋น๊ต ์ฐ์ฐ์ < > <= >= instanceof == != ๋ ผ๋ฆฌ ์ฐ์ฐ์ & ^ | && || ์ผํญ ์ฐ์ฐ์ ? : ๋์ ์ฐ์ฐ์ = += -= *= /= %= <<= >>= &= ^= |= ์ฐ์ > ๋น๊ต > ๋ ผ๋ฆฌ > ๋์ ์ฐ์ฐ์ ์์
๋จํญ > ์ดํญ > ์ผํญ ์ฐ์ฐ์ ์์์ฐ์ ์ฐ์ฐ์์ ๋ํด ์์๋ณด๊ธฐ ์ ์ ์์์ผ ํ ๊ท์น์ด ์๋ค. '์ฐ์ ๋ณํ'์ด๋ผ๋ ๊ท์น์ด๋ผ๊ณ ํ๋ค.
โ๏ธ ์ดํญ ์ฐ์ฐ์๋ ๋ ํผ์ฐ์ฐ์์ ํ์ ์ด ์ผ์นํด์ผ ์ฐ์ฐ์ด ๊ฐ๋ฅํ๋ค. ๋๋ฌธ์ ๋ ํผ์ฐ์ฐ์์ ํ์ ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ ๋ณด๋ค ํฐ ํ์ ์ผ๋ก ์ผ์น์ํจ๋ค.
: byte + int => int + int
: float + int => float + float
: double + float => double + float
โ๏ธ ํผ์ฐ์ฐ์์ ํ์ ์ด int ๋ณด๋ค ์์ ํ์ ์ธ ๊ฒฝ์ฐ int ๋ก ๋ณํ๋๋ค.
: int ๊ฐ ๊ฐ์ฅ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ ํ์ ์ด๋ผ๊ณ ํ๋ค.
: char, byte ์ ํํ๋ฒ์๊ฐ ์ข์์ ์ฐ์ฐ ์ค์ ์ค๋ฒํ๋ก์ฐ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ ๋๊ธฐ ๋๋ฌธ์ด๋ค.์ฐ์ ์ฐ์ฐ์
์ฐ์ ์ฐ์ฐ์๋ +, -, *, /, % ์ฐ์ฐ์๊ฐ ์๋ค.
์ฌ์น์ฐ์ฐ์ ์ผ์์ํ์์๋ ๋ง์ด ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ ์ ์ฃผ์ํด์ผํ๋ ๊ฒ๋ค์ ์์ฃผ๋ก ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค.1. 0์ผ๋ก ๋๋๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
> 5 / 0 => ์๋ฌ2. 10 / 4 ์ ๊ฒฐ๊ณผ๋ 2.5๊ฐ ์๋๋ผ 2 ์ด๋ค.
> ๋๋๊ธฐ ์ฐ์ฐ์์ ํผ์ฐ์ฐ์ ๋ชจ๋ int ํ์ ์ธ ๊ฒฝ์ฐ ์ฐ์ฐ๊ฒฐ๊ณผ ์ญ์ int ํ์ ์ด๊ธฐ ๋๋ฌธ์ ์์์ ์ ์ ์ฅํ์ง ์๋๋ค.
๋ฐ์ฌ๋ฆผ ํ์ง๋ ์๋๋ค.
์ด๋ฐ ๊ฒฝ์ฐ ํ ์ชฝ์ ์ค์ํ์ผ๋ก ํ๋ณํ์ ํด์ผํ๋ค. ํ ์ชฝ์ ํ๋ณํํ๋ฉด ๋ค๋ฅธ ํ ์ชฝ์ ์๋ ํ๋ณํ์ด ๋์ด ์ฌ๋ฐ๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋ค.
> 10 / 4.0f == 2.5f3. ํฌ๊ธฐ๊ฐ ์์ ์๋ฃํ์ ๋ณ์๋ฅผ ํฐ ์๋ฃํ์ ๋ณ์์ ์ ์ฅํ ๋๋ ์๋์ผ๋ก ํ๋ณํ๋์ง๋ง, ํฐ ์๋ฃํ์ ๊ฐ์ ์์ ์๋ฃํ์ ๋ณ์์ ์ ์ฅํ๋ ค๋ฉด ๋ช ์์ ์ผ๋ก ํ๋ณํ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด์ผํ๋ค.
@Test public void test() { byte a = 10; byte b = 20; byte c = a + b; // ์ค๋ฅ }
> a, b๋ int ๋ก ํ๋ณํ๋์ด ๊ณ์ฐํ๊ธฐ ๋๋ฌธ์ ์ฐ์ฐ ๊ฒฐ๊ณผ๋ int ํ์ด๋ค.
byte c = (byte)(a + b); ์ ๊ฐ์ด ๋ณ๊ฒฝํด์ผํ๋ค.4. ํฐ ์๋ฃํ์์ ์์ ์๋ฃํ์ผ๋ก ํ๋ณํํ๋ฉด ๋ฐ์ดํฐ์ ์์ค์ด ์๊ธธ ์ ์๋ค.
@Test public void test() { byte a = 10; byte b = 30; byte c = (byte)(a * b); System.out.println(c); // 44 }
> byte์ ํํ ๋ฒ์๋ฅผ ๋ฒ์ด๋, 300 ์ด ์๋๋ผ ๋ค๋ฅธ ๊ฐ์ด ์ถ๋ ฅ๋๋ค.
> byte => int ๋ณํ์ 2์ง์ 8์๋ฆฌ์์ 32์๋ฆฌ๋ก ๋ณํํ๋ ๊ฒ์ด๋ผ ๋ฐ์ดํฐ ์์ค์ด ์ผ์ด๋์ง ์๋๋ค. ์๋์ ๋ฐ์ดํฐ๋ ์ ์งํ๊ณ ๋๋จธ์ง ๋นํธ ์๋ฆฌ๋ฅผ 0์ผ๋ก ์ฑ์ฐ๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฐ๋ฉด int ๋ฅผ byte ๋ก ๋ณํํ๋ฉด ๋นํธ ์์ค์ด ๋ฐ์ํ๋ค.byte 10 00001010 int 10 00000000 00000000 00000000 00001010 int 300 00000000 00000000 00000001 00101100 byte 44 00101100
5. ์ด๋ฏธ ์ค๋ฒํ๋ก์ฐ๊ฐ ๋ฐ์ํ ๊ฐ์ ๋ ํฐ ์๋ฃํ์ผ๋ก ๋ฐ์๋ ์ํ๋ ๊ฐ์ด ๋ค์ด๊ฐ์ง ์๋๋ค.@Test public void test() { int a = 1_000_000; int b = 2_000_000; long c = a * b; System.out.println(c); // -1454759936 }
> ๊ณ์ฐํ๊ธฐ ์ ์ (long) a ์ ๊ฐ์ด ๋ณํํด์ค์ผ ํ๋ค.
6. 5๋ฒ๊ณผ ๊ฐ์ ์ด์ ๋ก ์ฐ์ฐ์ ์์์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์๋ ์๋ค.
@Test public void test() { int a = 1_000_000; int result1 = a * a / a; int result2 = a / a * a; System.out.println(result1); // -727 System.out.println(result2); // 1_000_000 }
7. ๋ฆฌํฐ๋ด, ์์ ๊ฐ์ ์ฐ์ฐ์ Run Time ์์ ๋ณํ๋ ๊ฐ์ด ์๋๊ธฐ ๋๋ฌธ์, ์ปดํ์ผ ํ ๋ ์ปดํ์ผ๋ฌ๊ฐ ๊ณ์ฐํ๋ค.
@Test public void test() { char c1 = 'a'; char c2 = c1 + 1; // ์ค๋ฅ ๋ฐ์ char c3 = 'a' + 1; // b }
> ์ปดํ์ผ์์ ์ปดํ์ผ๋ฌ๊ฐ ๋ฏธ๋ฆฌ ๋ง์ ์ฐ์ฐ์ ์ํํ๊ธฐ ๋๋ฌธ์ Run Time ์์ 'b'๋ฅผ c3์ ์ ์ฅํ ๋ฟ์ด๋ค.
> ์ปดํ์ผ๋ฌ๊ฐ ๋์ ๊ณ์ฐํด์ ๋์ฒดํ๊ธฐ ๋๋ฌธ์ ์ฝ๋๋ฅผ ๋ ํจ์จ์ ์ผ๋ก ๋ง๋ ๋ค. (๊ณ ํ๋ค) ์๋๋ ์ด๋ป๊ฒ ๋ ํจ์จ์ ์ผ๋ก ๋ง๋๋ ์ถ์ด .class ํ์ผ์ ์ญ์ด์ ๋ธ ํด๋ณด์๋ค..
์์ธํ๊ฒ ์ดํด๋ ์๋์ง๋ง ์ผ๋จ ๋ ์งง์ ๊ฒ์ด ๋์ ๋ณด์ธ๋ค. ์์ชฝ์ด ๋ฆฌํฐ๋ด ๊ฐ์ ์ฐ์ฐ์ด๋ค.Compiled from "HelloJava.java" public class HelloJava { public HelloJava(); Code: 0: aload_0 1: invokespecial #1 // Method java/lang/Object."<init>":()V 4: return public static void main(java.lang.String[]); Code: 0: bipush 98 2: istore_1 3: getstatic #7 // Field java/lang/System.out:Ljava/io/PrintStream; 6: iload_1 7: invokevirtual #13 // Method java/io/PrintStream.println:(C)V 10: return }
Compiled from "HelloJava2.java" public class HelloJava2 { public HelloJava2(); Code: 0: aload_0 1: invokespecial #1 // Method java/lang/Object."<init>":()V 4: return public static void main(java.lang.String[]); Code: 0: bipush 97 2: istore_1 3: iload_1 4: iconst_1 5: iadd 6: i2c 7: istore_2 8: getstatic #7 // Field java/lang/System.out:Ljava/io/PrintStream; 11: iload_2 12: invokevirtual #13 // Method java/io/PrintStream.println:(C)V 15: return }
8. ๋๋จธ์ง ์ฐ์ฐ์ % ๋ ์ผ์ชฝ ํผ์ฐ์ฐ์๋ฅผ ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์๋ก ๋๋๊ณ ๋ ๋ค์ ๋๋จธ์ง๋ฅผ ๋ฐํํ๋ ์ฐ์ฐ์์ด๋ค.
> 5 % 3 == 2
> ํผ์ฐ์ฐ์๋ก ์ ์๋ง ํ์ฉ๋๋ค.๊ด๊ณ ์ฐ์ฐ์
๋ ํผ์ฐ์ฐ์๋ฅผ ๋น๊ตํ๋๋ฐ ์ฌ์ฉ๋๋ค. ๊ฒฐ๊ณผ๊ฐ์ true, false ์ค ํ๋์ด๋ค.
๊ด๊ณ์ฐ์ฐ์ ์ญ์ ์ดํญ ์ฐ์ฐ์์ด๋ฏ๋ก ๋น๊ตํ๋ ๋ ํผ์ฐ์ฐ์์ ์๋ฃํ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ ๋ ํฐ ์๋ฃํ์ผ๋ก ์๋ ๋ณํํด ๋น๊ตํ๋ ๊ฒ์ ์ฃผ์ํด์ผ ํ๋ค.๋์๋น๊ต ์ฐ์ฐ์
> ์ผ์ชฝ ๊ฐ์ด ํฌ๋ฉด true, ์๋๋ฉด false < ์ผ์ชฝ ๊ฐ์ด ์์ผ๋ฉด true, ์๋๋ฉด false >= ์ผ์ชฝ ๊ฐ์ด ํฌ๊ฑฐ๊ฐ ๊ฐ์ผ๋ฉด true, false <= ์ผ์ชฝ ๊ฐ์ด ์๊ฑฐ๋ ๊ฐ์ผ๋ฉด true, false ๋ฑ๊ฐ๋น๊ต ์ฐ์ฐ์
== ๋ ํผ์ฐ์ฐ์๊ฐ ๊ฐ์ผ๋ฉด true, ์๋๋ฉด false != ๋ ํผ์ฐ์ฐ์๊ฐ ๋ค๋ฅด๋ฉด true, ์๋๋ฉด false = ๋ ๋์ ์ฐ์ฐ์์ด๋ค.
๋ ํผ์ฐ์ฐ์์ ์๋ฃํ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ ํฐ ์ชฝ์ผ๋ก ํ๋ณํ๋์ด ๊ณ์ฐํ๊ธฐ ๋๋ฌธ์ ๋ค์์ ์์ true ์ด๋ค.
=> 'A' == 65 => true
=> 10 == 10.0f => true๋ค๋ง ์ค์ํ์ ๋น๊ต๋ ์ค์ฐจ๊ฐ ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฃผ์ํด์ผํ๋ค. ๋ค์ ์์ false ์ด๋ค.
=> 0.1 == 0.1f => false๋ ผ๋ฆฌ ์ฐ์ฐ์
๋ ผ๋ฆฌ ์ฐ์ฐ์์๋ && (AND), || (OR), ! (NOT) ์ด ์๋ค.
AND ์ฐ์ฐ์๋ ๋ ํผ์ฐ์ฐ์ ๋ชจ๋ true์ผ ๋ true๋ฅผ ๋ฐํํ๊ณ , OR ์ ํ ์ชฝ๋ง true ์ด๋ฉด true๋ฅผ ๋ฐํํ๋ค. NOT์ true ์ด๋ฉด false, false ์ด๋ฉด true ๋ฅผ ๋ฐํํ๋ค. ๋ ผ๋ฆฌ ์ฐ์ฐ์๋ ํผ์ฐ์ฐ์๋ก boolean ํ์ด๋ boolean ๊ฐ์ ๋ฐํํ๋ ์กฐ๊ฑด์๋ง ํ์ฉํ๋ค.&& (AND) && ์ฐ์ฐ์ ์์ชฝ์ ์กฐ๊ฑด์ด ๋ชจ๋ true ์ด์ด์ผ true, ํ ์ชฝ ์ด๋ผ๋ false ์ด๋ฉด false || (OR) || ์์ชฝ์ ์กฐ๊ฑด ์ค ํ ์ชฝ๋ง true ์ด๋ฉด true, ์ ์ชฝ ๋ชจ๋ false ์ด๋ฉด false ! (NOT) true ์ด๋ฉด false, false ์ด๋ฉด true ๋ ผ๋ฆฌ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ๋ ํผ์ฐ์ฐ์์ ์์น์ ๋ฐ๋ผ ์กฐ๊ธ ๋ ํจ์จ์ ์ธ ์ฐ์ฐ์ ํ๊ฒ ๋ง๋ค ์ ์๋ค.
&& ์ฐ์ฐ์ ๊ฒฝ์ฐ ์ด๋ ํ ์ชฝ์ด false ์ด๋ฉด ์ฐ์ฐ๊ฒฐ๊ณผ๊ฐ false ์ด๋ค. ๋ฐ๋ผ์ ์ผ์ชฝ ์กฐ๊ฑด์ ๊ฒฐ๊ณผ๊ฐ false ์ด๋ฉด ์ค๋ฅธ์ชฝ ์กฐ๊ฑด์ ํ๊ฐํ์ง ์๋๋ค.
|| ์ ์ด๋ ํ ์ชฝ์ด true ์ด๋ฉด ์ฐ์ฐ๊ฒฐ๊ณผ๊ฐ true ์ด๋ฏ๋ก ์ผ์ชฝ ์กฐ๊ฑด์ ๊ฒฐ๊ณผ๊ฐ true ์ด๋ฉด ์ค๋ฅธ์ชฝ ์กฐ๊ฑด์ ํ๊ฐํ์ง ์๋๋ค. ์ด๋ฅผ ์ฐธ๊ณ ํด ์ข ๋ ํจ์จ์ ์ธ ์ฐ์ฐ์ ํ๋๋ก ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค.๋นํธ ์ฐ์ฐ์
๋นํธ ์ฐ์ฐ์์๋ &, |, ^, ~, <<, >> ๊ฐ ์๋ค.
๋นํธ ์ฐ์ฐ์๋ ํผ์ฐ์ฐ์๋ฅผ ๋นํธ ๋จ์๋ก ๋ ผ๋ฆฌ ์ฐ์ฐํ๋ค. ํผ์ฐ์ฐ์๋ก ์ ์๋ง ํ์ฉ๋๊ณ , ํผ์ฐ์ฐ์๋ฅผ 2์ง์๋ก ํํํ์ ๋ ๊ฐ ์๋ฆฌ๋ฅผ ์ฐ์ฐ์์ ๋ฐ๋ผ ์ฐ์ฐ์ ์ํํ๋ค.| (OR) ํผ์ฐ์ฐ์ ์ค ํ ์ชฝ์ ๊ฐ์ด 1์ด๋ฉด 1, ๋ ๋ค 0 ์ด์ด์ผ 0 & (AND) ํผ์ฐ์ฐ์ ์ค ์ ์ชฝ์ด ๋ชจ๋ 1 ์ด์ด์ผ 1, ํ ์ชฝ ์ด๋ผ๋ 1 ์ด๋ฉด 1 ^ (XOR) ํผ์ฐ์ฐ์ ์ค ๊ฐ์ด ์๋ก ๋ค๋ฅผ ๋๋ง 1, ๊ฐ์ ๋๋ 0 ~ 0 ์ 1 ๋ก, 1 ์ 0์ผ๋ก ๋ฐ๊พผ๋ค. X Y X | Y X & Y X ^ Y 1 1 1 1 0 1 0 1 0 1 0 1 1 0 1 0 0 0 0 0 ๋นํธ ์ฐ์ฐ์์๋ ํผ์ฐ์ฐ์์ ํ์ ์ ์ผ์น์ํค๋ ์๋ ํ๋ณํ์ด ์ผ์ด๋ ์ ์๋ค.
byte ์๋ฃํ์ ๋ํด ๋นํธ ์ฐ์ฐ์ ํ๋ฉด ๊ฒฐ๊ณผ๊ฐ์ int ํ์ด ๋ฐํ๋๋ค.@Test public void test() { byte a = 10; byte b = ~a; // ์ค๋ฅ }
X ~X 1 0 0 1 ~ ์ฐ์ฐ์๋ก ๋นํธ๋ฅผ ์ ํํ๊ณ ๋๋ฉด ๋ถํธ์๋ ํ์ ์ ํผ์ฐ์ฐ์๋ ๋ถํธ๊ฐ ๋ฐ๋๋ก ๋ณ๊ฒฝ๋๋ค. ํผ์ฐ์ฐ์์ 1์ ๋ณด์๋ฅผ ์ป์ ์ ์๋ค. ๊ทธ๋์ ~ ์ฐ์ฐ์๋ฅผ 1์ ๋ณด์ ์ฐ์ฐ์๋ผ๊ณ ๋ ํ๋ค.
์ฌํํธ ์ฐ์ฐ์ >>, << ๋ ํผ์ฐ์ฐ์๋ฅผ 2์ง์๋ก ํํํ์ ๋ ๊ฐ ์๋ฆฌ๋ฅผ >> (์ค๋ฅธ์ชฝ), << (์ผ์ชฝ)์ผ๋ก ์ฎ๊ธด๋ค.
์๋ฅผ ๋ค๋ฉด
1. 10์ง์ 8์ 2์ง์๋ก '0 0 0 0 1 0 0 0 (8)' ์ด๋ค.
2. 8 << 2 ๋ฅผ ํ๋ฉด '0 0 1 0 0 0 0 0 (32)' ๊ฐ ๋๋ค.
3. ๋นํธ ์๋ฆฌ ์ด๋์ผ๋ก ์ ์ฅ ๋ฒ์๋ฅผ ๋์ด๊ฐ ๊ฐ์ ๋ฒ๋ ค์ง๊ณ , ๋น ์๋ฆฌ๋ 0์ผ๋ก ์ฑ์์ง๋ค.์ฌํํธ ์ฐ์ฐ์๋ ๋ค๋ฅธ ์ดํญ์ฐ์ฐ์๋ค๊ณผ๋ ๋ค๋ฅด๊ฒ ํผ์ฐ์ฐ์์ ํ์ ์ ์ผ์น์ํฌ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์๋ ํ๋ณํ์ด ์ผ์ด๋์ง ์๋๋ค.
<< ์ฐ์ฐ์์ ๊ฒฝ์ฐ ์ผ์ชฝ ํผ์ฐ์ฐ์์ ๋ถํธ์ ์๊ด์์ด ์ผ์ชฝ์ผ๋ก ์ด๋์ํค๊ธฐ ๋๋ฌธ์ ๋น์นธ์ 0์ผ๋ก๋ง ์ฑ์ด๋ค. >> ์ฐ์ฐ์๋ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋์ํค๊ธฐ ๋๋ฌธ์ ์ผ์ชฝ ํผ์ฐ์ฐ์๊ฐ ์์์ผ ๊ฒฝ์ฐ ๋น์๋ฆฌ๋ฅผ 1๋ก ์ฑ์ด๋ค. (์์์ผ ๋๋ 0์ผ๋ก ์ฑ์ด๋ค)
์ผํญ ์ฐ์ฐ์ ? :
ํ์ ๋น์ฐํ ์ผํญ ์ฐ์ฐ์๋ ์ผํญ ์ฐ์ฐ์! ๋ผ๊ณ ์๊ฐํ์๋๋ฐ ๋ค์ ์๊ฐํด๋ณด๋ ์ผํญ ์ฐ์ฐ์๋ ํผ์ฐ์ฐ์ ์ธ ๊ฐ๋ฅผ ํ์๋ก ํ๋ ์ฐ์ฐ์๋ฅผ ์ง์นญํ๋ ์ฐ์ฐ์์ด๋ค. ์ฑ ์ ๋ณด๋ ์กฐ๊ฑด ์ฐ์ฐ์๋ผ๋ ์ด๋ฆ์ ๋ฐ๊ฒฌํ๋ค. ์ผํญ ์ฐ์ฐ์๋ ์กฐ๊ฑด ์ฐ์ฐ์ ํ๋๋ฟ์ด๋ผ ์์ฐ์ค๋ฝ๊ฒ ์ผํญ ์ฐ์ฐ์ ์ผํญ ์ฐ์ฐ์ ํ ๊ฒ ๊ฐ๋ค.
์กฐ๊ฑด์ ? ์1 : ์2
์กฐ๊ฑด์์ด ์ฐธ์ด๋ฉด ์1 ์ ๋ฐํํ๊ณ ๊ฑฐ์ง์ธ ๊ฒฝ์ฐ ์2๋ฅผ ๋ฐํํ๋ค.
int result = 5 > 3 ? 5 : 3;
result => 5์ผํญ ์ฐ์ฐ์๋ฅผ ์ค์ฒฉํด์ ์ฌ์ฉํ ์๋ ์๋ค. ์๋์ ์์ x ๊ฐ ์์๋ฉด 1, 0์ด๋ฉด 0, ์์๋ฉด -1 ์ ๋ฐํํ๋ค.
x > 0 ? 1 : x == 0 ? 0 : -1;
์ผํญ ์ฐ์ฐ์์ ๊ฒฐํฉ๊ท์น์ ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ด๋ค. ๊ทธ๋์ x == 0 ? 0 : -1 ์ฐ์ฐ์ด ๋จผ์ ์ํ๋๋ค.
์ผํญ ์ฐ์ฐ์๋ฅผ ์ฌ๋ฌ๋ฒ ์ค์ฒฉํด ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ๊ฐ๋ตํด์ง๊ธด ํ๊ฒ ์ง๋ง, ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๊ธฐ ๋๋ฌธ์ ํ์ํ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๊ฒ ๋ค.
๋์ ์ฐ์ฐ์ =
๋์ ์ฐ์ฐ์ = ๋ ๋ณ์์ ๊ฐ์ ์ ์ฅ๊ณต๊ฐ์ ๊ฐ์ด๋ ์์ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๋๋ฐ ์ฌ์ฉ๋๋ค. = ์ฐ์ฐ์๋ ์ฐ์ฐ์๋ค ์ค ๊ฐ์ฅ ๋ฎ์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง๊ณ ์์ด์ ๊ฐ์ฅ ๋์ค์ ์ํ๋๋ค.
= ์ฐ์ฐ์๋ ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์์ ๊ฐ์ ์ผ์ชฝ ํผ์ฐ์ฐ์์ ์ ์ฅํ๋ค. ์ ์ฅ๋ ๊ฐ์ ์ฐ์ฐ๊ฒฐ๊ณผ๋ก ๋ฐํํ๋ค.
@Test public void test() { int x; System.out.println(x = 5); // 5 ์ถ๋ ฅ }
๋์ ์ฐ์ฐ์์ ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์๋ ๋ณ์, ์์, ์ ๋ฑ ๋ชจ๋ ๊ฐ๋ฅํ์ง๋ง ์ผ์ชฝ ํผ์ฐ์ฐ์๋ ๋ณ์์ฒ๋ผ ๊ฐ์ ์ ์ฅํ ์ ์๋ ๊ฒ์ด์ด์ผ ํ๋ค. ์ผ์ชฝ ํผ์ฐ์ฐ์๋ก ๋ฆฌํฐ๋ด์ด๋ ์์๊ฐ์ด ๊ฐ์ ์ ์ฅํ ์ ์๋ ๊ฒ๋ค์ ์ฌ ์ ์๋ค.๋ณตํฉ ๋์ ์ฐ์ฐ์
๋์ ์ฐ์ฐ์๋ ๋ค๋ฅธ ์ฐ์ฐ์์ ๊ฒฐํฉํด ์ฌ์ฉ๋ ์ ์๋ค.
+= i += 5; i = i + 5; -= i -= 5; i = i - 5; *= i *= 5; i *= 10 + j i = i * 5; i = i * (10 + j); /= i /= 5; i = i / 5; %= i %= 5; i = i % 5; <<= i <<= 5; i = i << 5; >>= i >>= 5; i = i >> 5; &= i &= 5; i = i & 5; ^= i ^= 5; i = i ^ 5; |= i |= 5; i = i | 5; instanceof
instanceof ์ฐ์ฐ์๋ ์ฐธ์กฐ๋ณ์๊ฐ ์ฐธ์กฐํ๊ณ ์๋ ์ธ์คํด์ค์ ์ค์ ์๋ฃํ์ ์๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
์ผ์ชฝ์๋ ์ฐธ์กฐ๋ณ์๋ฅผ, ์ค๋ฅธ์ชฝ์๋ ํ์ ์ ์์ฑํ๋ค.instanceof ์ฐ์ฐ์ ๊ฒฐ๊ณผ๊ฐ true ๋ผ๋ ๊ฒ์ ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์์ ํ์ ์ผ๋ก ํ๋ณํ์ด ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ๋ปํ๋ค.
์ดํ์ class ๋ฅผ ํ์ตํ ๋ ๋ ๋ง์ ๊ฒ์ ์ ๋ฆฌํด๋ณผ ์ ์์ ๊ฒ ๊ฐ๋ค.ํ์ดํ, -> ์ฐ์ฐ์
ํ์ดํ ์ฐ์ฐ์๋ java 8 ๋ถํฐ ์ง์ํ๋ ๋๋ค, lambda ํํ์์ ์ผ๋ถ๋ถ์ด๋ค.
(n) -> n*n () -> { System.out.println("{ } ์ฌ์ฉ๊ฐ๋ฅ!"); return true; }
์์ ์์๊ฐ ๋๋ค์์ธ๋ฐ, -> ๋ ๋งค๊ฐ๋ณ์์ ๋ณธ๋ฌธ์ ๊ตฌ๋ถํ๋ ์ญํ ์ ํ๋ค.
๋งค๊ฐ๋ณ์๊ฐ ํ์ํ์ง ์์ ๋๋ ์ผ์ชฝ ๋งค๊ฐ๋ณ์๊ฐ ๋น์ด์์ ์ ์๊ณ , ๋๋ค์ ๋ณธ๋ฌธ์ ๋๋ค์์ ๋์์ ์ ์ํ๋ฉฐ { } ๋ก ๊ฐ์ธ์ ํํํ ์๋ ์๊ณ ์์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋ก ๋ฐํํ๋ ๊ฒฝ์ฐ { } ๋ฅผ ์๋ตํ ์ ์๋ค.Java 13. switch ์ฐ์ฐ์
Java 12 ๋ถํฐ switch ๋ ์์ผ๋ก ์ฌ์ฉํ ์ ์๊ฒ ๋์๋ค.
๊ธฐ์กด์ switch ๋ฌธ์ break; ๋ ํ๋ํ๋ ์ฌ์ฉํ์ด์ผ ํ๊ณ ๋ฐ๋ณต์ ์ธ ์ฝ๋๋ ๋ง์ด ๋ค์ด๊ฐ๋๋ฐ ์ด๋ฐ ๋ถ๋ถ์ด ๊ฐ์ ๋์๊ณ , ํน๋ณํ ์์ผ๋ก ์ฌ์ฉํ ์ ์๊ฒ ๋ ๊ฒ์ด ๋์ ๋๋ค. ์์ผ๋ก ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐํํ ์ ์๋ค. ์์์ ๋ณธ ํ์ดํ ์ฐ์ฐ์ -> ์ ํจ๊ป ์ฐ์ด๋ฉด ์ข ๋ ๋ช ์์ ์ผ๋ก ๋ณด์ด๋ ๊ฒ ๊ฐ๋ค. yield ํค์๋๋ ํจ๊ป ์ฌ์ฉ๋ ์ ์๊ณ , break ๋ฌธ์ด ์๋๊ฒ ๋ณด์ธ๋ค! yield ๋ return ๋ฌธ ๊ฐ์ ๋๋์ด๋ค. ์๋๋ ์์ ์ฝ๋.์์ง preview ๋จ๊ณ์ด๊ธฐ ๋๋ฌธ์ ์ปดํ์ผ ์๋ ์คํ ์์ --enable-preview ์ต์ ์ ์ฃผ์ด์ผ ํ๋ค.
private int getIntValue(String str) { int result = switch (mode) { case "a", "b" -> 1; case "c" -> 2; case "d", "e", "f" -> { System.out.println("{ } ๋ธ๋ก๋ ์ฌ์ฉ ๊ฐ๋ฅ!"); yield 3; } default -> -1; }; return result; }
Reference
- ์๋ฐ์ ์ ์ (๋จ๊ถ ์ฑ) (www.yes24.com/Product/Goods/24259565)
- mkyong.com/java/java-13-switch-expressions/
- nipafx.dev/java-13-switch-expressions/'Hello, World ๐ป > Java โ๏ธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Live Study - Java Package (0) 2020.12.30 Live Study - Java ์์ (Inheritance) (0) 2020.12.23 Live Study - Java ์ Class (0) 2020.12.14 Live Study - Java ์ ํ๋ฌธ, ๋ฐ๋ณต๋ฌธ (0) 2020.12.06 Live Study - Java JVM ์ ๋ํด (0) 2020.11.21