String 배열
String str = new String[3]; // 3개의 문자열을 담을 수 있는 배열을 생성
name[0] = “kim”;
name[1] = “park”;
name[2] = “yi”;
String[ ] name = { “kim”, “park”, “yi” };
-> 위코드와 아래 코드는 같은 표현!
-> 실제로 문자가 만들어지고 문자가 들어가는 게 아닌 문자의 주소가 배열안에 들어가진다!
예제) strArr에 가위바위보 배열을 삽입한 다음 난수생성해서 출력!
String[] strArr = {"가위", "바위", "보"};
for(int i =0; i<strArr.length;i++) {
int tmp = (int)(Math.random()*3); //0~2=(strArr index와 맞추기)
System.out.println(strArr[tmp]);
}
2차원 배열
- 테이블 형태의 데이터를 저장하기 위한 배열이고 1차원 배열이 여러 개 모인 게 2차원 배열
예) 표(한 행이 1차원 배열)하나가 2차원 배열 표(2차원배열)이 여러 개 모인 것이 3차원 배열
int[ ][ ] score = new int[4][3]; // 4행 3열의 2차원 배열(표)을 생성 -> 12개의 저장공간 필요
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열의 값을 출력
2차원 배열의 초기화
1) int[ ][ ] arr = new int[ ][ ]{ {1, 2, 3}, {4, 5, 6} }; -> 잘 쓰지는 않음
2) int[ ][ ] arr = { {1, 2, 3}, {4, 5, 6} }; // new int[ ]가 생략됨
3) int[ ][ ] arr = {
{1, 2, 3}, -> 1차원 배열(arr[0])
{4, 5, 6} -> 1차원 배열(arr[1])
};
-> 가능한 3번처럼(직관적이기 때문)
2차원 배열 예제
int[ ][ ] score = {
{100, 100, 100},
{20, 20, 20},
{30, 30, 30},
{40, 40, 40}
};
예제1) 출력값나오게 작성
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++) { //score.length -> 몇행? 4행!
for(int j=0; j<score[i].length; j++) { // 3열
System.out.printf("score[%d][%d]=%d%n",i,j,score[i][j]);
sum += score[i][j];
}
}
System.out.println("sum=" + sum);
예제2) 과목별 점수를 통해 총점, 평균을 구해 표형태로 출력하기
<출력값>
번호 국어 영어 수학 총점 평균
===========================
1 100 100 100 300 100.0
2 20 20 20 60 20.0
3 30 30 30 90 30.0
4 40 40 40 120 40.0
5 50 50 50 150 50.0
===========================
과목별총점: 240 240 240
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("번호\t국어\t영어\t수학\t총점\t평균");
System.out.println("=============================================");
for(int i = 0; i<score.length; i++) {
int sum = 0; // 개인별 총점
float avg = 0f; // 개인별 평균
// 과목별 합
korTotal += score[i][0]; //korTatal = 100 + 20 + 30 + 40 + 50
engTotal += score[i][1]; //engTotal = 100 + 20 + 30 + 40 + 50
mathTotal += score[i][2]; //mathToatal = 100 + 20 + 30 + 40 + 50
//번호를 3개 자리를 차지하며 출력하는 부분
System.out.printf("%3d", i+1); //번호 출력 행이 0부터 시작하기 때문에 +1
// 개인별 총합
for(int j=0; j<score[i].length; j++) {
sum += score[i][j];
System.out.printf("\t%d", score[i][j]); //tap만큼 띄우기
}
avg = sum / (float)score[i].length; //과목이 3개이기 때문에(3열)
System.out.printf("\t%d \t%.1f%n", sum, avg);
}
System.out.println("=============================================");
System.out.printf("과목별총점: %d \t%d \t%d%n", korTotal, engTotal, mathTotal);
String 클래스
1. String클래스는 char[ ]와 메서드(기능)를 결합한 것
string클래스 = char[ ] + 메서드(기능) ->char[ ] : 문자배열
2. String클래스는 내용을 변경할 수 없음(read only)
String a = "a";
String b = "b";
a = a + b;
System.out.println(a); //ab
String클래스의 주요 메서드
메서드 | 설명 |
char charAt(int index) | 문자열에서 해당 위치(index)에 있는 문자 반환 |
int length( ) | 문자열의 길이 반환 |
String substring (int from, int to) | 문자열에서 해당 범위(from~to)의 문자열을 반환(to는 포함xx) |
Boolean equals(Object obj) | 문자열 내용이 같은 지 확인. 같으면 true 다르면 false |
char[ ] toCharArray( ) | 문자열을 문자배열(char[ ])로 변환해서 반환 String -> char[ ] |
1) charAt 지정한 문자를 출력
String str = “ABCDE”;
char ch = str.charAt(3); // 문자열 str의 4번째 문자 ‘D’를 ch에 저장
2) length 문자열의 길이를 출력
String str = “ABCDE”;
str.length( ) // 5
3) substring 문자열의 일부를 출력
String tmp = str.subString(1,3) // str에서 index범위 1~2문자들을 반환
System.out.println(tmp); // “BC”이 출력됨
//charAt
String str = "ABCDE";
char ch = str.charAt(2);
System.out.println(ch); //C
//substring
String str2 = str.substring(1,4);
String str3 = str.substring(1); //(1, str.length())
System.out.println(str2); //BCD
System.out.println(str3); //BCDE
Arrays 클래스
-> Arrays클래스는 배열을 사용하는데 유용한 메소드 제공!
1) 배열의 비교와 출력 – equals( ), toString( )
-> 1차원 배열일 때는 toString, 2차원이나 다차원 배열일 때는 deepToString
-> 1차원 배열일 때는 equals, 2차원이나 다차원 배열일 때는 deepEquals
int[] arr = {0,1,2,3,4};
int[][] arr2D = { {11, 12}, {21, 22} };
System.out.println(Arrays.toString(arr)); //[0, 1, 2, 3, 4]
System.out.println(Arrays.deepToString(arr2D)); //[[11, 12], [21, 22]]
String[][] str2D = new String[][] {{"aaa","bbb"},{"AAA","BBB"}};
String[][] str2D2 = new String[][] {{"aaa","bbb"},{"AAA","BBB"}};
System.out.println(Arrays.equals(str2D, str2D2)); //false 2차원 배열이어서
System.out.println(Arrays.deepEquals(str2D, str2D2)); //true
2) 배열의 복사 – copyOf( ), copyOfRange( )
int[] arr = {0,1,2,3,4};
//배열 arr에서 지정한 값 만큼 복사한다!
int[] arr2 = Arrays.copyOf(arr, arr.length); // arr2 = [01234]
int[] arr3 = Arrays.copyOf(arr, 3); // arr3 = [012]
int[] arr4 = Arrays.copyOf(arr, 7); // arr4 = [0123400] -> 범위 벗어나면 0값으로 채움
//배열 arr에서 일정한 범위 까지 from ~ to
int[] arr5 = Arrays.copyOfRange(arr, 2, 4); // arr5 = [23]
int[] arr6 = Arrays.copyOfRange(arr, 0, 7); // arr6 = [0123400]
3) 배열의 정렬 – sort( )
int[] arr= {3, 2, 0, 1, 4};
Arrays.sort(arr); // 배열 arr을 정렬한다.(오름차순)
System.out.println(Arrays.toString(arr)); // [0, 1, 2, 3, 4]
2021.12.30 - [멀티캠퍼스 풀스택 과정/Java의 정석] - 자바의 정석-7 배열
'멀티캠퍼스 풀스택 과정 > Java의 정석' 카테고리의 다른 글
자바의 정석2-2 객체의 생성과 사용(cv, iv, lv의 개념) (2) | 2021.12.30 |
---|---|
자바의정석2-1 객체지향의 개념 (0) | 2021.12.30 |
자바의 정석1-7 배열 (0) | 2021.12.30 |
자바의 정석1-6 반복문 (0) | 2021.12.29 |
자바의정석1-5 조건문 (0) | 2021.12.29 |