nme.kr

Ch.06 배열 Array

배열 선언

데이터 타입[] 변수명; 데이터 타입 변수명[];

int[] arrInt;
int arrInt2[];

double[] arrDouble;
String[] arrString;

package chapter06;

public class ArrEx {

	public static void main(String[] args) {
		
		int[] arrInt;
		int arrInt2[];
		
		double[] arrDouble;
		String[] arrString;
		

	}

}

package chapter06;

public class ArrEx1 {

	public static void main(String[] args) {
		
		int[] arrInt;
		int arrInt2[] = null;
		
		//System.out.println(arrInt[0]); // 에러 발생
		System.out.println(arrInt2[0]); // 에러 발생하지 않음
		

	}

}

package chapter06;

public class ArrEx2 {

	public static void main(String[] args) {
		
		int[] arrInt = new int[5]; // 길이가 5개인 배열 객체 생성
		
		System.out.println(arrInt[0]);

	}

}

package chapter06;

public class ArrEx3 {

	public static void main(String[] args) {
		
		int[] arrInt = new int[5]; // 길이가 5개인 배열 객체 생성
		
		arrInt[0] = 1;
		arrInt[1] = 2;
		arrInt[2] = 3;
		arrInt[3] = 4;
		arrInt[4] = 5;
		
	}

}

package chapter06;

public class ArrEx4 {

	public static void main(String[] args) {
		
		String[] arrStr = new String[5];
		
//		System.out.println(arrStr[0]);
		
		char[] arrChar = new char[3];
		System.out.print(arrChar[0]*2);
		System.out.print('\u0000'*2);
		
	}

}

배열 사용

package chapter06;

public class ArrEx5 {

	public static void main(String[] args) {
		
		String[] arrStr = {"홍길동", "이순신", "김유신"};
		
		
	}

}

배열 사용

package chapter06;

public class ArrEx6 {

	public static void main(String[] args) {
		
		String[] arrStr = {"홍길동", "이순신", "김유신"};
		
		System.out.println("배열의 길이 : "+arrStr.length);
		
	}

}

package chapter06;

public class ArrEx7 {

	public static void main(String[] args) {
		
		String[] arrStr = {"홍길동", "이순신", "김유신"};
		
		for (int i=0; i<arrStr.length; i++) {
			System.out.println(arrStr[i]);
		}
		
	}

}

package chapter06;

public class ArrEx8 {

	public static void main(String[] args) {
		
		int[] number = new int[100];
		
		// 배열 변수에 대입
		for (int i=0; i<number.length; i++) {
			number[i] = i+1;
		}
		
		// 배열 변수 출력
		for (int i=0; i<number.length; i++) {
			System.out.println(number[i]);
		}
		
	}

}

로또번호 자동 추출기

package chapter06;

public class Lotto {

	public static void main(String[] args) {
		
		int[] lotto = new int[6];
		
		int idx = 0;
		while (true) {
			int number = (int)(Math.random()*45)+1;
			
			boolean insert = true;
			for (int i=0; i<=idx; i++) {
				if (lotto[i] == number) {
					insert = false;
					break;
				}
			}
			if (insert == true) {
				lotto[idx] = number;
				idx++;
			}
			
			if (idx == 6) break;
		}
		
		for (int i=0; i<lotto.length; i++) {
			System.out.println(lotto[i]);
		}
		
	}

}

args 변수의 배열에 값 입력

package chapter06;

public class ArrEx9 {

	public static void main(String[] args) {
		
		System.out.println("첫번째 값 : "+args[0]);
		System.out.println("두번째 값 : "+args[1]);
		
	}

}

다차원 배열

package chapter06;

public class ArrEx10 {

	public static void main(String[] args) {
		
		// 첫번째
		int[][] matrix = new int[3][3];
		
		matrix[0][0] = 1;
		matrix[0][1] = 2;
		matrix[0][2] = 3;
		matrix[1][0] = 4;
		matrix[1][1] = 5;
		matrix[1][2] = 6;
		matrix[2][0] = 7;
		matrix[2][1] = 8;
		matrix[2][2] = 9;
		
		// 두번째
		int[][] matrix2 = {{1,2,3}, {4,5,6}, {7,8,9}};
		
		// 세번째
		int[][] matrix3 = {
				{1,2,3}, 
				{4,5,6}, 
				{7,8,9}
		};
		
		System.out.println("[첫번째]");
		for (int i=0; i<matrix.length; i++) {
			for (int j=0; j<matrix[i].length; j++) {
				System.out.print(matrix[i][j]+" ");
			}
			System.out.println();
		}
		System.out.println("[두번째]");
		for (int i=0; i<matrix2.length; i++) {
			for (int j=0; j<matrix2[i].length; j++) {
				System.out.print(matrix2[i][j]+" ");
			}
			System.out.println();
		}
		System.out.println("[세번째]");
		for (int i=0; i<matrix3.length; i++) {
			for (int j=0; j<matrix3[i].length; j++) {
				System.out.print(matrix3[i][j]+" ");
			}
			System.out.println();
		}
		
		
	}

}

package chapter06;

public class ArrEx11 {

	public static void main(String[] args) {
		
		int[][][] arrInt = new int[3][3][3];
		
		int value = 0;
		// 값 대입
		for (int i=0; i<=2; i++) {
			for (int j=0; j<=2; j++) {
				for (int k=0; k<=2; k++) {
					arrInt[i][j][k] = value++; 
				}
			}
		}
		
		// 값 출력
		for (int i=0; i<=2; i++) {
			for (int j=0; j<=2; j++) {
				for (int k=0; k<=2; k++) {
					System.out.print(arrInt[i][j][k]+"\t"); 
				}
				System.out.println();
			}
		}
		
		
	}

}

package chapter06;

public class ArrEx12 {

	public static void main(String[] args) {
		
		int[][] arrInt = new int[3][];
		
		arrInt[0] = new int[] {1};
		arrInt[1] = new int[] {2,3};
		arrInt[2] = new int[] {4,5,6};
		
		for (int i=0; i<arrInt.length; i++) {
			for (int j=0; j<arrInt[i].length; j++) {
				System.out.print(arrInt[i][j]);
			}
			System.out.println();
		}
		
		
	}

}

배열 복사

package chapter06;

public class ArrEx13 {

	public static void main(String[] args) {
		
		// 원본 배열
		int[] arrInt = {1,2,3};
		
		// 복사할 배열
		int[] arrInt2 = new int[5];
		
		// 복사할 배열에 값 대입
		for (int i=0; i<arrInt.length; i++) {
			arrInt2[i] = arrInt[i];
		}
		
		// 배열 값 출력
		for (int i=0; i<arrInt2.length; i++) {
			System.out.println(arrInt2[i]);
		}
		
	}

}

package chapter06;

public class ArrEx14 {

	public static void main(String[] args) {
		
		// 원본 배열
		int[] arrInt = {1,2,3};
		
		// 복사할 배열
		int[] arrInt2 = new int[5];
		
		System.arraycopy(arrInt, 0, arrInt2, 2, arrInt.length);
		
		// 배열 값 출력
		for (int i=0; i<arrInt2.length; i++) {
			System.out.println(arrInt2[i]);
		}
		
	}

}

package chapter06;

import java.util.Arrays;

public class ArrEx15 {

	public static void main(String[] args) {
		
		// 원본 배열
		int[] arrInt = {1,2,3};
		
		// 복사할 배열
		int[] arrInt2 = null;
		
		arrInt2 = Arrays.copyOf(arrInt, 5);
		
		// 배열 값 출력
		for (int i=0; i<arrInt2.length; i++) {
			System.out.println(arrInt2[i]);
		}
		
	}

}

향상된 for 문

package chapter06;

public class ArrEx16 {

	public static void main(String[] args) {
		
		// 배열
		int[] arrInt = {1,2,3,4,5};
		
		// 기존 for문을 이용한 출력
		for (int i=0; i<arrInt.length; i++) {
			System.out.println(arrInt[i]);
		}
		
		// 향상된 for문을 이용한 출력
		for (int number : arrInt) {
			System.out.println(number);
		}
		
	}


}

참조자료형

값이 아닌 메모리 주소를 비교

package chapter06;

public class ReferenceType {

	public static void main(String[] args) {
		
		String name1 = "홍길동";
		String name2 = "홍길동";
		
		System.out.println(name1 == name2);

	}

}

package chapter06;

public class ReferenceType2 {

	public static void main(String[] args) {
		
		String name1 = new String("홍길동");
		String name2 = new String("홍길동");
		
		System.out.println(name1 == name2);

	}

}

==연산자 가 아닌 equals() 메서드를 사용 (문자열값 자체를 비교)

package chapter06;

public class ReferenceType3 {

	public static void main(String[] args) {
		
		String name1 = new String("홍길동");
		String name2 = new String("홍길동");
		
		System.out.println(name1.equals(name2));

	}

}

배열 객체로 비교
package chapter06;

import java.util.Arrays;

public class ReferenceType4 {

	public static void main(String[] args) {
		
		// 배열 변수 생성
		int[] arr1 = {1,2,3};
		int[] arr2 = {1,2,3};
		
		System.out.println("arr1 == arr2 : " + (arr1 == arr2));
		
		int[] arr3 = arr1;
		System.out.println("arr1 == arr3 : " + (arr1 == arr3));
		
		arr3[0] = 4;
		System.out.println("arr3[0] : "+arr3[0]);
		System.out.println("arr1[0] : "+arr1[0]);
		
	}

}

배열 객체 값을 그대로 받으면서 별개의 주소값을 갖는 참조자료형 만들기

package chapter06;

import java.util.Arrays;

public class ReferenceType5 {

	public static void main(String[] args) {
		
		// 배열 변수 생성
		int[] arr1 = {1,2,3};
		
		int[] arr2 = Arrays.copyOf(arr1, 3);
		
		arr2[0] = 4;
		System.out.println("arr1[0] : "+arr1[0]);
		System.out.println("arr2[0] : "+arr2[0]);
		
	}

}