배열

김민성·2022년 7월 14일
0

Java

목록 보기
9/47
post-thumbnail

배열

같은 자료 형의 여러 변수들을 일렬로 나열해 놓은 공간

  1. 여러개의 값들을 하나의 이름과 인덱스로 관리하기 위해 사용

  2. 규칙성이 없는 값들에 규칙성을 부여하기 위해 사용

    ​ ex) String[] arr = {"김민성", "치킨", "자전거", "나무"};

    ​ 같은 규칙성이 없는 값들에 인덱스르 부여해 규칙성있게 사용 가능

배열의 선언

  • 배열에 값을 할당해주면서 생성 : 자료형[] 배열명 = {값1, 값2, 값3, ...};

  • 배열의 길이만 지정(빈 배열 생성) : 자료형[] 배열명 = new 자료형[칸수];

배열의 인덱스

  • int[] arr = {1,2,3,4,5}; 를 생성했다고 해보자. 그렇다면 각 요소들을 나타내기 위해서는 인덱스를 사용해야 한다. 예를 들어 1을 가져오고 싶으면 배열에서 0번째 값을 가져오면 되는것이다. 따라서 arr[0]의 값이 1이 된다. 마찬가지로 3을 가져오고 싶으면 arr[2]를 하면 되는 것이다.
  • 근데 왜 배열의 인덱스는 0부터 시작할까? 처음 배열을 생성했을 때 배열 참조변수 arr에는 첫번째 배열값의 주소가 저장된다. 예를 들어 위의 배열에서 1의 주소값이 100번지라고 가정하면 arr에는 100번지라는 주소값이 저장되는 것이다. 그리고 그 주소를 기준으로 몇번 이동해서 값을 가져올지 결정하는데, 그 이동하는 횟수가 인덱스인 것이다. 1을 가져오고 싶으면 arr[0]을 하는데 이는 '100번지로 이동해서 0번 움직여라' 라는 뜻으로 결국 1을 가져오는 것이다. 마찬가지로 3을 가져오고 싶으면 arr[2] 를 하는데 이는 arr값에 저장된 100번지로 이동해서 2번 이동해 거기 있는 값을 가져오라는 뜻이 된다. 따라서 3을 가져오는 것이다.

배열의 길이

  • 배열의 길이 : 배열이름.length;

    public class Main {
    	public static void main(String[] args) {
    	
    		int[] arr = {1,2,3,4,5};	// int타입의 배열 arr 생성과 1~5값 할당
    		
    		for (int i = 0; i < arr.length; i++) {	
    			System.out.println(arr[i]);
    		}
    		// i가 0 이상 배열의길이 미만의 값을 가질동안 배열의 i번째값 출력 반복
    	}
    }

    위처럼 반복문에서 i의 범위를 arr.length를 이요해 지정하면 arr배열에 값이 추가되거나 삭제되어 길이가 변경되더라도 반복문 안에서 i의 범위를 바꿔줄 필요가 없다.

String 배열

  • String 배열의 선언과 초기화

    public class Main {
    	public static void main(String[] args) {
    	
    		String[] name = new String[3];
    		name[0] = "김";
    		name[1] ="민";
    		name[2] ="성";
    	}
    }

    String은 클래스이므로 초기화 할때 name[0] = new String("김"); 처럼 초기화를 해줘야한다. 그러 나 String 클래스만 예외적으로 name[0] = "김"; 과 같이 간략하게 표현하는 것이 허용된다.

다차원배열

  • 2차원 배열 선언과 초기화

    자료형[][] 배열명 = {

    ​ {값1, 값2,...},

    ​ {값3, 값4,...},

    ​ ...

    }

    public class Main {
    	public static void main(String[] args) {
    	
    		int[][] arr = {			// 2차원 배열 arr을 생성하고 1~9까지 값으로 초기화
    				{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.println(arr[i][j]);
    			}
    		}
    	}
    }

    2차원 배열의 값을 순서대로 출력하고 싶다면 2중 for문을 사용하면 된다. i가 0일 때, j는 0이상 i(0)번째 행의 길이 이하의 값이 되서 j가 0, 1, 2 가 되고. 마찬가지로 i가 1일때 2일때도 j가 0, 1, 2를 반복하게 되는 것이다. 따라서 반복문이 돌때마다 arr[i][j]를 반복해주면 arr[0][0], arr[0][1], arr[0][2], arr[1][0], arr[1][1]... 순서대로 출력되어서 1부터 9까지가 출력되는 것이다.

  • 다차원 배열은 각 행마다 열의 개수가 모두 같은 정방배열로도 만들 수 있지만, 행마다 열의 개수가 다른 비저방 배열로도 만들 수 있다. 2차원 배열은 배열안에 배열이 있는 형태이므로 내부의 배열의 길이를 각각 다르게 설정하면 비정방 배열이 되는 것이다.

0개의 댓글