1. 배열 선언
- 타입[] 변수; ex) int[] intArr;
- 타입 변수[]; ex) int intArr[];
2. 배열 생성
배열(Array)는 참조형 변수들처럼 new 명령을 통해서 생성하며, 대괄호[ ] 안에 크기를 지정해준다.
배열은 생성될 때 각 타입별 초기값으로 초기화되어 채워진다.
//배열 생성후 초기화하면 배열의 주소가 할당된다.
int[] intArray = new int[3]; // 초기값 {0,0,0}
boolean[] boolArray = new boolean[3]; // 초기값 {false, false, false}
String[] stringArray = new String[3]; // 초기값 {"","",""}
int 는 0
boolean 은 false
String 은 null 이 초기값이다.
여기서 중요한 건 참조형 변수이기 때문에 실제 값을 담지 않고 실제 값의 주소값을 저장하고 있게 됨
3. 배열 초기화
int[] intArray = {1, 2, 3, 4, 5};
String[] stringArray = {"a", "b", "c", "d"};
아예 대놓고 이렇게 직관적으로 배열을 초기화 시킬 수 있다.
//3. 배열의 주소를 모두 같은값으로 초기화
Arrays.fill(intArray, 1);//배열의 모든 값을 1로 초기화
for (int i : intArray) {
System.out.print(i); // 11111
}
Arrays 유틸을 이용해서 위와 같이 배열의 모든 값을 1로 초기화할 수도 있고,
향상된 for 문처럼 intArray 요소들을 선언해줄 수도 있다.
4. 배열 복사
얕은 복사
배열 변수 간에 대입 연산자
=
를 사용해서 복사를 하게 되면 주소값만 복사됨
주소값만 복사된다는 건 변수명은 서로 다르지만 같은 값을 보고 있다는 뜻
깊은 복사
- 반복문 for 문 을 통해서 하나씩 꺼내서 복사해 주는 방법과 여러 메서드를 사용하는 방법
- clone() 메서드를 사용하는 방법 ( 1차원 배열에서만 효과가 있음 )
// 1. clone() 메서드
int[] a = { 1, 2, 3, 4 };
int[] b = a.clone(); // 가장 간단한 방법입니다.
// 하지만, clone() 메서드는 2차원이상 배열에서는 얕은 복사로 동작
- Arrays.copyof() 메서드를 사용하는 방법
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
// 2. Arrays.copyOf() 메서드
int[] a = { 1, 2, 3, 4 };
int[] b = Arrays.copyOf(a, a.length); // 배열과 함께 length값도 같이 넣어줍니다.
}
}
5. String 배열
문자열 = 문자 배열
즉, String = char[]
하지만 String 을 많이 쓰는 이유?
기본형 변수인 char 보다 참조형 변수인 String 이 더 기능이 많고 활용성이 높기 때문이다.
( 참조형 변수는 실제 값의 주소값을 저장하고 있는 변수 )
- char 배열에는 없는 String 만 가지고 있는 기능
// String 기능 활용하기
String str = "ABCD";
// length()
int strLength = str.length();
System.out.println(strLength); // 4 출력
// charAt(int index)
char strChar = str.charAt(2); // 순번은 0부터 시작하니까 2순번은 3번째 문자를 가리킵니다.
System.out.println(strChar); // C 출력
// substring(int from, int to)
String strSub = str.substring(0, 3); // 0~2순번까지 자르기 합니다. (3순번은 제외)
System.out.println(strSub); // ABC 출력
// equals(String str)
String newStr = "ABCD"; // str 값과 같은 문자열 생성
boolean strEqual = newStr.equals(str);
System.out.println(strEqual); // true 출력
// toCharArray()
char[] strCharArray = str.toCharArray(); // String 을 char[] 로 변환
// 반대로 char[] 를 String로 변환하는 방법
char[] charArray = {'A', 'B', 'C'};
String charArrayString = new String(charArray); // char[] 를 String 으로 변환
6. 다차원 배열
선언
- int[][] array
- int array[][]
- int[] array[]
생성
int[][] array = new int[][];
초기화
1. 중괄호를 사용해 선언과 동시에 초기화
// 중괄호를 사용해 초기화
int[][] array = {
{1, 2, 3},
{4, 5, 6}
};
2. 선언/생성 이후 반복문을 통한 초기화
// 반복문을 통한 초기화
int[][] array = new int[2][3]; // 최초 선언
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
arr[i][j] = 0; // i, j 는 위 노란색 네모박스 안에있는 숫자를 의미하며 인덱스 라고 부릅니다.
}
}
가변 배열
가변 배열은 배열을 생성할 때 열의 길이를 생략해서 행마다 다른 길이의 배열을 요소로 저장할 수 있다.
미리 열과 행의 길이를 지정을 하는 것 보다 더 탄력적인 배열을 만들 수 있다.
// 선언 및 초기화
int[][] array = new int[3][];
// 배열 원소마다 각기다른 크기로 지정 가능합니다.
array[0] = new int[2];
array[1] = new int[4];
array[2] = new int[1];
// 중괄호 초기화할때도 원소배열들의 크기를 각기 다르게 생성 가능합니다.
int[][] array2 = {
{10, 20},
{10, 20, 30, 40},
{10}
};
// 가변 2차원 배열 조회
int[][] array = {
{10, 20, 30},
{10, 20, 30, 40},
{10, 20}
};
for (int i = 0; i < array.length; i++) { // 1차원 길이
for (int j = 0; j < array[i].length; j++) { // 2차원 길이
System.out.println(array[i][j]); // 2중 반복문으로 i, j 인덱스 순회
}
}
'컴퓨터 프로그래밍 > Java' 카테고리의 다른 글
[Java] Level 1 과제 중 추가로 알게된 점 정리하기 (1) | 2024.07.25 |
---|---|
[Java] 컬렉션 ( ArrayList, LinkedList, Stack, Queue, Set, Map ) (3) | 2024.07.24 |
[Java] 조건문, 반복문 ( 새로 알게된 내용 정리 ) (0) | 2024.07.23 |
[Java] 연산자 ( 새로 알게된 내용 정리 ) (2) | 2024.07.23 |
[Java] 레시피를 입력, 출력하는 프로그램을 만들어보며 복습하기 ( + ArrList 사용해보기, 입력버퍼 비우기) (1) | 2024.07.23 |