자바의 정석1-8 배열들(String, 2차원)과 클래스(String, Arrays)

자바의 정석1-8 배열들(String, 2차원)과 클래스(String, Arrays)

String 배열

String str = new String[3]; // 3개의 문자열을 담을 수 있는 배열을 생성

String 은 참조형이기 때문에 참조형의 기본값인 null 이 들어감 각 자료형의 기본값

name[0] = “kim”;

name[1] = “park”;

name[2] = “yi”;

String[ ] name = { “kim”, “park”, “yi” };

-> 위코드와 아래 코드는 같은 표현!

-> 실제로 문자가 만들어지고 문자가 들어가는 게 아닌 문자의 주소가 배열안에 들어가진다!

예제) strArr에 가위바위보 배열을 삽입한 다음 난수생성해서 출력!

String[] strArr = {"가위", "바위", "보"}; for(int i =0; i

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}

};

score 배열의 내부

예제1) 출력값나오게 작성

출력값(모든 배열을 다 더하기)

int[][] score = { {100, 100, 100}, {20, 20, 20}, {30, 30, 30}, {40, 40, 40} }; int sum = 0; for(int i=0; i 몇행? 4행! for(int j=0; j

예제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

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 배열

from http://everysmallstep.tistory.com/67 by ccl(A) rewrite - 2021-12-30 10:27:57