1. 2차원 배열
테이블 형태의 데이터를 저장하기 위한 배열이다.
int [ ] [ ] score = new int[4][3]; //4행 3열의 2차원 배열을 생성한다.
cf. 3차원 배열
2. 2차원 배열의 인덱스
int [][] score=new int[4][3]; //4행 3열의 2차원 배열 score를 생성
score[0][0]=100; //배열 score의 1행 1열에 100을 저장
System.out.println(score[0][0]); //배열 score의 1행 1열의 값을 출력
3. 2차원 배열의 초기화
int [][] arr=new int[][]{{1,2,3},{4,5,6}};
int [][] arr={{1,2,3},{4,5,6}}; //new int[][] 가 생략됨
int[][] arr={
{1,2,3},
{4,5,6}
};
-> 1차원 배열의 배열 형태이다.
int[][] score={
{100,100,100),
{20,20,20},
{30,30,30},
{40,40,40}
};
<2차원 배열 예제>
public class Ex5_8 {
public static void main(String[] args){
int[][] score={
{100,100,100},
{20,20,20},
{30,30,30},
{40,40,40}
};
int sum=0;
for(int i=0;i<score.length;i++){
for(int j=0;j<score[i].length;j++){
System.out.printf("score[%d][%d]=%d%n",i,j,score[i][j]);
sum+=score[i][j];
}
}
System.out.println("sum="+sum);
}
}
<예제 5-9>
public class Ex5_9 {
public static void main(String[] args){
int[][] score={
{100,100,100},
{20,20,20},
{30,30,30},
{40,40,40},
{50,50,50}
};
//과목별 총점
int korTotal=0,engTotal=0,mathTotal=0;
System.out.println("번호 국어 영어 수학 총점 평균 ");
System.out.println("===============================");
for(int i=0;i<score.length;i++){
int sum=0; //개인별 총점
float avg=0.0f; //개인별 총점
korTotal+=score[i][0];
engTotal+=score[i][1];
mathTotal+=score[i][2];
System.out.printf("%3d",i+1);
for(int j=0;j<score[i].length;j++){
sum+=score[i][j];
System.out.printf("%5d",score[i][j]);
}
avg=sum/(float)score[i].length; //평균 계산
System.out.printf("%5d %5.1f%n",sum,avg);
}
System.out.println("===============================");
System.out.printf("총점 : %3d %4d %4d%n",korTotal,engTotal,mathTotal);
}
}
<예제 2>
String 2차원 배열
(~~)
문자열은 String 타입이다.
문자열은 문자가 나열되어 있는 것을 뜻한다.
그렇다면 String 과 char의 차이점은 무엇인가?
a, b, c와 같이 (하나의 ) 문자가 나열 된 것이 char[] 이다.
여러개의 문자(ex. ab, a, aced ) 가 나열된 것은 문자열 String 으로 다룬다.
자바에서는 문자열 String 클래스로 다룬다.
4. String 클래스
(1) String 클래스는 char[] 와 메서드(기능)을 결합한 것이다.
String클래스 = char[ ] + 메서드(기능)
(2) String클래스는 내용을 변경할 수 없다. (read only)
3. String클래스의 주요 메서드
메서드 | 설명 |
char charAt(int index) | 문자열에 해당 위치(index)에 있는 문자를 반환한다. |
int length() | 문자열의 길이를 반환한다. |
String substring(int from, int to) | 문자열에서 해당 범위(from ~ to) 의 문자열을 반환한다. |
boolean equals(Object obj) | 문자열의 내용이 같은지 확인한다. 같으면 결과는 true, 다르면 false |
char[ ] toCharArray( ) | 문자열을 문자배열(char[ ] ) 로 변환해서 반환한다. |
String str="ABCDE";
char ch=str.charAt(3);
index | 0 | 1 | 2 | 3 | 4 |
문자 | A | B | C | D | E |
String str="012345";
String tmp=str.substring(1,4);
System.out.println(tmp);
결과 : 123
<예제>
public class Ex5_11 {
public static void main(String[] args){
//012345
String str="ABCDE";
char ch=str.charAt(4);
String str2=str.substring(1,4);
String str3=str.substring(1);
String str4=str.substring(1,str.length());
System.out.println("str : "+str);
System.out.println("ch : "+ch);
System.out.println("str2 : "+str2);
System.out.println("str3 : "+str3);
System.out.println("str4 " +str4);
}
}
5. Arrays로 배열 다루기
(1) 문자열의 비교와 출력 - equals( ), toString( )
== 로 비교하면 안된다
Equals로 비교해야 한다.
import java.util.Arrays;
public class Ex5_12 {
public static void main(String[] args){
int[] arr={0,1,2,3,4};
int[][] arr2D={{11,12},{21,22}};
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.deepToString(arr2D));
String[][] str2D=new String[][]{{"aaa","bbb"},{"AAA","BBB"}};
String[][] str2D2=new String[][]{{"aaa","bbb"},{"AAA","BBB"}};
System.out.println(Arrays.equals(str2D,str2D2));
System.out.println(Arrays.deepEquals(str2D,str2D2));
}
}
import java.util.Arrays;
public class Ex5_12 {
public static void main(String[] args){
int[] arr={0,1,2,3,4};
int[][] arr2D={{11,12},{21,22}};
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.deepToString(arr2D));
String[][] str2D=new String[][]{{"aaa","bbb"},{"AAA","BBB"}};
String[][] str2D2=new String[][]{{"aaa","bbb"},{"AAA","BBB"}};
System.out.println(str2D==str2D2);
System.out.println(str2D);
System.out.println(str2D2);
System.out.println(Arrays.equals(str2D,str2D2));
System.out.println(Arrays.deepEquals(str2D,str2D2));
}
}
(2) 배열의 복사 - copyOf( ), copyOfRange( )
int[] arr={0,1,2,3,4};
int[] arr2= Arrays.copyOf(arr,arr.length); //arr2=[0,1,2,3,4]
int[] arr3=Arrays.copyOf(arr,3); //arr3=[0,1,2]
int[] arr4=Arrays.copyOf(arr,7); //arr4=[0,1,2,3,4,0,0]
int[] arr5=Arrays.copyOfRange(arr,2,4); //arr5=[2,3] <--- 4는 불포함
int[] arr6=Arrays.copyOfRange(arr,0,7); //arr6=[0,1,2,3,4,0,0]
(3) 배열의 정렬 - sort( )
int[] arr={3,2,0,1,4};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr)); //[0,1,2,3,4]
-> default : 오름차순 정렬
import java.util.Arrays;
public class Ex5_14 {
public static void main(String[] args){
int[] arr={3,4,1,0,2};
System.out.println(Arrays.toString(arr));
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
int[][] arr2D={{11,12},{21,22}}; //2차원 배열
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.deepToString(arr2D));
String[][] str2D={{"ccc","bbb"},{"AAA","BBB"}};
String[][] str2D2={{"aaa","bbb"},{"AAA","BBB"}};
System.out.println(Arrays.deepEquals(str2D,str2D2));
}
}
'언어 > Java' 카테고리의 다른 글
Java 배열(4) String 배열 : String 배열의 선언과 생성 (0) | 2024.09.11 |
---|---|
Java 배열(3) 배열의 활용 (예제들) (0) | 2024.09.11 |
Java 배열(2) : 배열의 길이, 배열의 초기화, 배열의 출력 (0) | 2024.09.11 |
Java 배열(1) : 배열이란, 배열의 생성과 선언, 인덱스 (0) | 2024.09.11 |