Backend/Java
Java 배열
호ㅁl
2022. 11. 4. 12:27
배열이란?
같은타입의 같은 용도의 데이터 집합체
메모리를 효율적으로 사용할 수 있다.
배열 선언과 초기화
int[] a =new int[1000]; //int형 배열선언과 초기화
- 자료형[] 배열이름 = new 자료형[개수]
- 'new' 예약어는 배열을 새로 만든다는 의미이다.
- 배열 요소의 자료형은 모두 같다.
- 배열을 선언하면 그와 동시에 각 요소의 값이 초기화된다.
int[] aa = new int[] {1,2,3,4,5,6,7,8,9,10};//배열선언과 동시에 초기화, 개수는 생략한다. 개수작성시 오류발생함.
int[] aaa = {1,2,3,4,5,6,7,8,9,10}; //선언과 동시에 초기화 시 new int[] 생략 가능하다.
int[] aa; //int형 배열 선언
aa = new int[]{1,2,3}; //배열생성 후 초기화
배열의 자료형을 먼저 선언하고 초기화하는 경우에는 new int[]를 생략할 수 없다.
a[0] = 1; //배열의 첫번째 요소 인덱스는 0부터 시작
a[1] = 2;
a[3] = 10;
선언한 배열의 각 요소에 값을 넣을때나 가져올 때는 []를 사용하고,
배열 요소에 값을 저장할땐 위와 같은 코드를 작성한다.
숫자 배열
int[] a;
a = new int[1000];
for(int i = 0; i <a.length; i++) {//a.length 배열이 크기를 알수있음.
a[i] = i+1;
System.out.println("각 배열방에 담긴 값은? "+a[i]);}
자바의 배열은 배열 길이를 나타내는 length 속성을 가진다.
배열길이는 처음에 선언한 배열의 전체 요소 개수를 의미한다.
전체길이를 알고 싶은 배열 이름뒤에 도트( . ) 연산자를 붙이고 length속성을 쓰면 배열 길이를 반환한다.
//1에서 10까지의 합을 배열을 통해서 구하시오.
int[] b = new int[10];
int sum = 0;
for(int i = 0; i<b.length; i++) {
b[i] = i+1;
sum += b[i];
}
System.out.println("1에서 10까지의 합은? "+sum);
배열과 for문은 주로 같이 사용된다.
문자배열
//문자형 배열
char[] alpa = new char[26]; //char타입으로 26개의 배열을 만들다.
char ch = 'A';
for(int i = 0; i<alpa.length; i++) {
alpa[i] = ch;
ch++;
}
for(int i = 0; i<alpa.length; i++) {
System.out.println("담긴 알파벳은? "+alpa[i]);
System.out.println("담긴 알파벳의 매칭된번호는? "+(int)alpa[i]);
}
객체배열
package javastudy;
public class Book {
//멤버변수 선언
String name;
//책 이름을 매개변수로 받는 생성자
public Book(String nm){ //생성자생성, String타입의 매개변수nm
this.name = nm; //매개변수의 값을 멤버변수에 담는다.
}
//책의 정보를 출력해주는 메소드
public void explain() {
System.out.println("책이름은? "+ name);
}
}
먼저 클래스를 생성한다.
책 이름을 매개변수로 받는 생성자를 만든다.
//객체배열 생성
//Book타입의 배열 3개를 만든다.
Book[] book = new Book[3]; //Book 클래스의 생성자를 참조변수 book에 담는다.
//인스턴스 생성 후 배열에 저장
book[0] = new Book("국어"); //매개변수의 인자값으로 국어를 넘긴다.
book[1] = new Book("수학");
book[2] = new Book("영어");
for(int i = 0; i<book.length; i ++) {
System.out.println("책이름을 알려주세요. ");
book[i].explain();
}
향상된 for문
향상된 for문은 배열의 처음부터 끝까지 모든 요소를 참조할 때 사용하기 편리한 반복문이다.
배열 요소 값을 순서대로 하나씩 가져와서 변수에 대입한다.
초기화와 종료조건이 없기 때문에 모든 배열의 시작 요소부터 끝요소까지 실행한다.
//향상된 for문 - 주로 객체배열을 돌릴때 사용한다.
for(Book b :book) {
System.out.println("책이름을 알려주세요.");
b.explain();
}
문법 - for(자료형 변수명 : 배열명) { 반복실행문 }
2차원 배열
//2차원 배열
int[][] arr = {{1,2,3},{4,5,6}};
System.out.println("첫번째방 첫번째 값은?" +arr[0][0]);
System.out.println("두번째방 두번째 값은?" +arr[1][1]);
for(int i = 0; i<arr.length; i++) { //각 방의 크기
System.out.println(arr[i]);
for(int j = 0; j<arr[i].length; j++) { //각 방마다 들어가 있는 요소의 크기
System.out.println(arr[i][j]);
}
}
행과 열 개수에 맞추어서 중괄호{} 안에 콤마(,)로 구분하여 값을 작성한다.