TIL/myself

TIL(Today I Learned) 20220421 자바 배열, 자바 열거 타입

토희 2022. 4. 21. 14:45
728x90

https://youtu.be/SdxYPh8YWVY

배열

-데이터를 연속된 공간(메모리)에 나열하고 각 데이터에 인덱스(index) 부여한 자료구조

-같은 타입의 데이터만 저장할 수 있음

-한 번 생성된 배열은 길이를 늘리거나 줄일 수 없음

 

배열 선언

- 2가지, 타입 뒤에 [], 변수이름 뒤에 [], 보통은 타입 뒤에 []가 많음

- 배열은 참조타입이기 때문에 번지가 저장됨

- 참조할 배열 객체 없는 경우 배열 변수는 null 값으로 초기화

 

배열 생성

- 값 목록으로 배열 생성

타입[] 변수 = { 값0, 값1, 값2, 값3, .... }

이 방식은 변수 선언 다음 값 목록을 지정해줘야함

배열 변수 선언한 뒤에 다른 실행문에서 값 목록으로 배열 생성 불가능

타입[]  변수;

변수 = { 값0, 값1, 값2, 값3, ... };  (X) 컴파일 에러

 

배열 변수 미리 선언한 후 값 목록이 나중에 결정되는 경우: new연산자 사용하여 값 목록 지정

변수 = new 타입[] { 값0, 값1, 값2, 값3, ... }; 

String[] names = null;

names = new String[] {"홍길동", "김비자", "김보자"}; (O)

 

- new 연산자를 이용해서 배열 생성

int[] scores= new int[30]; 여기서 30은 길이임

타입[] 변수 = null;

변수 = new 타입[길이];

new 연산자로 배열 처음 생성할 때 배령은 자동적으로 기본값으로 초기화됨

배열 길이: 배열에 저장할 수 있는 전체 요소 수

int[] intArrary = { 10, 20, 30 };

int num = intArrary.length;

 

https://youtu.be/eB9C9vS9Lsk

명령 라인 입력

main()메소드의 String[] args매개변수

System.exit(0); 강제종료

 

https://youtu.be/1bAko0Zouz0

다차원 배열

1차원 배열이 여러개 연결

중첩 for문으로 출력

행렬구조

int[][] scores = new int[2][3];

scores[0][0] = 10;

구현방법: 1차원 배열이 다시 1차원 배열을 참조

계단식 구조

int[][] scores = new int[2][];

scores[0] = new int[2];

scores[1] = new int[3];

값 목록을 이용한 2차원 배열도 생성가능

int[][] scores = { { 1, 2 },{ 3,4 } };

int score = scores[0],[0];  1

int score = scores[1],[1];  4

 

https://youtu.be/dtEGF1OKan4

객체를 참조하는 배열

참조(클래스, 인터페이스) 타입 배열: 요소에 값(정수, 실수, 논리값)을 저장하지 않고, 객체의 번지를 가지고 있음

 

배열 복사

-for문을 이용해서 요소 하나 하나를 복사

int[] oldIntArray = { 1, 2, 3 };
int[] newIntArray = new int[5];

for(int i=0; i<oldIntArray.length; i++){
	newIntArray[i] = oldIntArray[i];
}

for(int i=0; i<newIntArray.length; i++){
	System.println(newIntArray[i] + ", ");
}

1,

2,

3,

0,

0,

 

-System.arraycopy() 이용한 복사

배열은 길이가 한번 결정되면 그 길이를 늘릴수 없음

그래서 새로운 배열 만들어서 기존 배열을 저장해서 새로 만듬

 

향상된 for문

-배열이나 컬렉션을 좀 더 쉽게 처리

-반복 실행 위해 루프 카운터 변수나 증감식 사용하지 않음

 

https://youtu.be/zrs0_lMqfo8

열거 타입: 열거 상수(한정된 값)를 저장하는 타입

week today;

today = week.FRIDAY;

 

728x90