-
[Java] μλ° λ°μ΄ν° νμ , λ³μ κ·Έλ¦¬κ³ λ°°μ΄Android/Java 2021. 1. 11. 22:36λ°μν
- μ΄ κΈμ "μ¨λΌμΈ μλ° μ€ν°λ λ΄μ©"μ μ 리ν κΈμ λλ€.
κΈ°λ³Έν νμ (Primitive type)
μλ°λ μ΄ 8κ°μ§μ κΈ°λ³Έν νμ μ 미리 μ μνμ¬ μ 곡ν©λλ€.
κ° νμ μλ κΈ°λ³Έκ°λ€μ΄ μ‘΄μ¬νκΈ° λλ¬Έμ Null κ°μ΄ μ‘΄μ¬ν μ μκ³ , Nullκ°μ λ£κ³ μΆλ€λ©΄ Wrapper ν΄λμ€λ₯Ό νμ©ν΄μΌ ν©λλ€.
κΈ°λ³Έκ°μ μ€μ κ°μΌλ‘ μ€ν λ©λͺ¨λ¦¬μ μ μ₯λ©λλ€.
κΈ°λ³Έν νμ μ νΉμ§μ CPUλ μ΄μ체μ μ λ°λΌ λ³νμ§ μλλ€λ νΉμ§μ΄ μμ΅λλ€.
μ°Έμ‘°ν νμ (Reference type)
κΈ°λ³Έν νμ μ μ μΈν νμ λ€μ λͺ¨λ μ°Έμ‘°ν νμ μΌλ‘ new ν€μλλ‘ κ°μ²΄λ₯Ό μμ±νμ¬ λ°μ΄ν°κ° μμ±λ μ£Όμλ₯Ό μ°Έμ‘°νλ νμ μ λλ€.
μ°Έμ‘° νμ μ λ°μ΄ν°μ ν¬κΈ°κ° κ°λ³μ , λμ μ΄κΈ° λλ¬Έμ λμ λ°μ΄ν°λ₯Ό κ΄λ¦¬νλ ν λ©λͺ¨λ¦¬μ μ μ₯λ©λλ€.
μ°Έμ‘° νμ μ μ’ λ₯λ‘λ ν΄λμ€(class), λ°°μ΄(array), μΈν°νμ΄μ€(interface), μ΄κ±°(Enumeration) μ λλ€.
μμ(constant)μ 리ν°λ΄(literal)
μμ
- μμλ λ³μμ κ°μ΄ κ°μ μ μ₯νλ 곡κ°μ μλ―Ένμ§λ§ ν λ² μ μ₯νλ©΄ λ€λ₯Έ κ°μΌλ‘ λ³κ²½ν μ μλ€λ νΉμ§μ κ°μ§κ³ μμ΅λλ€.
리ν°λ΄
- λ³μκ° μλ κ·Έ μμ²΄λ‘ κ°μ μλ―Ένλ κ²μ λλ€. ex) 2021, 100 ...
- 리ν°λ΄μ μ’ λ₯μλ μ μν, μ€μν, λ¬Έμν, λ Όλ¦¬νμΌλ‘ μ‘΄μ¬ν©λλ€.
λ³μ μ μΈ λ° μ΄κΈ°ν
public class Main { public static void main(String[] args) { // κ° νμ μ μΈ boolean boolean_var; byte byte_var; int int_var; short short_var; long long_var; float float_var; double double_var; char char_var; // κ° νμ μ΄κΈ°ν boolean_var = true; byte_var = 1; int_var = 100; short_var = 32000; long_var = 123456789L; float_var = 0.0F; double_var = 0.0; char_var = 'A'; } }
λ€μ μ½λμ κ°μ΄ κ° νμ μ λ§κ² μ μΈνκ³ μ΄κΈ°νλ₯Ό ν μ μμ΅λλ€. μ μΈκ³Ό μ΄κΈ°νλ₯Ό νκΊΌλ²μλ κ°λ₯ν©λλ€.
λ³μμ μ€μ½νμ λΌμ΄ννμ
- μ°Έμ‘°(https://www.learningjournal.guru/article/programming-in-java/scope-and-lifetime-of-a-variable)
public class ScopeClass { int instance__var = 10; // μΈμ€ν΄μ€ λ³μ static int class_var = 2021; // ν΄λμ€ λ³μ or μ μ λ³μ void changeVar(int argument_var){ int local_var = 20; // μ§μ λ³μ if(argument_var>local_var){ instance__var = argument_var; } else{ instance__var = local_var; } } }
μΈμ€ν΄μ€ λ³μ (Instance Variables)
- ν΄λμ€ λ΄λΆμμ μ μΈλμ΄ μΌλΆ λ©μλ λΈλ‘ λ΄μμ λλ λΈλ‘ λ°μμλ μΈ μ μλ λ³μλ₯Ό μΈμ€ν΄μ€ λ³μλΌκ³ ν©λλ€.
- Scope : static λ©μλλ₯Ό μ μΈν ν΄λμ€ μ 체
- Lifetime : ν΄λμ€μ κ°μ²΄κ° λ©λͺ¨λ¦¬μ μ‘΄μ¬ν λκΉμ§
ν΄λμ€ λ³μ (Class Variables)
- ν΄λμ€ λ΄λΆμμ static ν€μλλ‘ μ μΈλ λ³μλ₯Ό ν΄λμ€ λ³μλΌκ³ ν©λλ€.
- Scope : ν΄λμ€ μ 체
- Lifetime : νλ‘κ·Έλ¨μ΄ λλ λκΉμ§
μ§μ λ³μ (Local Variables)
- μΈμ€ν΄μ€, ν΄λμ€ λ³μκ° μλ λͺ¨λ λ³μλ€μ μ§μ λ³μλΌκ³ ν©λλ€.
- Scope : μ μΈλ λΈλ‘ λ΄
- Lifetime : λ³μκ° μ μΈλ λΈλ‘μ λ²μ΄λ¬μ λκΉμ§
νμ λ³ν, μΊμ€ν , νμ νλ‘λͺ¨μ
- μ°Έμ‘°(https://kephilab.tistory.com/27)
μλ νμ λ³ν (Promotion)
- νμ νλ‘λͺ¨μ μ΄λΌκ³ λ λΆλ¦¬λ μλ νμ λ³νμ νλ‘κ·Έλ¨ μ€ν μ€μ μλμΌλ‘ μΌμ΄λ©λλ€.
- μμ λ²μ νμ μ λ³μκ° ν° λ²μ νμ μ λ³μμ μ μ₯λ λ λ°μν©λλ€.
- byte(1) < short(2) < int(4) < long(8) < float(4) < double(8)
- λ¨, μμκ° μ μ₯λ μ μλ byte, short λ±μ νμ μ΄ charμΌλ‘ μλ νμ λ³νν μ μμ΅λλ€. (μ»΄νμΌ μλ¬)
κ°μ νμ λ³ν (Casting)
- ν° λ²μ νμ μ μμ λ²μ νμ μΌλ‘ μλλ³ν ν μ μκΈ° λλ¬Έμ νμ μ λ°κΎΈκΈ° μν΄μλ κ°μ νμ λ³νμΈ μΊμ€ν μ ν΄μ£Όμ΄μΌ ν©λλ€.
- ν° λ²μ νμ μ λ³μμ κ°μ΄ μμ λ²μλ₯Ό λμ΄κ° κ²½μ° μλμ κ°μ 보쑴ν μ μμ§λ§ μμ λ²μ μμλ μμ μ μλ λ³μλΌλ©΄ κ°μ 보쑴ν μ μμ΅λλ€.
- μλ°μμ λ°μ΄ν° κ° κ²μ¬λ₯Ό μν΄ κ° νμ μ μ΅λκ°, μ΅μκ° μμλ₯Ό μ 곡νλ€. Ex) Int.MAX_VALUE, Int.MIN_VALUE..
public class Main { public static void main(String[] args) { // Promotion Example char char_var = 'A'; int int_var = char_var; // char -> int μλ νλ³ν System.out.println(int_var); // 65 /** byte byte_var = 1; char char_var2 = byte_var; // μ»΄νμΌ μλ¬ **/ int int_var2 = 200; float float_var = int_var2; // int -> float μλ νλ³ν System.out.println(float_var); // 200.0 // Casting Example double double_var = 13.264; int int_var3 = (int)double_var; // double -> int κ°μ νλ³ν System.out.println(int_var3); // 13 /** float float_var2 = 20.0F; int int_var4 = float_var2; // μ»΄νμΌ μλ¬ **/ } }
λ°°μ΄
- λ°°μ΄μ΄λ λμΌν μλ£νμ λ³μλ₯Ό λ μ΄μ ν λΉν κ²μΌλ‘ κ°κ°μ λ©λͺ¨λ¦¬ 곡κ°μ λλν λμ΄ν κ²μ λ§ν©λλ€.
- λ°°μ΄μ λ°μ΄ν°λ₯Ό μΈλ±μ€λ₯Ό ν΅ν΄ νμν μ μμ΅λλ€.
- λ°°μ΄μ μΈλ±μ€λ 0λΆν° μμν©λλ€.
1μ°¨μ λ°°μ΄
public class Main { public static void main(String[] args) { // 1μ°¨μ λ°°μ΄ μ μΈ 3κ°μ§ λ°©λ² int[] arr = new int[5]; int[] arr2 = new int[]{1,2,3}; int[] arr3 = {4,5,6}; // 1μ°¨μ λ°°μ΄ μ΄κΈ°ν arr[0] = 0; arr[1] = 1; arr[2] = 2; arr[3] = 3; arr[4] = 4; int sum = getSum(arr); System.out.println(sum); // 10 } public static int getSum(int[] arr){ int sum = 0; for(int elem : arr){ sum+=elem; } return sum; } }
- λ°°μ΄μ λ νΌλ°μ€ νμ μΌλ‘ λ°μ΄ν° ν¬κΈ°κ° κ°λ³μ μΌλ‘ λ³ν©λλ€.
- λν, new ν€μλλ‘ μμ±ν ν λ°μ΄ν°κ° μ μ₯λ μ£Όμλ‘ μ°Έμ‘°νλ λ°μ΄ν° νμ μ λλ€.
2μ°¨μ λ°°μ΄
public class Main { public static void main(String[] args) { // 2μ°¨μ λ°°μ΄ μ μΈ int[][] arr = new int[3][3]; // 2μ°¨μ λ°°μ΄ μ΄κΈ°ν for(int i=0;i<3;i++){ for(int j=0;j<3;j++){ arr[i][j] = 3*i+j; } } // 0 1 2 // 3 4 5 // 6 7 8 for(int i=0;i<3;i++){ for(int j=0;j<3;j++){ System.out.print(arr[i][j]+" "); } System.out.println(); } } }
νμ μΆλ‘
- Java 10μμ var ν€μλμ ν¨κ» Local Variable Type Inferenceκ° μΆκ°λμμ΅λλ€.
- νμ μΆλ‘ μ νμ μ λͺ μνμ§ μμλ μ»΄νμΌλ¬κ° λ³μμ νμ μ μ μΆνλ κΈ°λ₯μ λλ€.
- κΈ°μ‘΄μ μλ°μμλ μΌλ° λ³μμμλ νμ μΆλ‘ μ΄ μ§μλμ§ μκ³ , genericμ lambda μμμλ§ νμ μΆλ‘ μ μ§μνκ³ μμμ΅λλ€.
- var ν€μλλ₯Ό μ¬μ©ν λλ μ μΈκ³Ό λμμ μ΄κΈ°νκ° νμμ μΌλ‘ μꡬλ©λλ€.
public class Main { public static void main(String[] args) { // Java10 μ΄ν νμ μΆλ‘ μ§μ var no_type_var = "string_var"; System.out.println(no_type_var); // κΈ°μ‘΄ Java9 μ΄μ μλ νμ λͺ μ String string_var = "string_var"; System.out.println(string_var); } }
λ°μν'Android > Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] JUnit5μ΄λ? JUnit ν μ€νΈ λ°©λ² (0) 2021.01.13 [Java] μ°μ°μ (μ°μ , λΉνΈ, κ΄κ³, λ Όλ¦¬) (0) 2021.01.12 [Java] JVMμ΄λ? μλ° μ½λ μ€ν (0) 2021.01.11 [Java] λμμΈ ν¨ν΄(Decorator ν¨ν΄) (0) 2021.01.08 [Java] λμμΈ ν¨ν΄(Adapter ν¨ν΄) (0) 2021.01.07