Variable
λ³μλ κ°μ μ μ₯ν μ μλ λ©λͺ¨λ¦¬μ νΉμ λ²μ§μ λΆμ΄λ μ΄λ¦μ΄λ€.
Javaμ λ³μλ λ€μν νμ
μ κ°μ μ μ₯ν μκ° μλ€.
λ§μ½ int νμ
μΌλ‘ μ μΈν λ³μμ boolean νμ
μ λ°μ΄ν°λ₯Ό μ μ₯ν μ μλ€.
κ·Έλμ μ μ νμ
(int,
long
)μλ μ μν λ°μ΄ν°, μ€μ νμ
(float
, double
)μλ μ€μν λ°μ΄ν°λ§ λ€μ΄κ° μ μλ€. λ°°μ΄λ λ§μ°¬κ°μ§μ΄λ€.
Declaring Variables / Initializing Variables
λ³μ μ μΈ
-
λ°μ΄ν° νμ (κΈ°λ³Έν / μ°Έμ‘°ν) μ μΈ
-
λ³μλͺ μ μΈ
// νλμ λ³μλ§ μ μΈνλ κ²½μ° int num1; boolean check1; // νλ μ΄μμ λ³μλ₯Ό μ μΈνλ κ²½μ° int num2, num3, num4; boolean check2, check3, check4;
-
λ³μλ₯Ό μ μΈνκΈ° μν΄μλ λ³μλͺ μ μΈ μ‘°κ±΄κ³Ό μμ½μ΄μ λν κ·μΉμ νμ νκ³ μ μΈν΄μΌ νλ€.
μμ± κ·μΉ | μμ |
λ³μλͺ 첫 λ²μ§Έ λ¬Έμλ μ«μλ‘ μμν μ μλ€. | κ°λ₯ : index, $hello, my_name λΆκ°λ₯ : 1_index, 10num, 5str |
μμλ λμλ¬Έμλ₯Ό ꡬλΆνλ€. | λ³μ strμ Strλ λ€λ₯Έ λ³μμ΄λ€. |
Java μμ½μ΄λ μ¬μ©ν μ μλ€. | μμ : private, print, public, int λ± |
λ³μλͺ μ κΈΈμ΄λ μ νμ μλ€. |
λ³μ μ΄κΈ°ν
λ³μ μ΄κΈ°νλ λ³μλ₯Ό μ μΈν λ μ€μ λ°μ΄ν°λ₯Ό μ μνλ κ²μ μλ―Ένλ€.
μ΄κΈ°ν νλ λ°©λ²μ λμ μ°μ°μ(=)λ₯Ό μ¬μ©νμ¬ μ μΈν λ³μμ μ€μ λ°μ΄ν°λ₯Ό μ μ₯νλ νμμΌλ‘ ꡬννλ€.
int num1 = 10;
int num2 = 20;
int sum = num1 + num2;
Integer num3 = new Integer();
System.out.println(sum); // 30
λ§μ½ μ΄κΈ°ν λμ§ μκ³ μ μΈλ§ λ λ³μλ₯Ό μ°μ°μ μ§ννλ©΄ μ΄κΈ°νλμ§ μμ λ³μκ° μλ€κ³ μμΈλ₯Ό λ°μμν¨λ€.
int num1 = 10;
int num2;
int sum = num1 + num2;
System.out.println(sum);
// μμΈ λ°μ
java: variable num2 might not have been initialized
Variable Scope / Lifetime
λ³μλ μ μΈλλ μμΉ, μ κ·Ό μ νμμ λ°λΌ μμΈμ€ν μ μλ λ²μκ° λ¬λΌμ§λ€.
Javaμμλ λͺ¨λ μλ³μκ° μ μ μΌλ‘ λ²μνλλ©° ν¨μ νΈμΆ μ€νκ³Όλ λ 립μ μ΄λ€.
λ³μ μ€μ½ν
-
λ©€λ² λ³μ (Class Level Scope)
ν΄λμ€ λ΄μ μ μΈλλ λ³μλ‘ μ κ·Ό μ νμλ₯Ό ν΅ν΄ λ€μν ν΄λμ€, λ©μλμμ μ΄κΈ°ν κ°λ₯νλ©° Setter, Getter λ©μλλ₯Ό μ΄μ©ν΄ μ΄κΈ°ν κ°λ₯νλ€.
public static class MemberVar { private int num1; // Seetter / Getter λ©μλλ₯Ό μ΄μ©ν΄μ μ΄κΈ°ννκ³ , μ¬μ¬μ© public boolean check; // ν΄λΉ ν΄λμ€ λ΄μ μ΄λ€ λ©μλμμλ νΈμΆ final private String talk = "Hello World!"; // μμμ μλ―Έ // method1 λ³μμμ μ κ·Όμ νμκ° staticμΌλ‘ μ μΈλ checkλ₯Ό // trueκ°μΌλ‘ μ΄κΈ°νν ν, ν΄λΉ κ°μ λ°ννλ€. boolean method1() {check = true; return check;} }
-
μ§μ λ³μ (Method Level Scope)
λ©μλ λ΄μμ μ μΈλ λ³μλ‘ ν΄λΉ λ©μλ λ΄μ λμΌν μ΄λ¦μ λ©€λ² λ³μκ° μ¬μ©λμ§ μλλ€λ©΄ κ°μ μ΄λ¦μ μ§μ λ³μλ₯Ό μ μΈν μ μλ€. νμ§λ§ λ³Έμ§μ μΌλ‘ λ©€λ² λ³μμ μ§μ λ³μμ λ°μ΄ν°κ° μ μ₯λ λ©λͺ¨λ¦¬ μ£Όμλ κ°μ§ μλ€.
public static class MethodVar { int num1; public int method1() { int num1 = 1; int num2 = 2; int result = num1 + num2; return result; } public int method2() { num1 = 20; // num1μ κ°μ μ΄λ¦μ μλ‘μ΄ λ³μλ‘ μ μΈνλ©΄ μλ‘ μ μΈλ λ³μμ λ°μ΄ν°κ° λ°νλλ€. // int num2 = 10 + num1; return num2; } }
λ³μ λΌμ΄ννμ
- λ³μμ λΌμ΄ννμμ ν΄λΉ λ³μκ° μΈμ μ΄κΈ°νλλμ§ νΉμ μ΄κΈ°ν, μ μΈλ μμΉκ° μ΄λμ μ‘΄μ¬νλμ§μ λ°λΌ λ¬λΌμ§λ€.
- λ³μμ λΌμ΄ννμμ Garbage Collectionκ³Ό μ°κ΄μ΄ κΉλ€.
- λ©€λ² λ³μ(μΈμ€ν΄μ€ λ³μ)μ κ²½μ°,
ν΄λμ€λ₯Ό μμ±μλ₯Ό ν΅ν΄ μ μ νμ κ²½μ° νλ‘κ·Έλ¨μ μ’ λ£ν λ κΉμ§ λ©λͺ¨λ¦¬ μμ μ‘΄μ¬νλ€. - μ§μ λ³μ(λ‘컬 λ³μ)μ κ²½μ°,
μ μλ ν΄λμ€μ μν΄ λ©μλκ° νΈμΆλμ΄ μ€νλ ν μ’ λ£λλ©΄ λ©λͺ¨λ¦¬ μμμ μ¬λΌμ§λ€.
Type Inference / var Type
νμ μΆλ‘ μ΄λ μ½λ μμ± λΉμ, λ°μ΄ν° νμ μ΄ μ ν΄μ§μ§ μμμ§λ§ μ»΄νμΌλ¬κ° κ·Έ νμ μ μ μΆνλ κ²μ΄λ€.
νμ μΆλ‘ μ Java 10μμ μΆκ°λ μ΄λμ λΌμ΄μ λ₯Ό μ¬μ©νλ λ‘컬 λ³μμ μ ν μΆλ‘ μ΄λ€.
Java 9κ°μ§λ λ‘컬 λ³μμ μ νμ λͺ μμ μΌλ‘ μΈκΈν΄μΌ νκ³ , λ‘컬 λ³μλ₯Ό μ΄κΈ°ννλ λ° μ¬μ©λλ μ΄λμ λΌμ΄μ μ νΈνλλμ§ νμΈν΄μΌ νλ€.
Java 10μμ νμ
μΆλ‘ μ΄ μΆκ°λλ©΄μ λ³μμ λ°μ΄ν° μ νμ λͺ
μνμ§ μμλ λλ€. νμ§λ§ λ³μλ₯Ό μΈμ€ν΄μ€λ‘ μ μνκ³ μ»΄νμΌλ¬μκ² μ΄λ ν λ°μ΄ν° νμ
μΌλ‘ μΈμνκ² ν κ²μΈμ§ λͺ
μν΄μ£Όμ΄μΌ νλ€.(λ§μΉ Javascriptμ var
κ°λ€.)
λν, μ΄λ¬ν νμ μΆλ‘ μ μ΄λμ λΌμ΄μ κ° μλ λ‘컬 λ³μμμλ§ μ¬μ©ν μ μμΌλ©° λ©€λ² λ³μ(μΈμ€ν΄μ€ λ³μ)λ λ©μλ νλΌλ―Έν°, λ¦¬ν΄ μ ν λ±μμ μ¬μ©ν μ μλ€.
public class TypeInference_varType {
public static void main(String[] args) {
// μΌλ°μ μΌλ‘ λ°μ΄ν° νμ
μ μ μΈν λ³μ
String str1 = "Good Bye, Java 9";
// λ°μ΄ν° νμ
μ μ μΈνμ§ μμ var νμ
λ³μ
var str2 = "Hello, Java 10";
System.out.println("str1μ λ¬Έμμ΄ νμ
λ°μ΄ν°μΈκ°? = " + str1 instanceof String);
System.out.println("str1 = " + str1);
System.out.println("str2μ λ¬Έμμ΄ νμ
λ°μ΄ν°μΈκ°? = " + str2 instanceof String);
System.out.println("str2 = " + str2);
// μΌλ°μ μ HashMap μ μΈ
Map<Integer, String> map1 = new HashMap<>();
// varλ₯Ό μ΄μ©ν HashMap μ μΈ
var map2 = new HashMap<Integer, String>();
map1.put(1, "μ 짱ꡬ");
map2.put(1, "μ 짱μ");
System.out.println("map1 = " + map1.get(1));
System.out.println("map2 = " + map2.get(1));
}
}
Data Type Conversion
Data Type Casting
- κ°μ λ‘ νμ μ λ³ννλ κ²μ μλ―Ένλ€.
- κ°μ νμ λ³νμ μΊμ€ν μ°μ°μ κ΄νΈ()λ₯Ό μ¬μ©νλ€.
int a = 10;
int b = 3;
// μ΄ λ, a / b μ°μ°μ κ°μ΄ double λ°μ΄ν° νμ
μΌλ‘ λ³νλλ κ²μ μλλ€.
// a λ³μ μμ μΊμ€ν
μ°μ°μ κ΄νΈκ° μμΌλ a λ³μλ₯Ό double νμ
μ λ°μ΄ν°λ‘ λ³ννλ€.
double c = (double) a / b;
Data Type Promotion
- μλμΌλ‘ νμ λ³νμ΄ μΌμ΄λλ κ²μ μλ―Ένλ€.
- μλ νμ λ³νμ κ°μ νμ© λ²μκ° μμ νμ μ΄ νμ© λ²μκ° ν° νμ μΌλ‘ μ μ₯λ λ λ°μνλ€.
byte byteValue = 10;
int intValue = byte; // byte νμ
λ°μ΄ν°κ° μλμΌλ‘ intλ‘ λ³ν
// float νμ
λ°μ΄ν°κ° long νμ
λ°μ΄ν°μ μ°μ°νλ©΄μ long νμ
μΌλ‘ λ³ν
double doubleValue = 1.4f + 0.2;
Primitive / Reference Type
Primitive Type
- κΈ°λ³Έν λ°μ΄ν° νμ
μΌλ‘ μ΄ 8κ° μ‘΄μ¬νλ€.
- μ μν λ°μ΄ν° νμ → byte, short, char, int, long
- μ€μν λ°μ΄ν° νμ → float, double
- λ Όλ¦¬ν λ°μ΄ν° νμ → boolean
- κΈ°λ³Έκ°μ κ°μ§λ λ°μ΄ν° νμ μΌλ‘ nullμ΄ μ‘΄μ¬νμ§ μλλ€.
- Genericμ μ΄μ©ν λ νμν Wrapper Classκ° μ‘΄μ¬νλ€.
- κΈ°λ³Έν λ°μ΄ν° νμ μ μ€λ λμ Stack λ©λͺ¨λ¦¬μ μ μ₯νλ€.
μ΄λ¦ | λ©λͺ¨λ¦¬ μ¬μ© ν¬κΈ° | μ μ₯λλ κ°μ νμ© λ²μ |
byte | 1byte / 8bit | -128 ~ 127 |
short | 2byte / 16bit | -32,768 ~ 32,767 |
char | 2byte / 16bit | 0 ~ 65535 |
int | 4byte / 32bit | -2,147,483,648 ~ 2,147,483,647 |
long | 8byte / 64bit | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
float | 4byte / 32bit | (1.4 X 10μ -45μ κ³±) ~ (3.4 X 10μ 38μ κ³±) |
double | 8byte / 64bit | (4.9 X 10μ -324μ κ³±) ~ (1.8 X 10μ 308μ κ³±) |
Reference Type
- μ°Έμ‘°ν λ°μ΄ν° νμ μΌλ‘ κΈ°λ³Έν λ°μ΄ν° νμ μ μ μΈν λͺ¨λ νμ μ λ»νλ€.
- μ΅μμ ν΄λμ€μΈ
java.lang.Object
λ₯Ό μμ λ°λλ€. - μ°Έμ‘°ν λ°μ΄ν° νμ (κ°μ²΄)λ Heap λ©λͺ¨λ¦¬μ μ μ₯λλ©° HotSpotμ κΈ°μ€μΌλ‘ μλ¬΄λ° λ°μ΄ν°κ° μλ κ°μ²΄λΌλ 8byteλ₯Ό μ°¨μ§νλ€.
- new, Reflection λ±μΌλ‘ κ°μ²΄λ₯Ό μμ±νλ€.
- Stringμ char νμ μ Array ννλ‘, Arrayλ Reference Typeμ΄κΈ° λλ¬Έμ Stringλ μ°Έμ‘°ν λ°μ΄ν° νμ μ΄λ€.
Literal
Literalμ λ°μ΄ν° κ·Έ μ체λ₯Ό μλ―Ένλ€.
int a = 1;
- aλ λ³μλͺ
, 1μ 리ν°λ΄μ΄λ€.
μ¦, 1κ³Ό κ°μ΄ λ³νμ§ μλ λ°μ΄ν°(boolean, char, double, long, int..)λ₯Ό 리ν°λ΄μ΄λΌκ³ νλ€. - λ μ½κ² μ€λͺ νμλ©΄ λ³μλ μμλ λ©λͺ¨λ¦¬μ ν λΉλ 곡κ°μ μλ―Ένλ λ°λ©΄, 리ν°λ΄μ 곡κ°μ μ μ₯λ λ°μ΄ν° μ체λ₯Ό μλ―Ένλ€.
μ μ 리ν°λ΄
- 2μ§μ
- 0b λλ 0Bλ‘ μμνλ€.
- 0κ³Ό 1λ‘ κ΅¬μ±λλ€.
- 8μ§μ
- 0μΌλ‘ μμνκ³ 0 ~ 7 μ«μλ‘ κ΅¬μ±λλ€.
- 16μ§μ
- 0x λλ 0Xλ‘ μμνλ€.
- 0 ~ 9, A ~ F λλ a ~ fλ‘ κ΅¬μ±λλ€.
// 2μ§μ
int lit2 = 0b11010;
System.out.println(lit2);
// 8μ§μ
int lit8 = 013;
System.out.println(lit8);
// 16μ§μ
int lit16 = 0xB3;
System.out.println(lit16);
Array
1μ°¨μ λ°°μ΄
// 1μ°¨μ λ°°μ΄
// λ°°μ΄ κΈΈμ΄λ§ μ μΈ -> λ°μ΄ν°λ μ μΈνμ§ μμ
int[] arr1_1 = new int[5];
// κΈΈμ΄λ§ μ μΈλ λ°°μ΄μ λ°μ΄ν° μ½μ
for (int i = 0; i < arr1_1.length; i++) {
arr1_1[i] = i;
}
// κ° μΈλ±μ€μ λ€μ΄κ° λ°μ΄ν° μ΄κΈ°νμ λμμ λ°°μ΄ μ μΈ
int[] arr1_2 = {0, 1, 2, 3, 4};
2μ°¨μ λ°°μ΄
// κ° μΈλ±μ€μ λ€μ΄κ° λ°μ΄ν° μ΄κΈ°νμ λμμ λ°°μ΄ μ μΈ
int[] arr1_2 = {0, 1, 2, 3, 4};
// 2μ°¨μ λ°°μ΄
// νκ³Ό μ΄μ κΈΈμ΄λ§ μ μΈ -> λ°μ΄ν°λ μ μΈνμ§ μμ
int[][] arr2_1 = new int[5][5];
// νκ³Ό μ΄μ νλ§ μ μΈλ λ°°μ΄μ λ°μ΄ν° μ½μ
for (int i = 0; i < arr2_1.length; i++) {
for (int j = 0; j < arr2_1[i].length; j++) {
arr2_1[i][j] = j;
}
}
// κ° νμ μ΄μ λ°μ΄ν° μ΄κΈ°νμ λμμ λ°°μ΄ μ μΈ
int[][] arr2_2 = {{0, 1, 2, 3, 4}, {5, 6, 7, 8, 9}, {10, 11, 12, 13, 14}, {15, 16, 17, 18, 19}, {20, 21, 22, 23, 24}};
References
Variable / Primitive / Reference / Literal
- νΌμ 곡λΆνλ μλ°
Type Inference
- νμ μΆλ‘ κ³Ό var νμ
'Programming > Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
F004 - Reference Type (0) | 2021.05.08 |
---|---|
F003 - Access Modifier (0) | 2021.05.06 |
F002 - Primitive Type (0) | 2021.05.06 |
F001 - psvm (0) | 2021.05.06 |
TIL_W01 | JVM, Bytecode, JDK, JRE, JIT Compiler (0) | 2020.12.14 |