코틀린 배열도 자바 배열처럼 길이(size) 변경 불가
size는 값 갯수!!! 인덱스 마지막 번호 아닌거 항상 주의
코틀린에서 배열은 타입 인자를 갖는 Array클래스로 표현
자바의 원시 타입 자료형은 코틀린의 배열 클래스 타입 인자로 사용할 수 없음
따라서 자바의 원시 타입 자료형을 인자로 갖는 배열을 표현하기 위해서 각 원시 타입 자료형에 대응하는 클래스를 제공.
이 클래스 역시 {자료형}+arrayOf() 메서드를 이용해서 입력받은 인자로 구성된 배열을 생성 가능
class IntArray | class Array |
---|---|
(size: Int, init: (Int) -> Int) | (size: Int, init: (Int) -> T) |
(size: Int) |
자바
int[] arr2=new int[3]
코틀린
var arr = IntArray(10)
var arr2 = IntArray(10, { i -> i + 3 }) //공간할당+인자
var arr3=Array(10, {i->1})
var arr4=Array(10, {0}) //0으로 초기화
var arr5=Array(4,{1;2;3;4}) //;으로 해야됨
//람다를 활용한 배열 만드는 코드에서 Array를 IntArray로 해도 당연히 가능
arrayOf | intArrayOf |
---|---|
fun arrayOf( /vararg elements: T): Array | fun intArrayOf( /vararg elements: Int): IntArray |
자바
int[] arr={1,2,3,4}
코틀린
var arr=arrayOf<Int>() //빈배열 생성가능하지만 타입생략 불가
var arr=intArrayOf() //빈배열 생성 가능
var arr2 = arrayOf<Int>(1, 2, 3, 4) //Int타입만 가능
var arr3 = arrayOf(1, 2, "응아니", '신') //지네릭스 생략 시 모든 타입
var arr45 = intArrayOf(1, 2, 3, 4)
val arrvalue2 = arr3.get(3) //배열명.get(인덱스)
val arrvalue = arr[2] //배열명[인덱스]
//배열 범위 넘어가면 java.lang.ArrayIndexOutOfBoundException 발생
val arrvalue3 = arr.set(0, 24)
arr[0] = 3
val arrvalue4=intArrayOf(1,2,3,4)
println(arrvalue4) //자바랑 마찬가지로 배열 참조번지 출력됨
for(item in arrvalue4){
println(arrvalue4)} //향상된 for문으로 출력