java에서는 C++의 배열 생성과 달리 'new' 키워드를 이용해 배열을 만든다!

1. 배열
배열을 만들때 두가지의 과정을 거친다.
1. 선언
2. 생성
int는 기본자료형이지만 int 의 배열은 참조자료형이다.
모든 배열은 참조 자료형이다!!
배열은 무조건 선언할 때 크기가 지정되어야만 한다.
이 단점을 보완하기 위해 자바에는 Collection이 존재한다.
1. 선언은 배열을 다루기 위한 참조변수를 선언하는 것이다.
(참조변수는 주소가 저장되어있다.[배열의 첫주소])
2. new를 이용해 배열의 타입(ex. int) 와 길이를 지정해준다. (실제 저장공간을 생성한다.)
int[] scores; //1.배열의 선언
scores = new int[5]; //2. 배열의 생성
참고로 배열의 선언부에 붙는 대괄호[]는 int뒤에 붙여도 되고, 참조변수 뒤에 붙여도 된다.
int[] scores;
int scores[];
-> 둘다 가능하다!
+)
new 없이 선언과 동시에 초기화 할수도있다.
int[] scores = {100,70,90,80};
배열의 길이를 구할 때는 배열의 이름.length를 이용한다.
예제 코드 )
import java.util.Scanner;
public class Array1Demo {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int[] scores = new int[5];
int sum = 0;
for(int i=0;i<scores.length;i++) {
scores[i] = in.nextInt();
}
for(int i=0;i<scores.length;i++) {
sum += scores[i];
}
System.out.println("평균 = "+sum/5.0);
}
}
int형 점수를 5개 입력받고, scores 배열에 저장한다.
그 합을 구해 변수 sum에 저장한다.
5로 나누어 평균을 구할수있다.
✔봐야할것
- 숫자를 입력받을때 Scanner클래스를 이용해 만든 in객체의 매서드를 이용한다. -> in.nextInt();
- 배열의 길이를 for문에서 돌릴때 size가 아닌 length를 이용 뒤에 ()가 없이 이용한다. [배열이름.length]
- 배열은 한번 생성하면 길이를 변경할 수 없다.
2. 이차원 배열 - 배열의 배열
int[][] scores = new int[3][5];
-> 3행 5열의 이차원 배열을 얻을 수 있다.
생성시에 초기화하고 싶은 경우
int[][] scores = {
{100,30,26,76},
{98,57,87,87},
{87,35,96,100}
};
이렇게 3행 4열의 이차원 배열을 만들수있다.
new int[3][4]는 생략된다.
scores.length는 행의 개수 => 3이고
scores[0].length, scores[1].length, scores[2].length는 열의 개수 => 4이다.
scores[0], scores[1], scores[2] 는 각각 참조변수이기 때문이다.
scores[0]은 scores[0][0], scores[0][1], scores[0][2], scores[0][3]의 참조변수로 주소가 담겨져있다.
즉, 이차원 배열은 '배열의 배열' 으로 구성되어있는 것이다.
3. String
String은 참조 자료형이지만 특별하게 new를 사용하지 않고 ""를 사용하여 객체를 생성할 수 있다.
String 클래스는 char 배열에 기능(메서드)를 추가한 것이다.
String 객체 (문자열)은 읽을 수 만 있을 뿐 내용을 변경할 수 없다 -!!
4. 참조 자료형
모든 참조 자료형은 초기화 하지 않으면 "null"이다.
'프로그래밍 > JAVA' 카테고리의 다른 글
java - 객체 배열(9) (0) | 2021.08.27 |
---|---|
Java - 동적배열[ArrayList](8) (0) | 2021.08.27 |
java - 문자열[==,!=,compareTo, equals](6) (0) | 2021.08.23 |
자바 - 정적멤버[static](5) (0) | 2021.08.21 |
자바 - this, this메서드(4) (0) | 2021.08.21 |