Part04 - array

uglyduck.dev·2020년 9월 27일
0
post-thumbnail

Ex01_primitive_array

package com.mywork.ex;

public class Ex01_primitive_array {
	public static void main(String[] args) {
		/*
		 * 1. 배열(Array)
		 *  1) 선언 방법
		 *     (1) int[] arr = new int[3];     // 길이가 3인 arr 배열 
		 *                                     // 공간이 4개 (arr 주소 1개 -> arr 실제 공간 -> int[3])
		 *     --------------비선호 방식--------------
		 *     (2) int arr[] = new int[3];		
		 *          int[] arr;                 // 참조 변수 arr 선언
		 *          arr = new int[3];          // int 3개 생성 후 주소를 arr에 저장!
		 *  2) 초기화 방법
		 *     (1) int[] arr = new int[]{10, 20, 30 };	// 선언과 동시에 초기화
		 *     (2) int[] arr = {10, 20, 30};
		 * 
		 *     ---------------잘못된 예---------------
		 *     (3) int[] arr;					// 선언
		 *          arr = {10 , 20, 30};		// 초기화 -> 이와 같은 형식은 불가능!
		 *  
		 *  3) 특징
		 *     (1) 배열의 인덱스는 0부터 시작한다.
		 *     (2) 배열이 생성되면 자동으로 0으로 초기화된다.
		 *     (3) 배열이 생성되면 배열의 길이를 length 필드 값으로 사용할 수 있다.
		 *          int[] arr = new int[3];
		 *          배열의 길이 : arr.length == 3
		 *     (4) 배열의 인덱스 사용 범위를 벗어나면 ArrayIndexOutOfBoundsException 예외 클래스가 발생된다.
		 */
		
		int[] arr1 = new int[3];     // 모두 0으로 초기화 된 상태
		int[] arr2 = {10,20,30};
		
		for(int i = 0; i < arr1.length; i++) {
			System.out.println(arr1[i]);
		}
		
		for(int i = 0; i < arr2.length; i++) {
			System.out.println(arr2[i]);
		}
		System.out.println(arr1[3]); //인덱스 범위를 벗어난 요소 (예외발생)	
	}
}

Ex02_for_each

package com.mywork.ex;
import java.util.Scanner;

public class Ex02_for_each {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int[] arr = new int[3];
		
		// 1. 일반 for문
		for(int i = 0; i < arr.length; i++) {
			System.out.print(i + 1 + "번째 입력");
			arr[i] = scanner.nextInt();
		}
		
		// 2. for - each 문 (향상 for 문)
		for(int num : arr) {	// arr 배열의 각 요소를 num 변수로 전달해서 처리
			System.out.println(num);
		}
		
		// 주의사항.
		int[] arr2 = new int[3];
		
		// 1. for - each 문을 통한 입력
		// 기본자료형의 배열은 for-each 문으로 배열의 수정이 불가능하다.
		// 배열에 직접 접근하지 않고 배열 요소의 값을 다른 변수로 받아서 처리하기 때문!!
		for(int num : arr2) {
			System.out.print("입력 >> ");
			num = scanner.nextInt();
		}
		
		// 2. for - each 문을 통한 출력
		for(int num : arr2) {
			System.out.println(num);
		}
		
		scanner.close();
	}
}

Ex03_string_array

package com.mywork.ex;
import java.util.Scanner;

public class Ex03_string_array {
	public static void main(String[] args) {
		/*
		 * String 배열
		 *  1. 문자열을 여러 개 저장하기 위해서 사용한다.
		 *  2. 일반적으로 한 번 문자열이 저장되면 수정될 일이 없다.
		 *  3. 수정될 일이 없다면 for - each 문을 활요하는 것이 좋다.
		 */
		
		Scanner scanner = new Scanner(System.in);
		String[] names = new String[3];
		
		// 1. 입력 (일반 for문)
		for(int i = 0; i < names.length; i++) {
			System.out.print("성명 입력 >> ");
			names[i] = scanner.nextLine();
		}
		
		// 2. 출력 (for - each문)
		for(String str : names) {
			System.out.println(str);
		}
		
		scanner.close();
		
		// 초기화 방법
		String[] friends = new String[] {"alice","james","tom"};
		String[] hobbies = {"운동", "독서", "영화"};
		
		for (String friend : friends) {
			System.out.println(friend);
		}
		for (String hobby : hobbies) {
			System.out.println(hobby);
		}
	}
}

Ex04_2D_array

package com.mywork.ex;

public class Ex04_2D_array {
	public static void main(String[] args) {
		/*
		 * 고정형 2차원 배열
		 *  1. 행과 열이 고정되어 있는 2차원 배열
		 *  2. 선언 방법
		 *    int[][] arr = new int[3][4];  // 3행 4열
		 *  3. 초기화 방법
		 *    int[][] arr = new int[][] { {1,2,3,4}, {5,6,7,8}, {9,10,11,12} };
		 *    int[][] arr = { {1,2,3,4}, {5,6,7,8}, {9,10,11,12} };
		 */
		int[][] arr = new int[][] { {1,2,3}, {4,5,6} };  // 2행 3열 초기화
		// i : 행, j : 열
		for(int i = 0; i < arr.length; i++) {
			for(int j = 0; j < arr[i].length; j++) {
				System.out.print(arr[i][j] + "\t");
			}
			System.out.println();
		}
	}
}

Ex05_2D_array

package com.mywork.ex;
public class Ex05_2D_array {

	public static void main(String[] args) {
		/*
		 * 가변형 2차원 배열
		 *  1. 행만 고정하고 열이 고정되어 있지 않은 배열
		 *  2. 선언 방법
		 *      int[][] arr = new int[3][];      3행 n열 배열
		 *      arr[0] = new int[3];             0행은 3열
		 *      arr[1] = new int[2];             1행은 2열
		 *      arr[2] = new int[4];             2행은 4열
		 */

		int[][] arr = { {1,2,3}, {4,5}, {6,7,8,9} };
		
		for(int i = 0; i < arr.length; i++) {
			for(int j = 0; j < arr[i].length; j++) {
				System.out.print(arr[i][j] + "\t");
			}
			System.out.println();
		}
	}
}
profile
시행착오, 문제해결 그 어디 즈음에.

0개의 댓글