1. 배열(Array)
1) 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것.
2) 동일한 자료형의 순차적 자료 구조(Data Structure)
3) 인덱스 연산자[]를 이용하여 빠른 참조가 가능
- 인덱스 : 각 요소에 자동으로 붙는 일련 번호
- 인덱스의 범위는 0부터 시작하기 때문에 끝은 '배열길이-1' 까지임. ex)배열 길이가 5면, [0,1,2,3,4]
4) 물리적 위치와 논리적 위치 동일
5) 배열의 순서는 1부터가 아닌 0부터 시작
6) 배열은 한번 생성하고 컴파일되면 그 길이를 바꿀 수 없음. 더 많은 저장공간들이 필요하다면, 보다 큰 배열을 새로 만들고 이전 배열로부터 항목값들을 복사해야 함.
7) 필요성 : 중복된 변수 선언을 줄이기 위해, 반복문을 이용해서 요소들을 쉽게 처리하기 위해.
2. (1차원) 배열 선언과 생성
1) 배열 선언 : 배열을 다루기 위한 참조변수의 선언
3. 배열 길이와 초기화
1) 배열이름.length - 배열의 길이 (int형 상수)
- int[] arr = new int[5]; //길이가 5인 int 배열
- int tmp = arr.length; //arr.length 의 값은 5이고 tmp에 5가 저장 됨.
2) 배열의 초기화
- 배열의 각 요소에 처음으로 값을 저장하는 것.
- 배열은 선언과 동시에 자료형에 따라 자동으로 초기화 됨. (정수는 0, 실수는 0.0, 객체는 null)
- 하지만 필요에 따라 초기값을 지정할 수 있음.
3) 배열의 출력
int[] score = {50, 60, 70, 80, 90};
System.out.println(score);
=> 배열을 초기화하여 값을 저장하고 그것을 출력할 경우 저장된 값이 출력되는 것이 아닌, 배열의 주소값이 출력 됨. ([@14318bb 와 같은)
//for문을 이용하여 저장된 값을 출력
for(int i=0; i<score.length; i++) {
System.out.println(score[i]);
/*
* Arrays.toString() 메소드를 이용하여 저장된 값을 출력
* -> 배열의 내용을 문자열로 반환해 주는 역할.
*/
int[] score = {50, 60, 70, 80, 90};
System.out.println(Arrays.toString(score));
=> 따라서 저장된 문자열의 값을 출력하고 싶을 경우 for문을 이용하여 출력하거나 Arrays.toString() 메소드를 이용해야 함.
char[] ch = {'a', 'b', 'c', 'd'};
System.out.println(ch);
=> 하지만 예외로 문자형은 저장한 값을 그대로 반환하여 'abcd'를 출력할 수 있음.
4. String배열의 선언과 생성
1) String[] name = new Stirng[3];
String[] name = {"Kim", "Park", "Lee"};
- 3개의 문자열을 담을 수 있는 배열을 생성함.
2) String 배열과 Math.random() 메서드를 활용한 가위바위보 랜덤 게임 구현하기
import java.util.Arrays;
public class Exam1 {
public static void main(String[] args) {
String[] sArr = {"가위", "바위", "보"};
//0 1 2
for(int i=0; i<10; i++) {
int tmp = (int)(Math.random()*3);
System.out.print(sArr[tmp]+" ");
}
}
}
랜덤으로 출력된 화면
보 바위 가위 보 보 바위 바위 보 보 바위
가위 보 보 가위 가위 보 가위 바위 보 가위
가위 바위 보 가위 가위 보 가위 보 가위 보
5. 2차원 배열(다차원 배열) 선언과 초기화
1) 2차원 배열 : 테이블 형태의 데이터를 저장하기 위한 배열
2) 3차원 배열 : 2차원 테이블 형태의 데이터가 여러개 모인 배열
3) 선언 방법
- int[][] score = new int[4][3];
=> 4행 3열의 2차원 배열 생성
4) 2차원 배열 초기화
//1번 방법
int[][] arr = new int[][] {{1,2,3}, {4,5,6}};
//2번 방법 (1차원 배열과 마찬가지로 new int[][] 는 생략 가능)
int[][] arr = {{1,2,3}, {4,5,6}};
//3번 방법 (한 눈에 행과 열이 다 보여서 가장 많이 쓰임)
int[][] arr = {
{1, 2, 3},
{4, 5, 6}
};
6. 객체를 참조하는 배열
1) 기본 타입 (byte, char, short, int, long, float, double, boolean) 배열
- 각 항목에 직접 값을 가지고 있음. (index에 1 이라는 값을 저장하면 heap 메모리에는 그 값이 그대로 저장됨)
2) 참조 타입 (클래스, 인터페이스) 배열
- 각 항목에 객체의 번지를 가지고 있음. 예를 들어 "자바" 라는 문자열 값을 String 인덱스에 저장한다고 해도, 문자열 값 그대로 들어가는 것이 아닌 메모리에 저장된 주소 번지 값이 출력됨.
7. 향상된 for문
1) 조건
- JDK 1.5 이상이어야 함.
- 사용할 변수는 for문 안에서 사용되기 때문에 지역변수로 인식됨.
- 배열 변수만 사용 가능함.
2) 사용 이유
- 배열처럼 여러 원소로 이루어진 집합의 모든 원소에 대해 특정 작업을 반복하기 위해 사용.
3) 특징
- 간편하고 가독성 좋은 코드.
- 배열 인덱스 예외 문제 해결
- 배열이나 ArrayList 값을 사용할 수는 있지만 값을 직접 수정할 수는 없음.
4) 선언 방법
for(배열값을 담을 변수 : 변수 배열) {
반복 영역;
}
//기존 for문 방법 1
for(int i=1; i<11; i++)
System.out.print(" " + i); //출력 화면 -> 1 2 3 4 5 6 7 8 9 10
//기존 for문 방법 2
int[] arr1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
for(int i=0; i<arr1.length; i++)
System.out.print(" "+arr1[i]); //출력 화면 -> 1 2 3 4 5 6 7 8 9 10
//향상된 for문 (배열 변수만 사용 가능)
int arr2[] = {1,2,3,4,5,6,7,8,9,10};
for(int i : arr2)
System.out.print(" " + i); //출력 화면 -> 1 2 3 4 5 6 7 8 9 10
참고 : [한빛미디어] 이것이 자바다 (신용권의 Java 프로그래밍 정복) Chapter 5.배열
참고 : [도우출판] JAVA의 정석(3ND EDITION)-자바의 정석 최신 Java 8.0 포함 Chapter 5.배열
향상된 for문 참고 : https://java119.tistory.com/107
'JAVA' 카테고리의 다른 글
메서드 (0) | 2022.08.28 |
---|---|
switch-case 조건문 (0) | 2022.08.28 |
반복문 (Loop) (0) | 2022.08.22 |
if 조건문 (0) | 2022.08.20 |
Scanner 클래스 (0) | 2022.08.20 |
댓글