배열
배열이란 똑같은 데이터타입을 여러개 모아둔 것이다.
인트 배열이라고 말하면 결국 int가 여러개 모여있는 형태
하지만 이제는 배열은 잘 안쓰인다.
배열을 선언할 때에는
그 배열이 어떤 데이터타입인지 적어주고
[]를 붙여서 선언하고
초기화 할때에는 new 데이터타입[크기] 이렇게 초기화한다
// 예를들어 크기가 4인 int배열은
int[] arr = new int[4] //이렇게 선언과 초기화한다.
public class Ex02Array {
public static void main(String[] args) {
//배열에 각각에 접근 할 때에는
//변수 이름 쓰듯이
//배열이름[접근할 위치번호] 로 써주면 된다.
int[] arr = new int[4];
//위치번호(=index)는
//반으로 따지면 학생의 번호와도 같다.
//하지만!
//컴퓨터는 숫자의순서(= index)를 셀 때
//첫번째, 두번째, 세번째... 이렇게 세지 않고
//0번째, 1번째, 2번째... 이렇게 센다.
//그렇다면 위에 arr의 인덱스는
//몇에서 몇 까지인가?
//0~3
//크기는 4지만 실제 각각의 인덱스는
//0 1 2 3 이 된다.
//즉 배열 그리고 Collections의 인덱스는
//0~크기-1이 된다.
//인덱스가 중요한 이유는
//존재하지 않는 인덱스를 접근하면 ArrayIndexOutOfBoundsException
//즉, 인덱스 번호가 유효하지 않다고 에러가 뜨기 때문에다.
//System.out.println(arr[-1]); 나
//System.out.println(arr[4]); 모두 해당 배열의 인덱스 범위를 벗어나서
//에러가 나게 된다.
//우리가 예를 들어서
//int 변수 number에 10을 넣는다고 할 때
//int number = 10;
//그다음부터는
//number = 15; 이런식으로 하게 된다
//배열의 경우
// arr[인덱스] = 15; 이런식으로
// arr[인덱스] 가 하나의 변수명처럼 취급이된다.
//데이터 타입은 당연히 arr의 데이터타입을 따라가게 된다.
arr[0] = 100;
arr[1] = 89;
arr[2] = 37;
arr[3] = 1024;
System.out.println(arr[2]);
//만약 우리가 배열 전체의 내용을 출력 혹은 입력하고 싶다면
//비로소 for loop이 나오게 된다.
//배열의 길이는
//배열.length하면 알아서 나온다
for(int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
//하지만..배열의 단점
//1. 객체의 배열이 까다롭다
Car[] carArr = new Car[5];
carArr[0].turnOn();
System.out.println(carArr[0].isOn);
//위의 코드는 NullPointerException이 뜬다
//왜냐하면, 우리는 각 위치를 초기화 해주지 않았기 때문
//즉, carArr의 각 인덱스 번호에 위치한 car의 객체들은
//메모리주소는 갖고있지만 해당메모리는 생성자 호출이 안되어서
//null인 상태이다.
//즉, 객체의 배열은 번거롭게도 각 위치에 대해 생성자 호출까지 매번 해주어야 한다는 것이다.
for(int i = 0; i < carArr.length; i++) {
carArr[i] = new Car();
}
//2. 크기가 고정되어있다
// 예를 들어 게시판을 만들었다고 가정해보자.
//어딘가에 홍보도 안해서 사람들이 평상시에 2,3개의 글만 써서
//여러분들이 글을 배열로 처리를 했고 배열의 크기는 1000으로 잡았다고 가정해보자.
//그러던 어느날 .. 아이유가 여러분의 게시판을 보고 디자인이 마음에 든다고
//인스타에 올리면..
//그중 1000명이 글을 한번만 올려도 ArrayIndexOutOfBoundsException이 뜨게된다..
//3. 좀 도움이 되는 기능이 없다.
//왜냐하면 , 배열은 클래스가 아니기 때문이다 -> 유용한 메소드들이 존재하지 않는다.
}
}
'JAVA' 카테고리의 다른 글
array List (0) | 2020.04.23 |
---|---|
lotto // Array (0) | 2020.04.23 |
Class 컨닝페이퍼 (0) | 2020.04.23 |
Car // 상세 (0) | 2020.04.23 |
Car // 기본입력 (0) | 2020.04.23 |