자바의정석 5장 배열 요약

서현우·2022년 6월 21일
0

자바의정석

목록 보기
17/22

5장 배열(Array)

배열

  • 같은 타입의 여러 변수를 하나로 묶은 것.
    (같은 타입 중요!)
  • 각 저장공간이 연속적으로 배치.
  • int[] score = new int[5]; //배열의 선언
  • int[] score = new int[]{10, 20, 30, 40, 50};
  • int[] score = {10, 20, 30, 40, 50};
  • 인덱스 범위 : 0 ~ '배열길이-1'까지
  • 에러 주의(ArrayIndexOutOfBoundesException)
  • 배열의 길이는 int범위의 양의 정수(0도 가능).(배열이름.length)

배열의 길이를 변경하는 방법

  1. 더 큰 배열을 새로 생성한다.(보통 2배)
  2. 기존 배열의 내용을 새로운 배열에 복사한다.
  3. 참조변수의 주소를 저장

1번방법 - 반복문으로

int[] arr = new int[5]; //기존 배열

int[] tmp = new int[arr.length * 2] //2배 길이 배열 생성

for(int i=0; i < arr.length; i++)
	tmp[i] = arr[i]; //arr[i]의 값을 tmp[i]에 저장

arr = tmp; //참조변수 arr이 새로운 배열 tmp를 가리키게 함.

2번방법 - System.arraycopy()

char[] abc = {'A', 'B', 'C', 'D'};
char[] num = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};

//배열 abc와 num을 붙여서 하나의 배열(result)로 만든다.
char[] result = new char[abc.length + num.length];
System.arraycopy(abc, 0, result, 0, abc.length);
System.arraycopy(num, 0, result, abc.length, num.length);
System.out.println(result);

//배열 abc를 배열 num의 첫 번째 위치부터 배열 abc의 길이만큼 복사
System.arraycopy(abc, 0, num, 0, abc.length);
System.out.println(num);

String

String str = "abc";
String str1 = new String("abc");
//전자는 HEAP의 메모리 영역인 String Constant Pool에서 관리되므로
//HEAP에 바로 할당되는 후자보다 유리.
//왜냐하면 String은 기본적으로 불변의 성질을 가져야 함.
//String Constant Pool에 할당된 객체는 재활용이 됨.
//따라서 전자가 유리.

char배열

  • String클래스는 char배열에 기능(메서드)을 추가한 것.
  • String객체(문자열)은 읽기만 가능, 변경 불가 - 불변성

String클래스의 주요 메서드

char charAt(int index) //index에 있는 문자를 반환
int length() //문자열 길이 반환
String substring(int from, int to) //(from~to)에 있는 문자열을 반환.(to는 미포함)
boolean equals(Object obj) //문자열 같은지 비교. true, false 반환
boolean equalsIgnoreCase(Object obj) //대소문자 구분없이 비교
char[] toCharArray() //문자열을 문자배열로 변환해서 반환

커맨드 라인

인텔리제이는 edit Configurations - Program arguments에
값을 입력해서 진행 가능.

//cmd에서 실행 방법
c:\jdk1.8\word\ch5> javac MainTest //소스파일을 클래스로 컴파일
c:\jdk1.8\word\ch5> java MainTest abc 123 //args[0], args[1]과 같이 매개변수로 전달
//커맨드 라인에 숫자를 입력해도 전부 문자열로 처리됨.
//JVM이 입력된 매개변수가 없을 때, 
//null이 아닌 크기가 0인 배열을 생성해서 args에 전달하므로
//NullPointerException 발생 X. 

2차원 배열

배열의 배열로 구성됨. --> 1차원 배열의 묶음.

int[][] score = new int[4][3]; //선언
int[][] arr = new int[][]{{1, 2, 3}, {4, 5, 6}}; //선언과 초기화-1
int[][] arr = {{1, 2, 3}, {4, 5, 6}}; //선언과 초기화-2

가변 배열

  • 각 행마다 다른 길이를 가지고 있는 배열
    다차원 배열을 생성할 때 마지막 차수의 길이를 지정하지 않고,
    추후에 각기 다른 길이의 배열을 생성함으로써 가변 배열을 구성할 수 있다.
//가변 배열 선언 - 0으로 자동 초기화
int[][] score = new int[5][];
score[0] = new int[4];
score[1] = new int[3];
score[2] = new int[2];
score[3] = new int[2];
score[4] = new int[3];

//가변 배열 선언, 초기화
int[][] score = {
					{100, 100, 100, 100},
					{20, 20, 20},
					{30, 30},
					{40, 40},
					{50, 50, 50}
				}
profile
안녕하세요!!

0개의 댓글