내가 참고하려고 쓰는 배열의 (내가 잘 모르겠는) 모든 것 총정리!
int[] students; //1. 배열 변수 선언
students = new int[5]; //2. 배열 생성
참조형 변수이기 때문에 실제 값을 담지 않고 실제 값의 주소값을 저장!
위와 같은 배열은 5개의 주소칸이 있고 각각 인덱스는 0, 1, 2, 3, 4 이다.
(배열을 생성할 때 0으로 자동 초기화.따라서 사용 가능한 인덱스의 범위는 0 ~ (n-1) 이 된다)
//변수 값 대입
students[0] = 90;
students[1] = 80;
//변수 값 사용
System.out.println("학생1 점수: " + students[0]);
System.out.println("학생2 점수: " + students[1]);
//0. 배열에 특정값 대입하며 선언
int[] intArray = {1, 2, 3, 4, 5};
String[] stringArray = {"a", "b", "c", "d"};
//1. for문을 통해 값을 대입
for (int i = 0; i < intArray.length; i++) {
intArray[i] = i;
}
//2. 향상된 for문을 통한 배열 출력
for (int i : intArray) {
System.out.print(i); // 01234
}
//3. 배열의 주소를 모두 같은값으로 초기화
Arrays.fill(intArray, 1);//배열의 모든 값을 1로 초기화
for (int i : intArray) {
System.out.print(i); // 11111
}
=를 사용해서 복사를 하게 되면 주소값만 복사. 이렇게 주소값만 복사되고 실제 값은 1개로 유지되는 걸 얕은 복사라고 하는데 바람직하지 않은 방법이다.// 깊은 복사 메서드
// 1. clone() 메서드
int[] a = { 1, 2, 3, 4 };
int[] b = a.clone(); // 가장 간단한 방법입니다.
// 하지만, clone() 메서드는 2차원이상 배열에서는 얕은 복사로 동작합니다!!
// 2. Arrays.copyOf() 메서드
int[] a = { 1, 2, 3, 4 };
int[] b = Arrays.copyOf(a, a.length);
// 배열과 함께 length값도 같이 넣어줍니다.
문자 (char ,기본형, 1byte), 문자열 (String, 참조형) 구별
char 배열은 “문자 배열”이고 String 은 문자열이다. 즉 수식으로 표현하면
String = char[]
기본형 변수 vs 참조형 변수

// String 기능 활용 예시
String str = "ABCD";
// (1) length 길이
int strLength = str.length();
System.out.println(strLength);
// (2) charAt(int index)
char strChar = str.charAt(1);
System.out.println(strChar);
// (3) substring(int fromIdx, int toIdx) 잘라서 새로운 스트링을 주겠다
String strSub = str.substring(0, 3); // 0부터 3전까지!
System.out.println(strSub); //ABC
// (4) equals(String str) 이 문자열과 일치하니? true or false
String newStr = "ABCDE";
boolean strEqual = newStr.equals(str);
System.out.println(strEqual);
// (5) toCharArray() : String -> char[]로 변환
char[] strCharArray = str.toCharArray();
// (6) 반대로 char[] -> String -> char
char[] charArray = {'A', 'B', 'C'};
String charArrayString = new String(charArray);
System.out.println(charArrayString);

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;
} // 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}
};