반응형
배열
배열은 참조형 변수로 실제 값이 아닌 실제 값의 주소 값을 저장한다.
기본형 변수 | 참조형 변수 |
소문자로 시작함 | 대문자로 시작함 |
Wrapper class 에서 기본형 변수를 감싸줄 때 (boxing), int -> Integer | |
값 자체를 저장함 | 별도의 공간에 값을 저장 후, 그 주소를 저장함 (주소형 변수) |
• 배열 선언
// 일반적인 선언방식
int[] intArray; // 정수 배열
long[] longArray;
double[] doubleArray; // 실수 배열
char[] charArray; // 문자 배열
String[] stringArray; // 문자열 배열
// 2번째 선언방식
int intArray[]; // 정수 배열
long longArray[];
double doubleArray[]; // 실수 배열
char charArray[]; // 문자 배열
String stringArray[]; // 문자열 배열
• 배열 생성
int[] intArray = new int[3]; // 초기값 {0,0,0}
boolean[] boolArray = new boolean[3]; // 초기값 {false, false, false}
String[] stringArray = new String[3]; // 초기값 {"","",""}
// 배열 선언만 해놓고 나중에 초기화를 시킬수도 있다.
int[] intArray2;
intArray2 = new int[3]; // 초기값 {0,0,0}
참조형 변수이기 때문에 실제 값을 담지 않고 실제 값의 주소 값을 저장하고 있다.
• 배열 순회
int[] intArray = new int[3];
for(int i=0; i<intArray.length; i++) {
System.out.println(intArray[i]); // 0 0 0
}
.length() 메서드
- 해당 배열의 길이 값 return
• 배열 초기화
import java.util.Arrays; // Arrays 클래스를 import 해주세요
public class Main {
public static void main(String[] args) {
int[] intArray = {1, 2, 3, 4, 5};
// 향상된 for문을 통한 배열 출력
for (int i : intArray) {
System.out.print(i); // 01234
}
// 배열의 주소를 모두 같은값으로 초기화
Arrays.fill(intArray, 1); //배열의 모든 값을 1로 초기화
for (int i : intArray) {
System.out.print(i); // 11111
}
}
}
.fill() 메서드
- java.util.Arrays 클래스에 존재
- 같은 값으로 배열 초기화 가능
복사
얕은 복사 (Shallow Copy)
주소 값만 복사
배열 변수 간에 대입 연산자 ( = ) 를 사용해서 복사를 하면 주소 값만 복사하는 것이 된다.
두 변수 중 하나만 수정을 해줘도 가르키는 주소 값이 똑같기 때문에 둘 다 수정이 된다.
int[] a = { 1, 2, 3, 4 };
int[] b = a; // 얕은 복사
b[0] = 3;
System.out.println(a[0]); // 출력 3 <- a 배열의 0번째 순번값도 3으로 조회된다.
깊은 복사 (Deep Copy)
실제 값을 가지고 있는 배열의 기본형 값을 꺼내서 복사
반복문을 통해서 하나씩 꺼내서 복사해주거나 여러 메서드를 사용하여 복사를 해준다.
( * 사용 가능 메서드 : .clone(), Arrays.copyOf(arr, arr.length) )
int[] a = { 1, 2, 3, 4 };
int[] b = new int[a.length];
for (int i = 0; i < a.length; i++) {
b[i] = a[i]; // 깊은 복사
}
b[0] = 3;
System.out.println(a[0]); // 1
.clone()
// clone() 메서드
int[] a = { 1, 2, 3, 4 };
int[] b = a.clone();
2차원 이상 배열에서는 얕은 복사로 동작함
Arrays.copyOf()
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
// Arrays.copyOf() 메서드
int[] a = { 1, 2, 3, 4 };
int[] b = Arrays.copyOf(a, a.length); // 배열과 함께 length값도 같이 넣어준다.
}
}
java.util.Arrays 클래스를 import 해주어야 한다.
String Methods
메서드 | 리턴 | 설명 |
length() | int | 문자열의 길이를 반환한다. |
charAt(int index) | char | 문자열에서 해당 index 의 문자를 반환한다. |
substring(int form, int to) | String | 문자열에서 해당 범위 (from ~ to) 에 있는 문자열을 반환한다. (to는 범위 포함 x) |
equals(String str) | boolean | 문자열의 내용이 같은지 확인한다. 같으면 결과는 true, 다르면 false 가 된다. |
toCharArray() | char[] | 문자열을 문자배열 (char[]) 로 변환해서 반환한다. |
new String(char[] charArr) | String | 문자배열 (char[])을 받아서 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 으로 변환
다차원 배열
• 배열 선언
int[][] array
int array[][]
int[] array[]
• 배열 생성
int[][] array = new int[][];
• 배열 초기화
// 중괄호를 사용해 초기화
int[][] array = {
{1, 2, 3},
{4, 5, 6}
};
// 반복문을 통한 초기화
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;
}
}
• 가변 배열
// 선언 및 초기화
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차원 이상의 배열
// 중괄호 3개를 써서 3차원 배열을 초기화
int[][][] MultiArray = {{{1, 2}, {3, 4}}, {{5, 6}, {7, 8}}};
반응형
'개발 ━━━━━ > Java' 카테고리의 다른 글
[Java] 객체 지향 - 클래스, 인스턴스, 생성자 (0) | 2023.08.19 |
---|---|
[Java] 기초 문법 - 컬렉션 (Collection) (0) | 2023.08.16 |
[Java] Input 값 입력 받는 방법 ① - Scanner 클래스 (0) | 2023.08.16 |
[Java] 기초 문법 - 조건문, 반복문 (0) | 2023.08.15 |
[Java] 기초 문법 - 연산자 (0) | 2023.08.15 |