1-1. 배열의 선언
자료형[] 배열명 = {값1, 값2, 값3, ...);
자료형[] 배열명 = new 자료형[칸수];
1-2. 배열의 사용
배열명[index] = 값; //저장공간에 값을 넣어준다
System.out.println(배열명[index]); //안에 있는 값을 사용한다
1-3. 배열의 인덱스 번호
1-4. 배열의 길이
2-1. 2차원 배열 선언
자료형 [][] 배열명 = {
{값1, 값2, ...},
{값3, 값4, ...},
...
};
자료형[][] 배열명 = new 자료형[행수][열수] //열 수는 생략 가능
2-2. 2차원 배열의 형태
//정방배열
[][] [][][] [][][][] [][][][][]
[][] [][][] [][][][] [][][][][]
[][][] [][][][][]
//비정방배열
[] [][] [][][][] [][][]
[][] [] [][][] [][][][][]
[] [][][][][] [][]
for(int i = 0; i < args.length; i++) {
for(itn j = 0; j < args.length; j++){
실행할 문장
}
}
//j for문의 반복이 모두 실행된 후 i for문 반복을 실행한다
i j
0 0 1 2
1 0 1 2
2
null : 널값(비어있다, 주소값의 초기값)
String msg = "Hello Java";
//"문자열".charAt(index) 문자열에서 각 문자 꺼내오기(char타입)
//문자열도 배열로 이루어져있어 첫번째 글자의 인덱스는 0이다
System.out.println(msg.charAt(0));
//문자열도 누적 연산이 가능하다
msg += "w";
System.out.println(msg);
//"문자열".length() 문자열의 길이(int타입)
System.out.println(msg.length());
//"문자열1".split("문자열2") 문자열1 을 문자열 2 기준으로 나누기(String[]타입)
String[] result = msg.split(" ");
System.out.println(result[1]);
String msg2 = "Hello.Java!";
System.out.println(msg2.split("[.]")[0]);
//"문자열1".replace("문자열2", "문자열3) 문자열1의 문자열2를 문자열3으로 교체(String 타입)
System.out.println(msg.replace("Hello", "Hell"));
System.out.println(msg);
msg= msg.replace("Hello", "Hell");
System.out.println(msg);
//배열
//10, 42, 31, 29, 77
// index 0 1 2 3. 4
int[] arData = {10, 42, 31, 29, 77};
//배열의 인덱스 번호를 부여하지 않으면 배열의 주소값이 나온다
System.out.println(arData);
//배열의 인덱스는 0번부터 시작한다
System.out.println(arData[0]);
System.out.println(arData[1]);
System.out.println(arData[2]);
System.out.println(arData[3]);
System.out.println(arData[4]);
for(int i = 0; i < 5; i++) {
System.out.println(arData[i]);
}
//ArrayIndexOutOfBounds
//배열의 선언 범위보다 넘어가면 오류가 발생한다
System.out.println(arData[7]);
//배열의 값은 바로 입력받아서 넣어줄 수 있다
Scanner sc = new Scanner(System.in);
int[] arData2 = {sc.nextInt(), sc.nextInt(), sc.nextInt()};
for(int i = 0; i < 3; i++) {
System.out.println(arData2[i]);
}
int[] arData2 = new int[5];
arData2[0] = sc.nextInt();
arData2[1] = sc.nextInt();
arData2[2] = sc.nextInt();
arData2[3] = sc.nextInt();
arData2[4] = sc.nextInt();
//배열은 보통 반복문으로 실행한다
for(int i = 0; i < 5; i++) {
arData2[i] = sc.nextInt();
}
for(int i = 0; i < 5; i++) {
System.out.println(arData2[i]);
}
//2차원 배열
int[][] arrData= {
{10, 20, 30},
{40, 50, 60}
};
//for문으로 표현 가능하지만 활용하기 어렵다
for(int i = 0; 9 < 6; i++) {
//0 1 2 3 4 5
System.out.println(arData2[i/3][i%3]);
}
//for문이 헷갈린다면 하드코딩으로 코딩을하고 규칙성을 찾으면 쉽다
System.out.println(arData2[0][0]);
System.out.println(arData2[0][1]);
System.out.println(arData2[0][2]);
System.out.println(arData2[1][0]);
System.out.println(arData2[1][1]);
System.out.println(arData2[1][2]);
//위에 표현을 반복문으로 표현
for(int j = 0; j < 3; j++) {
System.out.println(arrData[0][j]);
}
for(int j = 0; j < 3; j++) {
System.out.println(arrData[1][j]);
}
//2차원 배열은 2중 표현으로 표현한다
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
System.out.println(arrData[i][j]);
}
}
int[][] arrData2 = {
{10, 20, 30, 40},
{50, 60, 70, 80},
{90, 100, 110, 120},
{130, 140, 150, 160}
};
for(int i = 0; i < 4; i++) {
for(int j = 0; j < 4; j++) {
System.out.println(arrData[i][j]);
}
}
//비정방 배열 만들기(0행 3칸/ 1행 5칸/ 2행 2칸)
//비정방 배열은 우선 행의 크기만 정해주어 선언을 하고
//각 행마다 열수를 다시 각각 선언해준다
int[][] arrData3 = new int[3][];
arrData[0] = new int[3];
arrData[1] = new int[5];
arrData[2] = new int[2];
int cnt =1;
arrData3[0][0] = cnt++;
arrData3[0][1] = cnt++;
arrData3[0][2] = cnt++;
arrData3[1][0] = cnt++;
arrData3[1][1] = cnt++;
arrData3[1][2] = cnt++;
arrData3[1][3] = cnt++;
arrData3[1][4] = cnt++;
arrData3[2][0] = cnt++;
arrData3[2][1] = cnt++;
for(int j = 0; j < 3; j++){
arrData3[0][j] = cnt++;
}
for(int j = 0; j < 5; j++){
arrData3[1][j] = cnt++;
}
for(int j = 0; j < 2; j++){
arrData3[1][j] = cnt++;
}
//arrData3.length -> arrData3이 가지고있는 방의 개수 -> 행의 개수
for(int j = 0; j < ; j++){
//0 1 2
//arrData3[i].length -> arrData3의 i번 방(행)이 가지고 있는 방의 개수 -> 열
for(int j = 0; j < ; j++){
arrData3[1][j] = cnt++;
}
}
for(int j = 0; j < ; j++){
for(int j = 0; j < ; j++){
System.out.println(arrData3[i][j]);
}
}