배열

|

배열은 연관된 정보를 그룹핑하는데 사용.

하나의 변수에 여러가지 값을 할당하는데 쓰임. 

거대한 데이터의 덩어리에서 필요에 따라 같은 이름으로 그룹핑.(파일, 디렉토리)

배열은 연관된 데이터를 모아서 관리하기 위해서 사용하는 데이터 타입이다.

변수가 하나의 데이터를 저장하기 위한 것이라면 배열은 여러 개의 데이터를 저장하기 위한 것.

 

String[] classGroup 의 의미 -> 'classGroup이라는 변수의 배열에는 문자열로 구성된 데이터가 담긴다'

String[] args 의 의미 -> '프로그램 생성시 파라미터로 받는 모두를 문자열로 인식하여 args라는 이름의 배열에 저장하겠다는 의미.'(String args[] 로 적어도 상관없음)

 

int arr[] = new int[3]; 의 의미 -> '정수 값을 담는 arr이라는 이름의 배열을 3개 크기 만큼 새로 선언한다.'

 

int arr[] = new int[]{1,2,3); 의 의미 -> '정수 값을 담는 arr이라는 이름의 배열을 새로 선언하고 각 요소에 1,2,3을 저장한다.'

 

int arr2[][] = new int[2][3]; 의 의미 -> '정수 값을 담는 arr2라는 이름의 2차원 배열을 2행 3열 크기만큼 새로 선언한다.'

 

다차원 배열에서는 []개수만큼 {}개수도 늘어나야 한다.

 

여기서 [0] 과 같은 넘버링을 'index' 
{"생", "활"} 과 같은 원소를 'element' 
원소를 담을수 있는 최대개수를 'length'

 

################ 기본형 데이터타입 ################

int size = 5; (int변수 5개가 모여서 만들어진 int형 배열 변수 arr)
배열의 크기는 정수형 변수가 들어갈 수 있다.


int[] arr = new int[size];
배열의 인덱스는 0~size~1 까지 이다.
배열의 값을 접근할 때에는 배열이름[인덱스번호(요소번호)] 로 접근이 가능하다.

배열을 정의(선언)할때 new를 사용!!

arr[0] = 4;
arr[1] = 6;
arr[2] = 8;
arr[3] = 10;
arr[4] = 12;


배열의 값을 1개씩 출력할 땐 for문을 이용하면 편하다.

for (int i = 0; i < arr.length; i++)

 

arr.length : arr이 담을수 있는 최대의 값.


배열에 인덱스에는 변수가 들어갈 수 있다.
단! 배열의 크기보다 작아야 한다.

################ 클래스 데이터타입 배열 ################

		Student[] arr = new Student[3]; 
		Scanner scan = new Scanner(System.in); 
		for (int i = 0; i < arr.length; i++) {
//			!!!!!!!!!!!!!!!!!!중요!!!!!!!!!!!!!!!!! 
//			참조형 배열의 경우 각 요소를 다시 new 를 통해서 초기화 해야"만"한다. 
			arr[i] = new Student(); 
//			!!!!!!!!!!!!!!!!!!중요!!!!!!!!!!!!!!!!! 
		System.out.print("이름: "); 
			String name = scan.nextLine(); 
			arr[i].setName(name); 
			}for(
				int i = 0;i<arr.length;i++)
				{
				System.out.println((i + 1) + "번 학생");
				System.out.println(arr[i].getName());
		}scan.close();

배열이란? 똑같은 데이터를 나열
배열의 크기에 관련된 for문은 그것의 크기보다 작은 것으로('='은 빼야)
null : 메모리 공간확보가 안되어있는것.


초기화항상해줄것! 이런식으로-> arr[i] = new Student();

 

################ 반복문과 배열의 조화 ################

반복문이 처리해야할 데이터를 배열이라는 그릇에 담아 하나하나 꺼내면서 처리.

배열이란 연관된 정보를 하나의 그룹으로 관리하기 위해서 사용하는데 그 정보를 처리 할 때는 반복문을 주로 이용한다. 반복문과 배열은 매우 밀접한 관계에 있다고 할 수 있다.

 

################ for-each ################

for문과 배열을 결합해서 사용하다가 목적에 주목하여 사용하게 된 것.

반복문과 배열은 뗄려야 뗄수없는 관계.

이클립스에서 오류가 발생한다면 아래와 같이 자바의 버전을 변경해주자. 가장 높은 버전으로 지정한다.

 

################ 오류와 한계 ################

배열은 초기화할 때 그 크기가 정해진다. 그래서 정해진 크기 이상의 값을 넣을 수 없다.

비유하면, 학생의 수요를 예측하고 그에 따라서 교실을 지으면 그 이상의 학생을 수용 할 수 없는 것과 같다. 부시고 다시 짓든지 새로운 교실을 만들든지 해야 한다. 이러한 한계는 c와 같은 언어에 익숙한 사람에게는 당연한 것이지만, JavaScript나 Python, PHP와 같은 언어에 익숙한 사람에게는 의아할 것이다. 후자의 언어들은 배열의 크기를 미리 정의하고 사용하지 않는다. 물론 방법이 있다.

자바에는 컬렉션 Collection이라는 기능이 있다. Container라고도 부르는 이 기능을 이용하면 JavaScript의 배열과 같이 유연하게 배열을 사용할 수 있다. 컬렉션은 매우 중요한 주제이지만 지금 단계에서는 이것을 이해하기 위한 부품이 부족하다. 객체지향에 대해서 일정한 이해가 있을 때 컬렉션에 대해서도 온전하게 이해할 수 있기 때문이다.

 

Collection 변수의 각 요소는 이렇게 접근이 가능하다.
단 < >안에 들어가 있는 class 변수로만 사용 가능하다.
for(String title : titleList) {
System.out.println(title);
}

'Java' 카테고리의 다른 글

예약어  (0) 2019.05.19
반복문  (0) 2019.05.17
클래스와 인스턴스 그리고 객체  (0) 2019.05.17
필드와 메소드  (0) 2019.05.17
별찍기  (0) 2019.05.17
And