JAVA_14_2차원배열, 클래스 String, Arrays

charl hi·2021년 8월 5일
0

JAVA

목록 보기
14/53
post-thumbnail

자바 기술의 응용

링크텍스트

2차원 배열

  • int[][] 배열이름 = new int[행크기][열크기]
  • 테이블 형태의 데이터를 저장하기 위한 배열
  • 1차원 배열의 배열!

+ 초기화

한 줄

int[][] arr = { {1, 2, 3}, {4, 5, 6} };

여러 줄

int[][] arr = {
		{1, 2, 3},
		{4, 5, 6}
        };
  • 여러 줄이 더 보기 좋다!

크기(길이)

👀 arr.length 는?

  • 참조변수 arr✨의 길이를 말하는 것
  • 0x100번지의 요소 개수 = arr[0], arr[1] -> 2

👀 arr[0].length 는?

  • 참조변수 arr[0]✨의 길이를 말하는 것
  • 0x200번지의 요소 개수 = arr[0][0], arr[0][1], arr[0][2] -> 3


2차원배열의 요소의 합

  • 이런 이중for문을 자주 쓴다!!

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++) {	//4행, 0~3
			for(int j=0; j<score[i].length; j++) {	//3열, 0~2
				System.out.printf("score[%d][%d] = %d%n", i, j, score[i][j]);
				sum += score[i][j];
			}
		}
		System.out.println("총합 = "+sum);
	}

}

score[0][0] = 100
score[0][1] = 100
score[0][2] = 100
score[1][0] = 20
score[1][1] = 20
score[1][2] = 20
score[2][0] = 30
score[2][1] = 30
score[2][2] = 30
score[3][0] = 40
score[3][1] = 40
score[3][2] = 40
총합 = 570


정답과 비교하기

import java.util.Scanner;

public class Ex5_10 {

	public static void main(String[] args) {
		String[][] words = {
				{"chair", "의자"},
				{"computer", "컴퓨터"},
				{"integer", "정수"}
		};
		
		Scanner scan = new Scanner(System.in);
		
		for(int i=0; i<words.length; i++) {
			System.out.printf("Q%d. %s의 뜻은?", i+1, words[i][0]);
			String answer = scan.nextLine();
			if(answer.equals(words[i][1])) {
				System.out.println("정답입니다.");
			} else {
				System.out.println("틀렸습니다. 정답은 "+words[i][1]+"입니다.");
			}
			
		}
		scan.close();

	}

}

Q1. chair의 뜻은?의자
정답입니다.
Q2. computer의 뜻은?ㅁㄴㅇㄹ
틀렸습니다. 정답은 컴퓨터입니다.
Q3. integer의 뜻은???
틀렸습니다. 정답은 정수입니다.



1~9인 정수를 랜덤하게 뽑아서 2차원 배열 출력하기



public class Main {

	public static void main(String[] args) {
		// 1~9인 정수를 랜덤하게 뽑아서 2차원배열로 출력하기
		
		int N = 20;
		int [][] arr = new int[N][N];
		
		for(int i = 0; i < N; i++)
		{
			for(int j = 0; j < N; j++)
			{
				arr[i][j] = (int) (Math.random() * 10);
			}
		}
		for(int i = 0; i < N; i++)
		{
			for(int j = 0; j < N; j++)
			{
				System.out.print(arr[i][j] + " ");
			}
			System.out.println();
		}
		
	}

}

2 6 1 1 0 2 5 6 6 5 5 5 9 8 0 5 6 1 1 2 
7 4 6 0 8 3 7 3 8 4 3 0 8 5 4 1 5 3 4 6 
6 1 6 7 9 9 7 0 2 8 8 4 3 4 6 1 1 6 5 6 
6 8 9 3 8 2 4 2 7 7 2 2 5 1 9 8 8 2 1 4 
0 9 5 8 0 4 8 0 4 0 7 5 0 1 5 2 6 2 1 6 
2 5 9 3 5 2 8 6 2 3 5 3 6 5 1 5 2 7 0 1 
5 0 3 4 3 0 5 1 5 8 3 3 8 7 1 3 4 5 6 7 
3 0 8 7 9 9 4 2 9 5 8 4 8 2 8 7 8 1 8 5 
9 9 6 6 0 1 0 2 2 8 9 9 2 3 8 2 0 6 1 8 
9 1 0 9 5 9 9 0 1 3 7 0 3 4 2 2 1 2 6 5 
5 2 5 1 2 4 3 0 3 8 5 5 4 9 9 2 7 9 2 3 
6 9 4 5 5 4 0 9 0 6 3 5 8 0 2 4 5 1 2 4 
2 8 7 6 1 7 1 4 3 7 1 0 2 9 7 4 8 5 7 9 
8 2 4 8 8 7 4 4 4 3 4 9 1 2 6 3 3 5 0 2 
1 0 0 7 6 0 9 8 4 0 1 3 0 6 3 9 2 8 2 7 
8 0 9 8 8 5 8 9 1 2 4 4 8 3 0 6 3 2 2 1 
5 8 4 2 1 3 9 8 1 9 7 7 4 9 3 6 3 2 3 9 
8 2 2 7 5 9 1 3 5 2 6 2 4 5 3 8 7 7 5 6 
1 8 3 9 6 6 8 8 5 4 9 9 0 0 0 3 1 0 0 6 
3 1 2 3 4 5 1 0 1 1 2 4 4 0 1 7 1 1 6 2 



String클래스

  • char[]와 메소드(기능)를 결합한 것

  • 내용 변경X, READ ONLY

String a = "a";
String b = "b";

String a = "a";
String b = "b";
a = a+b;

  • 0x100번지가 "a"->"ab"로 변하는 게 아니라
  • 새로운 문자열, 새로운 저장공간, 새로운 주소가 생성되어 따로 저장하고 그걸 가리키게 됨.

주요 메소드

charAt(숫자)

  • ch c = 문자열.charAt(인덱스);
  • 문자열의 인덱스에 위치한 문자 반환

length()

  • int l = 문자열.length();
  • 문자열의 길이 반환

substring(시작인덱스, 끝인덱스)

  • String s = 문자열.substring(시작인덱스, 끝인덱스);
  • 시작인덱스 이상 ~ 끝인덱스 미만의 문자열 반환
  • 시작인덱스 ~ ✨(끝인덱스-1)✨ 에 해당하는 문자열 반환
  • 끝인덱스가 없으면 시작인덱스 ~ 끝까지

비교 : equals(문자열b)

  • boolean tf = 문자열a.equals(문자열b);
  • 같으면 참, 다르면 거짓 반환
  • ✨✨boolean

toCharArray()

  • char[] ch = 문자열.toCharArray();
  • 문자열을 문자배열로 변환해서 반환



Arrays 클래스

배열 주요 메소드

비교1 : Arrays.equals(배열1, 배열2)

  • boolean tf = Arrays.equals(배열1, 배열2);
  • ✨boolean 참/거짓
  • 1차원 배열 비교

비교2 : Arrays.deepEquals(배열1, 배열2)

  • boolean tf = Arrays.deepEquals(배열1, 배열2);
  • ✨boolean 참/거짓
  • 2차원 이상의 다차원 배열 비교

출력1 : Arrays.toString(배열)

  • System.out.println(Arrays.toString(배열));
  • 1차원 배열 출력

출력2 : Arrays.deepToString(배열)

  • System.out.println(Arrays.toString(배열));
  • 2차원 이상의 다차원 배열 출력

복사1 : Arrays.copyOf(배열, 개수)

  • int[] 배열b = Arrays.copyOf(배열a, 정수);
  • 개수 = 앞에서부터 복사할 요소의 개수
  • 개수만큼 배열을 복사해 배열을 만든다.
  • ✨전체 복사
    -> 개수 = arr1.length()
  • 기존 문자열을 넘어가는 개수 -> 0으로 채움
int[] arr1 = {0, 1, 2, 3, 4};

int[] arr2 = Arrays.copyOf(arr1, arr1.length());
// arr2 = {0, 1, 2, 3, 4};

int[] arr3 = Arrays.copyOf(arr1, 3);
// arr3 = {0, 1, 2};

int[] arr4 = Arrays.copyOf(arr1, 7);
// arr4 = {0, 1, 2, 3, 4, 0, 0};

복사2 : Arrays.copyOfRange(배열, 시작인덱스, 끝인덱스)

  • int[] 배열b = Arrays.copyOfRange(배열a, 시작인덱스, 끝인덱스);
  • 시작인덱스 ~ ✨(끝인덱스-1)✨ 만큼 복사
int[] arr1 = {0, 1, 2, 3, 4};

int[] arr5 = Arrays.copyOfRange(arr1, 2, 4);
//인덱스2 ~ 인덱스3
// arr5 = {2, 3};

int[] arr6 = Arrays.copyOfRange(arr1, 0, 7);
//인덱스0 ~ 인덱스6
//넘어간 만큼 0
// arr6 = {0, 1, 2, 3, 4, 0, 0};

정렬 : Arrays.sort(배열)

  • Arrays.sort(배열)
  • 배열을 오름차순으로 정렬
int[] arr = {3, 6, 1, 0, 2};
Arrays.sort(arr);
System.out.println(Arrays.toString());

//{0, 1, 2, 3, 6}



Ref

0개의 댓글

관련 채용 정보