1.1 배열(array) 이란?
배열은 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것
1.2 배열 선언과 생성
타입[] 변수이름; // 배열을 다루기 위한 참조변수 선언
변수이름 = new 타입[길이]; // 배열을 생성 (실제 저장공간을 생성)
1.2 배열 길이와 인덱스
- 배열의 길이 최대값은 int 타입의 최대값 (약 20억)
- 길이가 0인 배열도 생성이 가능하다.
- 배열 길이는 한번 생성 후 변경할 수 없다.
1.2 배열 생성과 초기화
배열을 생성할 때, 타입은 양쪽중 하나는 생략하지 않고 꼭 써줘야 한다.
int[] score = new int[]{50, 60, 70, 80, 90}; // 배열 생성, 초기화 동시에
int[] score_2 = {50, 60, 70, 80, 90}; // new int[] 생략 가능
int[] score_3;
score_3 = new int[] {50, 60, 70, 80, 90}; // OK
예외 케이스로, char 배열을 println메서드로 출력하면 각 요소가 구분자 없이 출력된다.
char[] chArr = {'a', 'b' , 'c', 'd'};
System.out.println(chArr); // abcd
1.5 배열의 복사
배열의 복사는 for문보다 System.arraycopy()를 사용하는 것이 효율적이다.
for(int i = 0; i < num.length; i++) { newNum[i] = num[i]; }
System.arraycopy(num, 0, newNum, 0, num.length); // 위와 같음
위는 num[0]에서 newNum[0]으로 num.length 개의 데이터를 복사한다는 뜻이다.
2.1 String배열의 선언과 생성
원래 String은 클래스이므로 new연산자를 통해 객체를 생성해야한다. 하지만 String 클래스만 "Kim"과 같이 큰따옴표만으로 간략히 표현하는 것이 허용된다.
String[] name = new String[3];
name[0] = new String("Kim");
name[1] = "Park";
참조형 배열의 경우 배열에 저장되는 것은 객체의 주소이다.
2.3 char배열과 String클래스
String클래스는 char배열에 기능(메서드)을 추가한 것이다.
문자열은 변경할 수 없으므로 아래의 경우 새로운 내용의 문자열이 생성된다.
String str = "Java";
str = str + "8"; // "Java8" 이라는 새로운 문자열이 저장된다.
System.out.println(str);
⬛ String클래스 주요 메서드들
리턴 타입 | 메소드 이름(매개 변수) | 설명 |
char | charAt(int index) | 특정 위치의 문자를 리턴합니다. |
boolean | equals(Object anObject) | 두 문자열을 비교합니다. |
byte[] | getBytes() | byte[]로 리턴합니다. |
byte[] | getBytes(Charset charset) | 주어진 문자셋으로 인코딩한 byte[]로 리턴합니다. |
int | indexOf(String str) | 문자열 내에서 주어진 문자열의 위치를 리턴합니다. |
int | length() | 총 문자의 수를 리턴합니다. |
String | replace(CharSequence target, CharSequence replacement) | target 부분을 replacement로 대치한 새로운 문자열을 리턴합니다. |
String | substring(int beginIndex) | beginIndex 위치에서 끝까지 잘라낸 새로운 문자열을 리턴합니다. |
String | substring(int beginIndex, int endIndex) | beginIndex 위치에서 endIndex 전까지 잘라낸 새로운 문자열을 리턴합니다. |
String | toLowerCase() | 알파벳 소문자로 변환한 새로운 문자열을 리턴합니다. |
String | toUpperCase() | 알파벳 대문자로 변환한 새로운 문자열을 리턴합니다. |
String | trim() | 앞뒤 공백을 제거한 새로운 문자열을 리턴합니다. |
String | valueOf(int i) valueOf(double d) |
기본 타입 값을 문자열로 리턴합니다. |
- 기본형 변수 값 비교는 ==, 문자열 내용 비교는 equals()를 사용해야 한다.
- 대소문자 구분하지 않고 구분하려면 equals()대신 equalsIgnoreCase()를 사용해야 한다.
⬛ char배열과 String클래스의 변환
char[] chArr = {'A', 'B', 'C'};
String str = new String(chArr); // char배열 -> String
char[] tmp = str.toCharArray(); // String -> char배열
3.2 2차원 배열의 초기화
2차원 배열은 가독성을 위해 아래처럼 표기하는 것이 좋다.
int[][] arr = { // int[][] arr = new int[][] {...};와 같음
{1, 2, 3},
{4, 5, 6}
};
2차원 배열은 배열의 배열이다. 위에서 score.length는 score가 참조하고 있는 배열의 길이 5이다.
3.3 가변 배열
2차원 배열은 배열의 배열이므로, 아래와 같이 행마다 다른 길이의 배열을 생성하는 것이 가능하다.
int[][] score = new int[5][]; // 두번째 차원 길이는 지정하지않는다.
score[0] = new int[4];
score[1] = new int[2];
...
'Java' 카테고리의 다른 글
[Java] 김영한의 실전 자바 - 기본편 섹션3,4 객체 지향 프로그래밍,생성자 (0) | 2024.04.09 |
---|---|
[Java] Array / List / ArrayList 차이점 정리 (1) | 2024.04.08 |
[Java] 김영한의 실전 자바 - 기본편 섹션1~2 클래스와 데이터, 기본형과 참조형 (0) | 2024.04.08 |
[Java] 김영한의 자바 입문 - 섹션2~3 변수, 연산자 (0) | 2024.03.31 |
[Java] 김영한의 자바 입문 - 섹션1 Hello World 자바란? (0) | 2024.03.30 |