chapter 5 배열
📖 배열이란?
배열은 '같은 타입'의 여러 변수를 하나의 묶음으로 다루는 것입니다.
//배열이 없다면 변수를 전부 한개씩 선언해야한다.
int score1, score2, score3, score4, score5;
//변수 5개를 바인딩 할 수 있는 int형 배열 선언
int [] score = new int[5];
//i를 인덱스라고 불리게 된다.
//인덱스는 0부터 시작한다
score[i];
📖 배열의 선언과 생성
배열을 다루기 위한 참조변수의 선언입니다.
선언방법 | 선언예 |
---|---|
타입[] 변수이름;(Java) | int[] score; |
타입 변수이름[];(C) | int score[]; |
타입[] 변수이름; //배열을 선언(배열을 다루기 위한 참조변수 선언)
변수이름 = new 타입[길이]; //배열을 생성(실제 저장공간을 생성)
📖 배열의 인덱스
각 요소에 자동으로 붙는 번호를 의미합니다.
인덱스의 범위는 0부터 '배열길이 - 1'까지 입니다.
각 인덱스가 붙은 저장공간을 배열의 요소라고 부릅니다.
예제)
//int[] score; //배열 score를 선언
//score = new int[5]; // 배열의 생성
int[] score = new int[5]; //배열의 선언과 생성을 동시에
score[3] = 100;
System.out.print(score[3]); //100출력
📖 배열의 길이
배열이름.length - 배열의 길이(int형 상수)
int[] arr = new int[5];
int tmp = arr.length;
📌 배열은 한번 생성하면 실행하는 동안 그 길이를 바꿀 수 없습니다.
예제)
//length를 사용하게 되면 나중에 코드를 변경할 필요가 없다.
int[] arr = new int[5];
System.out.println("arr.length=" + arr.length);
for(int i=0; i<arr.length; i++) {
System.out.println("arr["+i+"]="+arr[i]);
}
📖 배열의 초기화
배열의 각 요소에 처음으로 값을 저장하는 것을 의미합니다.
int배열은 기본적으로 0으로 초기화됩니다.
//하나씩 저장하는 방법
int[]score = new int[5];
score[0] = 50;
score[1] = 60;
score[2] = 70;
score[3] = 80;
score[4] = 90;
방법1)
int[] score = new int[]{50, 60, 70, 80, 90};
방법2)
int[] score = {50, 60, 70, 80, 90};//new int[] 생략가능
📌 그러나 두줄로 나눠야 할때는 아래와같이 방법 2로 적용해야합니다.
int[] score;
score = new int[]{50, 60, 70, 80, 90};
📖 배열의 출력
int[] iArr = {100, 95, 80, 70, 60};
System.out.println(iArr); // 그냥 출력하게 되면 주소값이 출력된다.
방법1)
for(int i=0; i<iarr.length; i++) {
System.out.println(iArr[i]);
}
방법2)
System.out.println(Arrays.toString(iArr));
char배열은 예외이다.
예제)
int[] iArr = {100, 95, 80, 70, 60};
for(int i=0; i<iArr.length; i++) {
System.out.println(iArr[i]);
}
📖 배열의 활용
총합과 평균
예제)
int sum = 0;
float average = 0f;
int[] score = {100, 88, 100, 100, 90};
for(int i=0; i<score.length; i++) {
sum += score[i];
}
average = sum / (float)score.length; //계산타입을 float로 형변환
System.out.println("총합 : " + sum);
System.out.println("평균 : " + average);
최대값과 최소값
예제)
//배열의 요소중에서 제일 큰 값과 제일 작은 값을 찾는다.
int[] score = {79, 88, 91, 33, 100, 55, 95};
int max = score[0];
int min = score[0];
for(int i=1; i<score.length; i++) {
if(score[i] > max) {
max = score[i];
} else if(score[i] < min) {
min = score[i];
}
}
System.out.println("최대값 : " + max);
System.out.println("최소값 : " + min);
배열 섞기
예제)
//숫자섞기
int[] numArr = {0,1,2,3,4,5,6,7,8,9};
System.out.println(Arrays.toString(numArr));
for(int i=0; i<100; i++) {
int n = (int)(Math.random() * 10);
int tmp = numArr[0];
numArr[0] = numArr[n];
numArr[n] = tmp;
}
System.out.println(Arrays.toString(numArr));
📖 String배열의 선언과 생성
String[] name = new String[3]; // 3개의 문자열을 담을 수 있는 배열을 생성한다.
참조형(객체)배열은 기본적으로 null로 채워집니다.
선언방법)
String[] name = {"Kim", "Park", "Yi"};
예제)
//가위바위보 랜덤으로 출력하기
String[] strArr = {"가위", "바위", "보"}
for(int i=0; i<10; i++){
int tmp = (int)(Math.random() * 3);
System.out.println(strArr[tmp]);
}
📖 커맨드 라인을 통해 입력받기
main함수의 파라미터인 args 문자열 배열에 값을 입력하여 이용할 수 있습니다.
예제)
class Ex5_7 {
public static void main(String[] args) {
for(int i=0; i<args.length; i++) {
System.out.println("args["+i+"]="+args[i]);
}
}
}
📖 2차원배열
테이블 형태의 데이터를 저장하기 위한 배열입니다.
int[][] score = new int[4][3];
//위 배열은 아래와 같이 정렬됩니다.
score[0][0] score[0][1] score[0][2] score[0][3]
score[1][0] score[1][1] score[1][2] score[1][3]
score[2][0] score[2][1] score[2][2] score[2][3]
📖 2차원 배열의 초기화
int[][] arr = {
{1, 2, 3},
{4, 5, 6}
};
2차원 배열의 예제
예제)
//2차원 배열의 모든값 더하기
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++) {
sum += score[i][j];
}
}
System.out.println("sum : "+ sum);
📖 String 클래스
- String 클래스는 char[]와 메서드(기능)을 결합한 것입니다.
- String 클래스는 내용을 변경할 수 없습니다.(read only)
(메모리상으로 새로 대입하면 완전 새로운 메모리주소로 저장된다)
메서드 | 설명 |
---|---|
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[])로 변환해서 반환한다. |
예제)
String str = "ABCDE";
char ch = str.charAt(3); //'D' 저장
String str2 = str.substring(1, 4); //"BCD" 저장
//str.substring(1); //B부터 문자열 끝까지 저장된다
📖 Arrays클래스로 배열 다루기
📌 배열의 비교와 출력 - equals(), toString()
int[] arr = {0, 1, 2, 3, 4};
int[][] arr2D = {{1, 2}, {3, 4}};
//1차원배열
System.out.println(Arrays.toString(arr)); //[0, 1, 2, 3, 4]
//다차원배열
System.out.println(Arrays.deepToString(arr2D)); //[[1, 2], [3, 4]]
String[][] str2D1 = {{"aaa", "bbb"}, {"AAA", "BBB"}};
String[][] str2D2 = {{"aaa", "bbb"}, {"AAA", "BBB"}};
//1차원 문자열 배열비교
System.our.println(Arrays.equals(str2D1, str2D2)); //false
//다차원 문자열 배열비교
System.our.println(Arrays.deepEquals(str2D1, str2D2)); //true
📌 배열의 복사 - 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.copyOfRange(arr, 2, 4); // arr4 == [2,3] 4는 불포함
//만약에 끝값을 대상배열의 길이보다 높게 적는다면 남는 공간은 0으로 채워진다.
📌 배열의 정렬 - sort()
int[] arr = {3,2,0,1,4};
Arrays.sort(arr); //배열 arr을 정렬한다.
System.out.println(Arrays.toString(arr); //[0,1,2,3,4]
Author And Source
이 문제에 관하여(chapter 5 배열), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jmg973/chapter-5-배열저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)