-
== ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด๋ฅผ ๋น๊ตํฉ๋๋ค .
== ์ฐ์ฐ์ ๋ ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ๋น๊ตํฉ๋๋ค.
์ฐธ์กฐ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํต๋๋ค. ์๋ก ๋ค๋ฅธ ์ฃผ์์ ์ ์ฅ๋์ด ์๋ ๊ฒฝ์ฐ ==๋ฅผ ์ฌ์ฉํ ๋น๊ต๋ false ๋ฅผ ๋ฐํํฉ๋๋ค .
public class Vehicle { String model; int maxSpeed; int yearOfManufacture; public Car(String model, int maxSpeed, int yearOfManufacture) { this.model = model; this.maxSpeed = maxSpeed; this.yearOfManufacture = yearOfManufacture; } public static void main(String[] args) { Car ferrari = new Car("Ferrari 360 Spider", 280, 1996); Car ferrariTwin = new Car("Ferrari 360 Spider", 280, 1996); System.out.println(ferrari == ferrariTwin); } }
๊ฐ์ฒด๋ฅผ ๋น๊ตํ๊ธฐ ์ํด Object ํด๋์ค์๋ equals() ๋ผ๋ ํน์ ๋ฉ์๋๊ฐ ์์ต๋๋ค . ์์งํ ๊ธฐ๋ณธ ๊ตฌํ์ ๋์์ง ์์ต๋๋ค.
public boolean equals(Object obj) { return (this == obj); }
Object ํด๋์ค ์์ฒด ์์ equals() ๋ฉ์๋๋ ๋ ์ฐธ์กฐ์ ๋น๊ต๋ก ๊ตฌํ๋ฉ๋๋ค. ์ฐจ๋ก๋ก ๊ฐ์ฒด๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๋น๊ตํ๋ ค๋ฉด ํน์ ๊ฐ์ฒด์ ๋ํ ํน์ ํ๋ก๊ทธ๋จ๊ณผ ๊ด๋ จ๋ ๊ธฐ์ค์ ๋ฐ๋ผ ์ด ๋ฐฉ๋ฒ์ ์ฌ์ ์ํด์ผ ํฉ๋๋ค. ํ๋ฑ์ ๊ธฐ์ค์ ๋น์ ์๊ฒ ๋ฌ๋ ค ์์ต๋๋ค.
์์ง ๋ง์์ผ ํ ์ ์ผํ ๊ฒ์ equals() ๋ฅผ ์ ์ ํ๊ฒ ์ฌ์ ์ํ๊ธฐ ์ํ ์๊ตฌ ์ฌํญ ๋ชฉ๋ก์ ๋๋ค . ์ธํฐ๋ท์์ ์ฝ๊ฒ ์ฐพ์ ์ ์์ต๋๋ค.
-
์ ์ ๋ฉ์๋์์ ๋น์ ์ ๋ณ์ ์ฌ์ฉ(๋๋ ๊ทธ ๋ฐ๋).
"์ ์ ์ปจํ ์คํธ์์ ๋น์ ์ ๋ณ์ x๋ฅผ ์ฐธ์กฐํ ์ ์์ต๋๋ค"๋ผ๋ ๋ฉ์์ง๋ฅผ ๋ณธ ์ ์ด ์๋ค๋ฉด ํด๋ฝ์ ์ค์ ๊ฒ์ ํ์ํฉ๋๋ค :)
์ ์ ๋ฉ์๋๋ ๋น์ ์ (์ธ์คํด์ค) ๋ณ์์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
์ด๋ ์๋ฏธ๊ฐ ์์ต๋๋ค. ๊ฒฐ๊ตญ ์ ์ ๋ฉ์๋๋ ํด๋น ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ง ์๊ณ ํธ์ถํ ์ ์์ผ๋ฉฐ ๋ชจ๋ ํ๋๋ ํน์ ๊ฐ์ฒด์ ์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์ ์ค๋ฅ๋ฅผ ์ผ์ผํค๋ ๋ชจ์์ด ์์ต๋๋ค.
๊ทธ๊ฑด ๊ทธ๋ ๊ณ , ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ๊ฐ๋ ์ ์๋ํฉ๋๋ค. ์ ์ ์ด ์๋ ๋ฉ์๋์์ ์ ์ ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
public class Main { public int x = 10; public static int staticX = 100; public static void main(String[] args) { System.out.println(x); // Compilation error - you can't do this! } public void printX() { System.out.println(staticX); // But you can do this! } }
-
์ธ์๊ฐ ๋ฉ์๋์ ์ ๋ฌ๋๋ ๋ฐฉ์(์ฐธ์กฐ ๋๋ ๊ฐ)์ ๋ํ ์คํด.
๊ฐ์ฒด์ ํ๋ฆฌ๋ฏธํฐ๋ธ๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๋ฉ์๋์ ์ ๋ฌ๋ฉ๋๋ค. ๋์งธ, ๊ฐ์ผ๋ก.
์ด๋ณด์๋ ์ข ์ข ์ด ๊ฐ๋ ์ ์ดํดํ๊ธฐ ์ด๋ ต์ต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ ์ฝ๋๊ฐ ์๊ธฐ์น ์๊ฒ ์๋ํฉ๋๋ค.
public class Main { public static void main(String[] args) { int x = 7; incrementNumber(x); System.out.println(x); Cat cat = new Cat(7); catLevelUp(cat); System.out.println(cat.getAge()); } public static void catLevelUp(Cat cat) { cat.setAge(cat.getAge()+1); } public static void incrementNumber(int x) { x++; } }
์ด๋ค ์ซ์๊ฐ ์ฆ๊ฐํ๊ณ ์ด๋ค ์ซ์๊ฐ ์ฆ๊ฐํ์ง ์์์ง ์ ํํ ๋ชจ๋ฅธ๋ค๋ฉด(ํ๋ฒํ ์ด์ ์ซ์ ๋๋ ๊ณ ์์ด์ ๋์ด) ์ฃผ์ ์ ๋ํ ๊ฐ์๋ฅผ ๋ค์ ์ฝ์ผ์ญ์์ค .
-
์ฝ๋ฉ ๊ท์น์ ๋ฌด์ํฉ๋๋ค.
์ด๋ ํน์ "๊ธฐ์ ์ " ์์น ์ค์๋ฟ๋ง ์๋๋ผ ์ผ์์ ์ธ ๋ช ๋ช ๊ท์น์๋ ์ ์ฉ๋ฉ๋๋ค.
์ด ๋ชจ๋ ๊ท์น(๋ณ์ ์ด๋ฆ ์ง์ ๋ฐฉ๋ฒ, ๋ฉ์๋ ์ด๋ฆ ์์ฑ ๋ฐฉ๋ฒ)์ ์ด์ ๊ฐ ์์ด์ ๋ง๋ค์ด์ก์ต๋๋ค. ์ฝ๋์ ๊ฐ๋ ์ฑ์ ์ง์ ์ผ๋ก ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
๊ฒฐ๊ตญ, ์ฝ๋๋ ํญ์ ๋น์ ๋ง์ ๊ฒ์ด ์๋๋๋ค. ํ์ฌ์ ๋ค๋ฅธ ํ๋ก์ ํธ๋ก ์ ์ก๋ ์ ์์ต๋๋ค. ๋น์ ์ ์ฝ๋๋ฅผ ๋ฌผ๋ ค๋ฐ์ ๋น์ ์ ๋๋ฃ๋ค์ ๋ถ๋ช ํ ๋ค์๊ณผ ๊ฐ์ ๊ฒ์ ๋ณด๊ณ ๊ธฐ๋ปํ์ง ์์ ๊ฒ์ ๋๋ค.
public class Cat { private int S_O_M_E_T_H_I_N_G = 7; public String striiiiiiiiiiiiiing; protected double I_HAVE_NO_IDEA_WHAT_THIS_IS = 3.14; boolean random = Math.random() > 0.5; }
๊ทํ์ ์ฝ๋๋ ๋งค์ฐ ๋ฐ์ด๋ ์ฑ๋ฅ์ ๊ฐ์ง ์ ์์ง๋ง ์ค์ ์๋ ๋ฐฉ์์ ์ฝ๊ณ ์ดํดํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ๋ค๋ฉด ์์, ๋ณ๋ก ๊ฐ์น๊ฐ ์์ต๋๋ค.
์ฝ๋ฉ ํ์ค์ ๊ณ ์ํ๋ค๋ฉด ์ฝ๋๊ฐ ์ด์์ ์ด์ง ์๋๋ผ๋ ์ต์ํ ๊ฒฝํ์ด ๋ง์ ๋๋ฃ๊ฐ ๊ธฐ์ ์ ์ธ ๊ด์ ์์ ์ฝ๋๋ฅผ ๊ฐ์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์๋ ค์ค ์ ์์ต๋๋ค. :)
-
String ํด๋์ค์ ๋ํ ์คํด
public class Main { public static void main(String[] args) { String s1 = "I'm learning Java"; String s2 = new String("I'm learning Java"); System.out.println(s1 == s2); } }
์ด ์ฝ๋๊ฐ false ๋ฅผ ํ์ํ๋ ์ด์ ๋ฅผ ๋ชจ๋ฅธ๋ค๋ฉด ๋น์ฐํ ์ง์์ ๊ฐํํด์ผ ํฉ๋๋ค. :)
์ด๋ณด์๋ ์ข ์ข String Pool ๊ณผ ๊ทธ๊ฒ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ์์ง ๋ชปํฉ๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ๊ทธ๋ค์ ์ฝ๋์์ ๋ฌธ์์ด์ ์ ์ ํ๊ฒ ๋น๊ตํ๋ ๋ฐฉ๋ฒ์ ์์ ํ ์ดํดํ์ง ๋ชปํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์์ ์ค ํ๋ ์์ ์ด ์ฃผ์ ๋ฅผ ์์ธํ ์ดํด๋ณด์์ต๋๋ค .
-
์์ธ๋ฅผ ์๋ชป ์ฒ๋ฆฌํฉ๋๋ค.
์ด์ฌ์๋ง ์ด๊ฒ์ ๊ฑธ๋ ค ๋์ด์ง๋ ๊ฒ์ ์๋๋๋ค. ์๋ จ๋ ๊ฐ๋ฐ์๋ ์ค์ํฉ๋๋ค. ๊ทธ ์ด์ ๋ ๋ง์ต๋๋ค.
์ฒซ์งธ, ๋ณดํธ์ ์ธ ๋ ์ํผ๋ ์์ต๋๋ค. ํ๋ก๊ทธ๋จ์๋ ๋ชจ๋ ์ข ๋ฅ์ ๋ค์ํ ์ค๋ฅ์ ๋ค์ํ ์ค๋ฅ ์ฒ๋ฆฌ ์๋๋ฆฌ์ค๊ฐ ์์ต๋๋ค.
๋์งธ, ๋ชจ๋ ์ฌ๋์ด ์คํ ์ถ์ ์ ๊ตฌ์กฐ๋ฅผ ์ดํดํ๋ ๊ฒ์ ์๋๋๋ค. ๋ง์ ์ค๋ฅ ์ฒ๋ฆฌ ์ํฐํจํด์ด ์์ผ๋ฉฐ, ๊ฐ๊ฐ์ ๊ณ ์ ํ ๋ฐฉ์์ผ๋ก "์๋ชป" ์์ต๋๋ค. ์ด๊ฒ์ ๋ค๋ฅธ ์ด๋ค ๊ฒ๋ณด๋ค ์ค๋ฅ ์ฒ๋ฆฌ๋ฅผ ์๋ชป ์ฒ๋ฆฌํ๋ ๊ฒ์ด ํจ์ฌ ๋ ์ฝ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
-
์ฐ์ฐ์(์ฐ์ , ๋ ผ๋ฆฌ ๋ฐ ๊ธฐํ)์ ์๋ ๋ฐฉ์์ ์์ ํ ์ดํดํ์ง ๋ชปํฉ๋๋ค.
๋ค์์ ๊ฐ๋จํ ์์ ๋๋ค. ์ด ์ฝ๋๊ฐ ๋ฌด์์ ํ์ํ ์ง ๋ฐ๋ก ์ ์ ์์ต๋๊น?
public class Main { public static void main(String[] args) { int i = 6; System.out.println(7 == i++); } }
๋ต์ด ํ๋ ธ๊ฑฐ๋ ์ถ์ธก๋ง ํ๋ค๋ฉด ์ฌ์ ํ ์ด ๋ถ์ผ์ ์ง์ ๊ฒฉ์ฐจ๊ฐ ์๋ ๊ฒ์ ๋๋ค :)
๋๋ฑ ์ฐ์ฐ์( == )๊ฐ ํ์ ์ฆ๋ถ ์ฐ์ฐ์( ++ )๋ณด๋ค ์ฐ์ ์์๊ฐ ๋๊ธฐ ๋๋ฌธ์ ์ฝ๋๋ false ๋ฅผ ํ์ํฉ๋๋ค . ๋ฐ๋ผ์ 7 == i ๋น๊ต๊ฐ ๋จผ์ ์ํ๋๊ณ ๊ทธ ๋ค์์ i++ ์ฐ์ฐ์ด ์ํ๋ฉ๋๋ค.
๊ทธ๊ฑด ๊ทธ๋ ๊ณ , ์ฐ๋ฆฌ๋ ์ด๊ฒ์ ๋ํ ์์ธํ ๊ตํ๋ ๋ฐ์์ต๋๋ค. ๋์น ๊ฒฝ์ฐ ๋งํฌ ์ ๋๋ค .
-
switch ๋ฌธ ์์ ๋จ์ด break๋ฅผ ์๋ตํฉ๋๋ค .
์ด ๊ธฐ์ฌ๋ฅผ ์ฝ๋ ๋ง์ ์ฌ๋๋ค์ด ๋ถ๋ช ํ ์ด๋ฐ ์ค์๋ฅผ ์ ์ง๋ ์ต๋๋ค! :)
public class Main { public static void main(String[] args) { int i = 1; switch (i) { case 1: { System.out.println("The number is equal to 1"); } case 2: { System.out.println("The number is equal to 2"); } case 3: { System.out.println("The number is equal to 3"); } } } }
๊ฒฐ๊ณผ์ ์ผ๋ก ์คํ์ ๊ฐ๋ฅํ ๋ชจ๋ ์ต์ ์ ํตํด ๋์ด์ง๋๋ค.
์ฐ์ถ:
์ซ์๋ 1์ ๋๋ค ์ซ์๋ 2์ ๋๋ค ์ซ์๋ 3์ ๋๋ค
์ต์ ์ค ํ๋์ ์คํ์ด ์๋ฃ๋๋ฉด break ๋ฌธ์ switch ๋ฌธ์ ์คํ ์ ์ค๋จ ํฉ๋๋ค . ์์ง ๋ง์ธ์ ๊ทธ๋ ์ง ์์ผ๋ฉด ์๊ธฐ์น ์์ ๊ฒฐ๊ณผ๊ฐ ๋ํ๋ ์ ์์ต๋๋ค :)
์ด๋ณด ํ๋ก๊ทธ๋๋จธ๊ฐ ํํ ์ ์ง๋ฅด๋ 8๊ฐ์ง ์ค์
์๋
! ์ค๋ ์ฐ๋ฆฌ๋ ์ด๋ณด(๋ฐ ๊ธฐํ) Java ๊ฐ๋ฐ์๊ฐ ์ ์ง๋ฅด๋ 8๊ฐ์ง ๋งค์ฐ ์ผ๋ฐ์ ์ธ ์ค์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์น์์ ์ด๋ฌํ ๋ชฉ๋ก์ ๋ง์ด ์ฐพ์ ์ ์์ต๋๋ค. ๋๋ถ๋ถ์ ์๋ก ๋น์ทํฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ ๋ชฉ๋ก์ ์์ฑํ ๋ ์ฐ๋ฆฌ๋ ํ๋์ ๊ธฐ์ค์ ๋ฐ๋ผ ์๋ด๋์์ต๋๋ค: ์ฐ๋ฆฌ๊ฐ ๊ณต๋ถํ๋ ๋์ ๋๋ ๊ณ ์ฉ ์ค์ ์ค์๋ฅผ ์ ์ง๋ ๋์ง ์ฌ๋ถ :) ๊ทธ๊ฒ๋ค์ ์ค์๋์ ๋ฐ๋ผ ๋ถ๋ฅ๋์ง ์์ต๋๋ค. ๊ทธ๊ฒ๋ค์ ๋น์ ์ด ์ดํดํ๊ณ ๊ธฐ์ตํ๋ ๋ฐ ๋๊ฐ์ด ์ค์ํฉ๋๋ค.
GO TO FULL VERSION