λ°°μ΄μ λνμ¬ κ³΅λΆνλ€.
-> μ
λ ₯ν κ°μ λ§νΌ λ³μ μμ±
-> μ
λ ₯ν κ°μ λ§νΌ μ΄κΈ°κ° μ
λ ₯
=> λ²κ±°λ‘λ€.
=> νλ²μ κ°λ₯!
int[] nums = new int[3];
nums[3] = 400;
java.lang.ArrayIndexOutOfBoundsException:Index 3 out of bounds for length 3
λΌλ μ€λ₯κ° λ°μνλ€. μ΄λ λ°°μ΄μ λ²μλ₯Ό λ²μ΄λ¬λ€λ μ€λ₯μ΄λ€. μ€μ λ‘ λ°°μ΄μ μ¬μ©ν λ λ§μ΄ λ°μνλ μ€λ₯μ΄λ―λ‘ μμλλ©΄ μ’λ€.
-> νμν΄μΌ νλ€.
-> forλ¬Έμ μ¬μ©νλ€.
for (int i = 0; i < nums.length; i++) {
nums[i] = i;
}
for (int i = 1; i <= 10; i++) { // μ΄λ κ²λ μ μν¨
}
for (int i = 0; i < 10; i++) { // μ μ
}
μ 보λ€λ μλμ μ΄κΈ°μκ³Ό 쑰건μμ λ§μ΄ μ΄λ€.
λ¨, λ°°μ΄μ μ μΈνλ€λ κ²μ λ°°μ΄ λ΄ μλ£νμ μ μ₯ν λ³μλ₯Ό μμ±νλ€λ μλ―Έμ΄λ€.
λ³μλ§ μμ±νκ³ λ΄λΆμ κ°μ μ νμ§ μμΌλ©΄ λ°°μ΄μ μ΄κΈ°κ°μΌλ‘ μ€μ λμ΄μλ€.
-> μ€μ λ‘ μ μ©ν κ°μ μλ€κ³ 보면 λλ€.
=> λ°°μ΄μ μ²μλΆν° μ¬μ©νλ μ΅λ κΈΈμ΄λ₯Ό 미리 μμΈ‘ν΄μΌ νλ€.(λμ€μ μμ ν μ μλ€.)
ex) μ¬μ©μμκ² μ«μλ₯Ό μ λ ₯λ°κ³ , μ΄λ₯Ό λ°°μ΄μ ν¬κΈ°λ‘ μ ν μ μλ€.
κ°ν λ³΅μ¬ -> Side Effectκ° λ°μνμ§ μλλ€.
κ°λ°μκ° λ§λλ λͺ¨λ μ§μ λ³μλ stackμ μμ±λλ€.
κ°ν λ³μλ stackμμ μ€μ κ°μ΄ λ€μ΄μλ€.
μ°Έμ‘°ν λ³μλ stackμμ μ€μ κ°μ΄ μλ, λ°μ΄ν°μ μ£Όμ(μ°Έμ‘°κ°)μ΄ λ€μ΄μλ€.
newκ° λΆμ΄μμΌλ©΄ stackμ΄ μλλΌ heapμ μ€μ κ°μ΄ μ μ₯λλ€κ³ μκ°νμ.
λ°°μ΄ μμ± μ μ€μ κ°μ heapμ μκΈ΄λ€.
λ°°μ΄λͺ
μ stackμ μμ±λλ€.
λ°°μ΄ λ³μλΌλ¦¬μ 볡μ¬λ μ£Όμκ° λ³΅μ¬λ€.
μλ³Έκ³Ό 볡μ¬λ³Έ λ°°μ΄μ κ°μ μ£Όμκ°μ κ°μ§ λ, κ°μ λ°°μ΄μ κ°λ¦¬ν¨λ€.
-> λ μ€ νλλ₯Ό μ‘°μνλ©΄ λλ¨Έμ§ λ°°μ΄λ μν₯λ°λλ€.
-> Side Effectκ° λ°μνλ€.
-> μ‘°μ¬!!
μ΄λ κ°μ μ£Όμκ°μ κ°μ§ μμ 볡μ¬μ κ·Έλ¦Όμ΄λ€.
heapμ stackμ κ±°μ³μΌλ§ μ κ·Όμ΄ κ°λ₯νλ€.
μμ 볡μ¬μ κΉμ 볡μ¬, κ°λ°μκ° μ κ·Όνλ stackμ κ·Έλ¦Όμ΄λ€.
λ€ν(dump): κ°μ²΄μ μνλ₯Ό νλμ λ¬Έμμ΄λ‘ νμ΄λ΄λ νλ.
int[] nums = new int[3];
/// ...
Arrays.toString(nums); // λ°°μ΄ λ΄μ κ°μ StringμΌλ‘ λ³ν.
System.out.println(Arrays.toString(nums)); //dump. λ°°μ΄μ μμλ₯Ό λͺ¨λ νλμ λ³Ό μ μλ€.
Arrays.copyOfRange(nums, 0, nums.length); //0 ~ length-1κΉμ§ κΉμ볡μ¬λ₯Ό νλ€.
μ΄κΈ°ν κ·μΉ
1. μ μ λ°°μ΄ -> 0
2. μ€μ λ°°μ΄ -> 0.0
3. λ¬Έμ λ°°μ΄ -> \0 -> μ½μμμλ μΆλ ₯ν΄λ μ€μ λ‘ μ보μΈλ€.
4. λ
Όλ¦¬ λ°°μ΄ -> false
5. μ°Έμ‘°ν λ°°μ΄ > null
λ°°μ΄ μ΄κΈ°ν 리μ€νΈ
//1λ² λ°©λ²
int[] nums = new int[3];
// μ΄κΈ°ν
nums[0] = 100;
nums[1] = 200;
nums[2] = 300;
//2λ² λ°©λ²
int[] nums2 = new int[] { 100, 200, 300 }; // 0, 0, 0 μλκ³ μ²μλΆν° 100, 200, 300μΌλ‘ μ΄κΈ°ν
//3λ² λ°©λ²
int[] nums3 = { 100, 200, 300 };
System.out.println(Arrays.toString(nums3));
String[] names1 = new String[3];
//λ°°μ΄μ μλ£νμ΄ λ¬λΌλ μ΄κΈ°ν λ°©λ²μ κ°λ€.
μ λ ¬ ꡬν λ°©λ²
1. κ°λ°μκ° μ§μ ꡬν
2. JDK or Library μ¬μ© -> μ΄ λ°©λ²μ μ£Όλ‘ μ¬μ©νλ€.
for (int i = 0; i < nums.length - 1; i++) { // 0, 1, 2, 3 > cycle
for (int j = 0; j < nums.length - 1 - i; j++) { // λΉκ΅ ν μ€μ.
if (nums[j] > nums[j + 1]) { // μ€λ¦μ°¨μ. λ΄λ¦Όμ°¨μμΌλ‘ νλ €λ©΄ λ±νΈ λ°©ν₯λ§ λ°κΏμ£Όλ©΄ λλ€.
int temp = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = temp;
}
}
}
System.out.println(Arrays.toString(nums));
Arrays.sort(nums);
λ μλ€. μ΄λ ν΅ μ λ ¬, μ€λ¦μ°¨μμ΄λ€.
λ°°μ΄ λ¬Έμ λ₯Ό νμλ€. Q061 ~ Q069 9λ¬Έμ νμλ€.