728x90
목차
1. 배열
■ 배열이란?
- 같은 타입의 데이터를 연속된 공간에 저장하는 자료 구조
- 하나의 변수명으로 동일한 타입의 데이터를 여러개 저장하는 데이터 타입
- 각 데이터 저장 위치는 인덱스를 부여하여 접근
- 반복문을 이용해 배열 요소들을 쉽게 처리 가능
- 배열 인덱스는 0번부터 시작함
- 배열 선언 시 지정한 크기를 넘어서는 인덱스에는 접근 불가
2. 예시
■ Array1
package j12_배열;
public class Array1 {
public static void main(String[] args) {
int num1 = 10;
int num2 = 20;
int num3 = 30;
int num4 = 40;
int num5 = 50;
System.out.println(num1);
System.out.println(num2);
System.out.println(num3);
System.out.println(num4);
System.out.println(num5);
// new가 들어가면 참조 자료형
int[] nums = new int[5];
nums[0] = 10;
nums[1] = 20;
nums[2] = 30;
nums[3] = 40;
nums[4] = 50;
for (int i = 0; i < 5; i++) {
System.out.println(nums[i]);
}
}
}
■ Array2
package j12_배열;
public class Array2 {
public static void printNames(String[] names) {
for (int i = 0; i < names.length; i++) {
System.out.println("이름[" + (i + 1) + "] : " + names[i]);
}
System.out.println();
}
public static void main(String[] args) {
// 들어갈 값이 정해지지 않았을 때, 들어갈 공간이 확실할 경우
String[] names = new String[3];
names[0] = "김상현";
names[1] = "임나영";
names[2] = "김종환";
String[] names2 = new String[] { "이상현", "손지호", "이강용" };
String[] names3 = { "김두영", "강대협", "이현수", "김재영" };
printNames(names);
printNames(new String[] { "이상현", "손지호", "이강용" });
printNames(names3);
}
}
■ Array3
package j12_배열;
import java.util.Iterator;
import java.util.Random;
public class Array3 {
public static void main(String[] args) {
Random random = new Random();
int[] nums = new int[10];
// 무작위 랜덤
System.out.println(random.nextInt(10));
// 랜덤으로 뽑지만 숫자가 겹치지 않음
for (int i = 0; i < nums.length; i++) {
while (true) {
boolean findFlag = true;
int randomNum = random.nextInt(nums.length) + 1;
for (int j = 0; j < nums.length; j++) { // 순차 탐색
if (nums[j] == randomNum) {
findFlag = false;
break;
}
}
if (findFlag) {
nums[i] = randomNum;
break;
}
}
}
for (int i = 0; i < nums.length; i++) {
System.out.println(nums[i]);
}
}
■ Array4
package j12_배열;
public class Array4 {
public static void main(String[] args) {
J12_User[] users = new J12_User[3];
J12_User[] users2 = new J12_User[] { new J12_User("aaa", "1234", "김종환", "aaa@gmail.com"),
new J12_User("bbb", "1234", "이종현", "bbb@gmail.com"),
new J12_User("ccc", "1234", "진채희", "ccc@gmail.com") };
users[0] = new J12_User("aaa", "1234", "김종환", "aaa@gmail.com");
users[1] = new J12_User("bbb", "1234", "이종현", "aaa@gmail.com");
users[2] = new J12_User("ccc", "1234", "진채희", "aaa@gmail.com");
for (int i = 0; i < users.length; i++) {
System.out.println(users[i].toString());
}
}
}
■ Array5
package j12_배열;
public class Array5 {
public static void transferArray(int[] oldArray, int[] newArray) {
for (int i = 0; i < oldArray.length; i++) {
newArray[i] = oldArray[i];
}
}
public static int[] addArrayLength(int[] array) {
int[] newArray = new int[array.length + 1];
transferArray(array, newArray);
return newArray;
}
// 메소드 명만 보고 기능을 판단할 수 있는 코드를 클린 코드임
public static int[] addData(int[] array, int data) {
int[] newArray = addArrayLength(array);
newArray[array.length] = data;
return newArray;
}
public static void main(String[] args) {
int[] nums = new int[0];
nums = addData(nums, 1);
nums = addData(nums, 2);
nums = addData(nums, 3);
nums = addData(nums, 4);
nums = addData(nums, 5);
for (int i = 0; i < nums.length; i++) {
System.out.println(nums[i]);
}
}
}
■ Array6
package j12_배열;
public class Array6 {
public static void main(String[] args) {
String[] names = { "박성진", "조병철", "황창욱" };
// 값을 하나씩 꺼내는 구조라서 뒤돌아갈수 없음
// for(변수 : 배열이나 리스트)
for (String name : names) {
System.out.println(name);
// 변수에다 넣은거지 배열에 넣은게 아님
name = "김준일";
}
System.out.println("========<forEach>========");
for (int i = 0; i < names.length; i++) {
System.out.println(names[i]);
names[i] = "김준일";
}
int[] nums = { 1, 2, 3, 4, 5 };
for (int i : nums) {
System.out.println("i : " + i);
}
}
}
■ DoubleArray1
package j12_배열;
public class DoubleArray1 {
public static void main(String[] args) {
int num = 0;
// int를 담을 수 있는 배열
int[] nums = new int[2];
// int 배열을 담을 수 있는 배열
// 뒤가 더 하위
// 2개짜리 배열이 3개로 묶인 것
int[][] d_nums = new int[3][2];
d_nums[0][0] = 1;
d_nums[0][1] = 4;
d_nums[1][0] = 2;
d_nums[1][1] = 5;
d_nums[2][0] = 3;
d_nums[2][1] = 6;
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
System.out.println(d_nums[j][i]);
}
}
int[][] d_nums2 = new int[][] { { 1, 2, 3 }, { 4, 5, 6 } };
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
System.out.println(d_nums2[i][j]);
}
}
System.out.println(d_nums2.length);
// 배열의 크기가 같을 경우
System.out.println(d_nums2[0].length);
int[][] d_nums3 = new int[][] { { 1, 2, 3 }, { 5, 6 } };
for (int i = 0; i < d_nums3.length; i++) {
for (int j = 0; j < d_nums3[i].length; j++) {
System.out.println(d_nums3[i][j]);
}
}
}
}