Language/JAVA

배열, for 문에서의 자바와 코틀린

다시은 2024. 4. 25. 17:04

배열을 학습하고 for 문으로 넘어왔다.

코틀린과 비슷하면서 다른 점이 많다.


 

배열 선언

 

java

int[] students;
students = new int[2]; // 이후에 값 할당

int[] students;
students = new int[]{90, 80, 70, 60, 50};

kotlin

val numbers = arrayOf(1, 2, 3, 4, 5)
val numbers = IntArray(5) // 이후에 값 할당
val numbers = IntArray(5) {it + 1}

 

자바의 new 라는 키워드가 눈에 띈다.

 

자바에서 'new' 키워드는 새로운 객체나 배열을 생성하는 데 사용된다.

메모리에 새로운 객체 또는 배열을 할당하고 그 메모리 주소를 반환하여 사용할 수 있게 한다.

'new' 를 사용하지 않고 선언만 하면 그 변수는 초기화되지 않은 상태로 남아있어 실제로 접근할 수 없다.

 

int[] myArray;

이렇게 되면 myArray 라는 것을 선언만 한 것이고 초기화되지 않아 아무런 메모리 공간을 할당받지 못했기 때문에 접근하여 오류가 발생한다.

 

 

'new' 를 사용하지 않고 바로 값을 할당하는 것이 가능하다.

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

이 경우 자바 컴파일러가 자동으로 'new Int[]' 를 사용하여 배열을 생성하고 초기값을 할당한다.

 


for 문 사용

java

        for (int number : numbers) {
            System.out.print(number + " ");
        }

kotlin

    for (number in numbers) {
        println(number)
    }

 

자바는 향상된 for 문으로 배열의 각 요소를 순차적으로 가져올 수 있다.

코틀린의 for 문도 유사하게 작동하는데 여기서

 

인덱스와 함께 요소에 접근가능하다.

val numbers = arrayOf(1, 2, 3, 4, 5)
for ((index, value) in numbers.withIndex()) {
    println("Index: $index, Value: $value")
}

withIndex() 메소드로 인덱스를 같이 가져온다.

 

 

또 다른 점은 코틀린에서는 for 문에서 step 이나 downTo 등을 사용하여 범위를 순회할 때 더 유연하게 만들어준다.

자바에서는 직접 구현해주어야 한다.

kotlin 

for (i in 1..10 step 2) {
    println(i)
}

java

for (int i = 1; i <= 10; i += 2) {
    System.out.println(i);
}

 

 

 


보통 자바에서 코틀린으로 넘어오니까 이게 이렇게 간소화된다고? 하는 느낌이던데

반대로 하니까 코틀린이 이렇게 간단했구나~ 하고 느끼는 중입니다........