[Java의 정석] 배열(Array)과 스트링(String)

Shiba·2023년 5월 23일
post-thumbnail

📓 배열(Array)과 스트링(String)

📕 배열

배열 : 같은 타입여러 변수하나의 묶음으로 다루는 것.

배열

📃 배열 관련 용어

  • 참조변수 : 배열의 이름.
  • 요소(element) : 배열에 저장된 데이터.
  • 인덱스(index) : 각 요소에 자동으로 붙는 번호. 0 ~ '배열길이 -1'까지.

📃 배열의 선언과 생성

🔹 배열의 선언

배열을 다루기 위한 참조변수의 선언

선언방법선언예
Java 형식
타입[ ] 변수 이름;
int[] score;
String[] name;
C언어 형식
타입 변수이름[ ]
int score[];
String name[];

🔹 배열의 생성

실제 저장공간을 생성.

  • 생성방법

    변수이름 = new 타입[길이];

int[] score; //배열의 선언
score = new int[5]; //배열의 생성

int[] score - new int[5]; //선언과 생성을 동시에

📃 배열의 초기화

배열의 각 요소처음으로 값을 저장하는 것

int[] score = new int[5];

//인덱스를 통하여 각각 초기화.
score[0] = 50;
score[1] = 60;
score[2] = 70;
score[3] = 80;
score[4] = 90;

// for문으로 초기화.
for(int i = 0; i<score.length; i++) //score의 길이 만큼 반복
	score[i] = i * 10 + 50;

//선언할 때 바로 초기화.
int[] score = new int[]{50, 60, 70, 80, 90}; //new int[] 생략가능

int[] score;
score = {50, 60, 70, 80, 90}; //에러. new int[] 생략 불가능
score = new int[]{50, 60, 70, 80, 90}; //ok

📃 배열의 출력

int[] iArr = {100, 95, 80, 70 ,60};

System.out.println(iArr); // 주소값이 출력

//[I@14318bb

for(int i = 0; i<iArr.length; i++) // 배열의 요소를 순서대로 하나씩 출력
	System.out.println(iArr[i]);
    
/*
100
95
80
70
60
*/

System.out.println(iArr.toString(iArr)); // 배열의 모든 요소를 출력

// [100, 95, 80, 70, 60]

📃 2차원 배열

테이블 형태의 데이터를 저장하기 위한 배열

국어영어수학
100100100
202020
303030
404040
int[][] score = new int[4][3]; //4행 3열의 2차원 배열 생성.

🔹 2차원 배열의 인덱스

int[][] score = new int[4][3];

score[0][0] = 100; //1행1열에 100을 저장
System.out.println(score[0][0]); //1행1열의 값인 100 출력

🔹 2차원 배열의 초기화

int[][] arr = {{1,2,3}, {4,5,6}}; //new int[][]가 생략됨

int[][] arr = {
				{1,2,3}, 
			  	{4,5,6}
               }; //위 초기화 구문과 같음

📃 배열 관련 메소드

  • 배열이름.length : 배열의 길이를 int값으로 반환

  • Arrays.toString(배열이름) : 1차원 배열을 스트링 형태로 출력.

  • Arrays.deepToString(배열이름) : 2차원배열을 스트링 형태로 출력.

  • Arrays.equals(배열1, 배열2) : 1차원인 배열1과 배열2가 같은지 비교.

  • Arrays.deepEquals(배열1, 배열2) : 2차원인 배열1과 배열2가 같은지 비교

  • Arrays.copyof(배열이름, 길이) : 길이만큼 1차원 배열을 복사
    • 배열형태로 반환되므로 배열로 받아야한다.

  • Array.copyOfRange(배열이름,시작위치,끝위치) : 시작위치부터 끝위치 까지 배열을 복사
    • 배열형태로 반환되므로 배열로 받아야한다.

  • Array.sort(배열이름) : 1차원 배열을 오름차순 정렬한다.

📃 배열의 활용

🔸 총합과 평균

배열의 모든 요소를 더해서 총합과 평균을 구한다.

int sum = 0; //총합
float averge = 0f; //평균

int[] score = {100, 88, 100, 100, 90};

for(int i = 0; i<score.length; i++)
	sum += score[i]; // 배열에 저장된 값들을 모두 더함.
    
average = sum / (float)score.length; //형변환하여 평균내기

System.out.println("총합 : "+ sum);
System.out.println("평균 : "+ average);

/* 
478 / 5 = 95
478 / (float)5 = 95.6f

총합 : 478
평균 : 95.6f
*/

🔸 최대값과 최소값

배열의 요소 중에서 제일 큰 값과 제일 작은 값을 찾는다.

int[] score = {79, 88, 91, 33, 100, 55, 95};

int max = score[0];
int min = score[1];

for(int i = 1; i<score.length; i++){
	if(score[i] > max)
    	max = score[i];
        
    if(score[i] < min)
    	min = score[i];
}

System.out.println("최대값 : "+ max);
System.out.println("최소값 : "+ min);

/*
최대값 : 100
최소값 : 33
*/

🔸 섞기

배열의 요소의 순서를 반복해서 바꾼다.(숫자 섞기, 로또번호 생성)

int[] numArr = {0,1,2,3,4,5,6,7,8,9};
System.out.println(Arrays.toString(numArr);
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

for(int i = 0; i<100; i++){
	int n = (int)(Math.random() * 10); // 0 ~ 9 중 한 값을 임의로 얻음.
    //자리 바꾸기
    int tmp = numArr[0];
    numArr[0] = numArr[n];
    numArr[n] = tmp;
}

System.out.println(Arrays.toString(numArr);
//[5, 8, 2, 7, 1, 6, 4, 9, 3, 0] - 난수이므로 매번 실행마다 달라짐!

📙 스트링

  • String클래스는 char[]메소드(기능)결합한 것

    String클래스 = char[] + 메소드(기능)

  • String클래스는 내용을 변경할 수 없다.(Read Only)
String a = "a";
String b = "b";

a = a+b;
//a = "ab";

📃 String클래스의 주요 메소드

메소드설명
char charAt(int index)문자열에서 해당 위치(index)에 있는 문자를 반환한다.
int length()문자열의 길이를 반환한다.
String substring(int from, int to)문자열에서 해당범위(from ~ to)의 문자열을 반환한다.
(to는 포함 안 됨)
boolean equals(Object obj)문자열의 내용이 같은지 확인한다. 같으면 true. 다르면 false.
char[] toCharArray()문자열을 문자 배열(char[])로 변환해서 반환한다.

📃 커맨드 라인을 통해 입력받기

커맨드 라인에 입력한 값문자열 배열에 담겨서 전달된다.

class EX5{
	public static void main(String[] args) {
		System.out.println("매개변수의 개수 : "+ args.length);
    	for(int i = 0; i<args.length; i++){
    		System.out.println("args["+i+"] = \" "+ args[i] + " \" ");
    	}
	}
}

/*
..\java EX5(클래스이름) abc 123 "Hello world"
매개변수의 개수:3
args[0] = "abc"
args[1] = "123"
args[2] = "Hello world"


..\java EX5(클래스이름) //매개변수 입력x
매개변수의 개수:0
*/
profile
모르는 것 정리하기

0개의 댓글