๋ฐฐ์ด(Array)์ ๊ฐ์ ์๋ฃํ์ ๋ฐ์ดํฐ๋ฅผ ์ฐ์์ ์ผ๋ก ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
์๋ฐ์์ ๋ฐฐ์ด์ ํ ๋ฒ ์์ฑ๋๋ฉด ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค๋ ํน์ง์ด ์๋ค.
โ ๊ฐ์ ์๋ฃํ์ ๊ฐ๋ง ์ ์ฅ ๊ฐ๋ฅ
โ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ ๊ณ ์ ๋จ (๋์ ํฌ๊ธฐ ๋ณ๊ฒฝ ๋ถ๊ฐ)
โ ์ธ๋ฑ์ค(0๋ถํฐ ์์)๋ฅผ ํตํด ์ ๊ทผ ๊ฐ๋ฅ
โ ๋ฐฐ์ด์ ๊ธธ์ด๋ ๋ฐฐ์ด๋ช
.length
๋ก ํ์ธ ๊ฐ๋ฅ
int[] arr1 = new int[5]; // ํฌ๊ธฐ๊ฐ 5์ธ ์ ์ํ ๋ฐฐ์ด ์ ์ธ
int[] arr2 = {10, 20, 30, 40, 50}; // ๋ฐฐ์ด ์ ์ธ๊ณผ ๋์์ ์ด๊ธฐํ
import java.util.Arrays;
import java.util.Scanner;
public class C01ArrayMain {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); // ์ฌ์ฉ์ ์
๋ ฅ์ ๋ฐ๊ธฐ ์ํ Scanner ๊ฐ์ฒด ์์ฑ
int[] arr = new int[5]; // ํฌ๊ธฐ๊ฐ 5์ธ ์ ์ํ ๋ฐฐ์ด ์ ์ธ
System.out.println("5๊ฐ์ ์ ์๋ฅผ ์
๋ ฅํ์ธ์:");
// ์ฌ์ฉ์ ์
๋ ฅ์ ๋ฐฐ์ด์ ์ ์ฅ
for (int i = 0; i < arr.length; i++) {
arr[i] = sc.nextInt(); // ๊ฐ ์ธ๋ฑ์ค์ ์
๋ ฅ๊ฐ ์ ์ฅ
}
// ๋ฐฐ์ด ์ถ๋ ฅ (์ผ๋ฐ for๋ฌธ)
System.out.println("๋ฐฐ์ด ์ถ๋ ฅ (for๋ฌธ ์ฌ์ฉ):");
for (int i = 0; i < arr.length; i++) {
System.out.println(i + ". " + arr[i]);
}
// ๋ฐฐ์ด ์ถ๋ ฅ (for-each ๋ฌธ)
System.out.println("๋ฐฐ์ด ์ถ๋ ฅ (for-each๋ฌธ ์ฌ์ฉ):");
for (int el : arr) {
System.out.println(el);
}
// ๋ฐฐ์ด ์ถ๋ ฅ (๋๋ค ์คํธ๋ฆผ)
System.out.println("๋ฐฐ์ด ์ถ๋ ฅ (๋๋ค ์คํธ๋ฆผ ์ฌ์ฉ):");
Arrays.stream(arr).forEach(System.out::println); // ์คํธ๋ฆผ์ ํ์ฉํ์ฌ ์ถ๋ ฅ
// ๋ฐฐ์ด ์ต๋๊ฐ๊ณผ ์ต์๊ฐ ์ถ๋ ฅ
System.out.println("MAX : " + Arrays.stream(arr).max().getAsInt()); // ์ต๋๊ฐ
System.out.println("MIN : " + Arrays.stream(arr).min().getAsInt()); // ์ต์๊ฐ
sc.close(); // Scanner ๋ซ๊ธฐ
}
}
โ
๋ฐฐ์ด ์
โ ๋ฐฐ์ด์ ์ฌ์ฉ์ ์
๋ ฅ ์ ์ฅ (Scanner
ํ์ฉ)
โ for
, for-each
, ๋๋ค ์คํธ๋ฆผ
์ ์ฌ์ฉํ์ฌ ๋ฐฐ์ด ์ถ๋ ฅ
โ ๋ฐฐ์ด์ ์ต๋๊ฐ, ์ต์๊ฐ ์ฐพ๊ธฐ (Arrays.stream(arr).max().getAsInt()
)
๋ฐฐ์ด์ ๋ณต์ฌํ ๋ ์์ ๋ณต์ฌ(Shallow Copy)์ ๊น์ ๋ณต์ฌ(Deep Copy) ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค.
๋ณต์ฌ ๋ฐฉ์ | ๊ฐ๋ | ํน์ง |
---|---|---|
์์ ๋ณต์ฌ | ๋ฐฐ์ด์ ์ฐธ์กฐ(์ฃผ์) ๋ณต์ฌ | ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ โ ์๋ณธ ๋ณ๊ฒฝ ์ ๋ณต์ฌ๋ณธ๋ ๋ณ๊ฒฝ๋จ |
๊น์ ๋ณต์ฌ | ๋ฐฐ์ด์ ๊ฐ์ ์๋ก์ด ๋ฐฐ์ด์ ๋ณต์ฌ | ๋ ๋ฆฝ์ ์ธ ๋ฐฐ์ด โ ์๋ณธ ๋ณ๊ฒฝํด๋ ๋ณต์ฌ๋ณธ ์ํฅ ์์ |
int arr1[] = {10, 20, 30}; // ์๋ณธ ๋ฐฐ์ด
int arr2[] = arr1; // ๊ฐ์ ์ฃผ์๋ฅผ ๊ณต์ ํ๋ ์์ ๋ณต์ฌ
arr1[0] = 100; // arr1์ ๋ณ๊ฒฝํ๋ฉด arr2๋ ๊ฐ์ด ๋ณ๊ฒฝ๋จ
System.out.println(Arrays.toString(arr1)); // [100, 20, 30]
System.out.println(Arrays.toString(arr2)); // [100, 20, 30]
โ
๊ฐ์ ๋ฐฐ์ด์ ๊ฐ๋ฆฌํค๋ฏ๋ก arr1
์ ๋ณ๊ฒฝํ๋ฉด arr2
๋ ๋ณ๊ฒฝ๋จ
int arr3[] = new int[arr1.length]; // ์๋ก์ด ๋ฐฐ์ด ์ ์ธ
for (int i = 0; i < arr1.length; i++) {
arr3[i] = arr1[i]; // ๊ฐ ํ๋์ฉ ๋ณต์ฌ (์์ ํ ๋ณ๋ ๋ฐฐ์ด)
}
โ ์๋ก์ด ๋ฐฐ์ด์ ์์ฑํ๊ณ , ์๋ณธ ๋ฐ์ดํฐ๋ฅผ ์ง์ ๋ณต์ฌํ์ฌ ๋ ๋ฆฝ์ ์ธ ๋ฐฐ์ด ์์ฑ
โ 2์ฐจ์ ๋ฐฐ์ด์ ํ(row)๊ณผ ์ด(column)๋ก ๊ตฌ์ฑ๋ ๋ฐฐ์ด
โ ๋ฐฐ์ด๋ช
.length
โ ํ์ ๊ฐ์๋ฅผ ์๋ฏธ
โ ๋ฐฐ์ด๋ช
[i].length
โ i๋ฒ์งธ ํ์ ์ด ๊ฐ์๋ฅผ ์๋ฏธ
int arr[][] = {
{ 10, 20, 30 },
{ 40, 50, 60, 65, 67 },
{ 70, 80, 90, 96, 11, 56 },
{ 100, 110, 120, 15, 22, 33, 44 },
};
โ ๊ฐ ํ์ ํฌ๊ธฐ๊ฐ ๋ค๋ฅธ ๊ฐ๋ณ ๊ธธ์ด ๋ฐฐ์ด ์ ์ธ ๊ฐ๋ฅ
โ ๊ธฐ๋ณธ ์๋ฃํ ๋ฐฐ์ด(int[]
)๊ณผ ๋ฌ๋ฆฌ ๊ฐ์ฒด ๋ฐฐ์ด์ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์ ์ฅํ๋ ๋ฐฐ์ด
โ ๋ฐฐ์ด ์์์ ๊ฐ์ฒด๋ฅผ ํ ๋นํ ํ ์ฌ์ฉํด์ผ ํจ!
class C04Person {
String name;
int age;
// ๋ํดํธ ์์ฑ์
public C04Person() {}
// ๋ชจ๋ ์ธ์๋ฅผ ๋ฐ๋ ์์ฑ์
public C04Person(String name, int age) {
this.name = name;
this.age = age;
}
// toString() ์ฌ์ ์
@Override
public String toString() {
return "C04Person [name=" + name + ", age=" + age + "]";
}
}
public class C04ClassArrayMain {
public static void main(String[] args) {
// ๊ฐ์ฒด ๋ฐฐ์ด ์ ์ธ
C04Person list[] = new C04Person[3];
// ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ๋ฐฐ์ด์ ์ ์ฅ
list[0] = new C04Person("ํ๊ธธ๋", 55);
list[1] = new C04Person("๊น์ํฌ", 35);
list[2] = new C04Person("๊น๋ฒ์", 40);
// ๋ฐฐ์ด์ ์ด์ฉํ์ฌ ๊ฐ์ฒด ์ ๋ณด ์ถ๋ ฅ
for (C04Person person : list) {
System.out.println(person); // toString() ์๋ ํธ์ถ
}
}
}
โ
๊ฐ์ฒด ๋ฐฐ์ด์ ํ์ฉํ์ฌ ์ฌ๋ฌ ๊ฐ์ C04Person
๊ฐ์ฒด๋ฅผ ๊ด๋ฆฌ
โ
toString()
์ ์ฌ์ ์ํ์ฌ ๊ฐ์ฒด ์ ๋ณด๋ฅผ ์ฝ๊ฒ ์ถ๋ ฅ