4장 배열
배열 (array)
배열이란 동일 종류의 복수 데이터를 순서대로 저장하는 데이터 구조
배열의 최초의 요소는 0 번이다.
ex) a[0], a[1], a[2], a[3]
- 배열의 작성 순서 1
public class Main {
public static void main(String[] args) {
int[] score; // 배열변수의 선언
score = new int[5]; // 요소의 작성과 대입
}
}
- 배열의 작성 순서 2
public class Main {
public static void main(String[] args) {
int[] score = new int[5];
}
}
- 배열의 초기화
public class Main {
public static void main(String[] args) {
// 배열의 요소는 자동으로 초기화된다.
// 5개의 요소가 전부 0으로 초기화된다.
int[] score = new int[5];
System.out.println(score[0]); // 에러가 아닙니다.
}
}
배열과 예외
범위를 벗어난 요소를 이용할 때 예외(exception) 이 발생한다.
예외 : 에러가 난다.
public class Main {
public static void main(String[] args) {
int[] score = {20, 30, 40, 50, 80};
int sum = score[1] + score[2]
+ score[3] + score[4] + score[5];
int avg = sum / score.length;
System.out.println("총점 " + sum);
System.out.println("평균 " + avg);
}
}
int [] score = {20, 30, 40, 50, 80} 에 5개의 값을 가지고 있다.
위에서도 말했지만 배열은 0부터 시작한다.
int sum = score[1] + score[2] + score[3] + score[4] + score[5]
이 아니라
int sum = score[0] + score[1] + score[2]+ score[3] + score[4]
이 되어야한다.
배열과 for 문
일반적인 for 문을 사용하기.
public class Main {
public static void main(String[] args) {
int [] score = { 20, 30, 40, 50, 80 };
for (int i = 0; i < score.length; i++) {
System.out.println(score[i]);
}
}
}
향상된 for 문을 사용하기
public class Main {
public static void main(String[] args) {
int [] score = { 20, 30, 40, 50, 80 };
for (int value : score) {
System.out.println(value);
// 향상된 for 문
for each 문이라고도 한다. for each 문이라고 해서 each를 쓰지는 않는다.
참조 (reference)
배열처럼 변수명을 지정 했을 때, 그 값이 아니라 주소를 가리키는 것을 참조라고 한다.
그 변수를 참조형 (reference type) 변수라고한다.
public class Main {
public static void main(String[] args) {
int [] a ={ 1, 2, 3 };
int [] b;
b = a;
b[0] = 100;
System.out.println(a[0]);
}
}
이런 코드가 있다면 a의 값은 무엇일까?
가비지 컬렉션(garbage collection)
new 로 확보된 요소들은 보통의 변수와 다르기 때문에, 블록이 끝나도 수명이 다하지 않는다.
public class Main {
public static void main(String[] args) {
boolean b = true;
if (b == true) {
int [] i = { 1, 2, 3 };
}
}
}
블록 내에서 생성된 배열은 이 후 어떤 방법으로도 읽거나 쓸 수 없고 메모리만 차지한다.
이것은 메모리 내의 쓰레기가 된다.
원래라면 사용하지 않게 된 메모리는 프로그래머가 정리를 해야하지만
Java 는 '가비지 컬렉션'이라는 장치가 스스로 정리해준다.
null
int [] 같은 참조형 변수에 대입하면, 이 변수는 아무것도 참조하지 않게 된다.
int 형 같은 기본형 변수에는 대입할 수 없다.
public class Main {
public static void main(String[] args) {
int [] a = { 1, 2, 3 };
a = null;
a[0] = 10;
}
}
int [] a = { 1, 2, 3 } 라는 값을 주었지만
a 의 값에 null 을 대입하였다.
아무것도 참조하지 않겠다는 의미이므로
a[0] = 10; 은 범위를 벗어난다.
length
문자열과 배열의 length 는 조금 차이가 있다.
String의 length 는 한글, 영문, 공백에 상관없이 1문자로 카운트를 한다.
배열의 length 와 비슷하지만 ()를 붙여야한다.
public class Main {
public static void main(String[] args) {
String s = "Java로 개발";
System.out.println(s.length());
}
}
"Java로 개발" 은 공백을 포함하여 총 8개의 문자이다.
출력하면 8 이라는 답이 나온다.
2차원 배열
public class Main {
public static void main(String[] args) {
int [][] scores = new int[2][3];
// 2행 3열
scores[0][0] = 40;
scores[0][1] = 50;
scores[0][2] = 60;
scores[1][0] = 80;
scores[1][1] = 60;
scores[1][2] = 70;
System.out.println(scores[1][1]);
}
}
행과 열을 쉽게 그림으로 표현해보자
저렇게 생긴 배열에 값이 들어가있다고 생각하면 이해가 쉽다.
배열의 요소 수 표시
public class Main {
public static void main(String[] args) {
int [][] scores = { { 10, 20, 30 }, { 30, 40, 50 } };
System.out.println(scores.length);
System.out.println(scores[0].length);
}
}
위의 코드에서 각각 값이 어떻게 출력이 되는가?
첫 번째 값은 { 10, 20, 30 }, { 30, 40, 50 } 로 묶여 있기 때문에 2가 나온다.
두 번째 값은 [0]에 해당하는 값은 { 10, 20, 30 } 이다. 3개의 값이 있으므로 정답은 3
Author And Source
이 문제에 관하여(4장 배열), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@cafemoca/4장-배열-6ko2er48저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)