💡 배열
같은 타입의 여러 변수를 하나의 묶음으로 다루는 것을 "배열"이라고 한다.
여러 값을 index로 접근해서 관리할 수 있다. (index는 0부터 시작한다. 범위는 0부터 배열의 길이 -1까지이다)
배열 선언
타입[] 변수이름; -> int[] score;
타입 변수이름[]; -> int score[];
배열 생성
배열을 선언하는 것은 단지 생성된 배열을 다루기 위한 참조변수를 위한 공간이 만들어질 뿐이고, 배열을 생성해야만 비로소 값을 저장할 수 있는 공간이 만들어지는 것이다.
타입[] 변수이름; // 배열을 선언
변수이름 = new 타입[길이]; // 배열을 생성
// 배열 선언과 생성을 동시에
int[] score = new int[5]; // 길이가 5인 int배열
배열의 인덱스를 활용해 해당하는 인덱스에 값을 저장할 수 도 있다.
score[3] = 100; // 배열 score의 4번째 요소에 100을 저장한다.
배열의 길이 (length)
'배열이름.length'를 통해서 배열의 길이에 대한 정보를 얻을 수 있다.
int[] arr = new int[5]; // 길이가 5인 int배열
int tmp = arr.length; // arr.length의 값인 5가 tmp에 저장된다.
length를 이용해 배열의 길이가 변하면 자동으로 변경된 배열의 길이를 값으로 갖는다.
for문과 함께 활용하여 일일이 조건식에서 값을 변경해주지 않아도 되는 장점이 있다. (유지보수가 좋다)
int[] score = new int[5];
for (int i = 0; i < score.length; i += 1) {
System.out.println(i);
}
// 실행결과
// 0
// 1
// 2
// 3
// 4
score의 길이가 5(인덱스 0부터 4까지)이기 때문에 i가 0부터 4까지 출력이 된다.
배열의 초기화
int[] score = new int[] {50, 60, 70, 80, 90}; // 배열의 생성과 초기화를 동시에
저장할 값들을 괄호{} 안에 쉼표로 구분해서 나열하면 되며, 괄호{} 안의 값의 개수에 의해 배열의 길이가 자동으로 결정되기 때문에 괄호[ ] 안에 배열의 길이는 안 적어도 된다.
💡Random
Random클래스는 난수를 생성할때 사용한다.
Math클래스를 사용하는 방법과 Random클래스를 사용하는 방법 두 가지가 있다
Math.random()과 Random을 필요에 따라서 사용한다.
Math.random()
Math.random()은 double타입의 0이상 1 미만 수를 무작위로 생성한다.
Math.random(); // 0 ~ 1 사이의 랜덤 숫자 생성
Random
Random은 boolean, int, long, float, double 타입의 난수를 생성할 수 있다.
Random random = new Random();
random.nextInt(); // int형의 난수가 생성
nextInt(int i) 0부터 i까지의 랜덤 한 숫자를 리턴합니다
nextInt() Int 타입의 최소-최대범위 안에서 랜덤 한 숫자를 리턴합니다
nextLong() Long 타입의 최소-최대범위 안에서 랜덤 한 숫자를 리턴합니다
nextDouble() Double 타입의 0 - 1까지의 랜덤한 숫자를 리턴합니다
nextFloat() Float 타입의 0 - 1까지의 랜덤한 숫자를 리턴합니다
nextBoolean boolean타입의 true, false 중 랜덤 한 값을 리턴합니다
💡Guard Clause
Guard Clause : 코드의 depth가 깊어지는 것을 막을 수 있는 방법이다 (실제로 처리해야 하는 상황이 아닌 경우를 처리 -> 예외 처리)
if ~else가 과도하게 중첩되는 경우 가독성과 유지보수성이 떨어진다.
guard clause를 적용함으로써 가독성을 향상하고, 불필요한 조건 검증을 미리 방지한다
'Java' 카테고리의 다른 글
가비지 컬렉션(Garbage Collection)이란? (0) | 2023.01.03 |
---|---|
JVM(Java Virtual Machine)이란? (0) | 2023.01.01 |
반복문 - for문 (0) | 2022.05.22 |
조건문 (0) | 2022.05.15 |
입출력 (0) | 2022.05.15 |