반응형
배열
같은 타입의 값을 여러 개 저장하고 관리하기 위해 사용
0이라는 초기값으로 3개의 공간이 존재하는 array 생성
var arr1: Array<Int> = Array<Int>(3){0}
var arr2 = Array(3){0}
배열 초기 값을 20으로 하는 3개의 정수를 저장할 수 있는 배열 선언
var arrInitHundred = Array(3){20}
println(arrInitHundred[0])
println(arrInitHundred[1])
println(arrInitHundred[2])
arrInitHundred[2] = 40 //2번 인덱스 값 변경
println(arrInitHundred[2])
출력 결과
20
20
20
40
배열 초기값을 "Hello" 문자열로 하는 2개의 문자열을 저장할 수 있는 배열 선언
var stringArr = Array(2){"Hello"}
stringArr[1] = "World"
println(stringArr[0])
println(stringArr[1])
출력 결과
Hello
World
코틀린에서 제공하는 arrayOf 함수
: 자바의 원시(Primitive) 타입의 래퍼 클래스(Integer 등) 객체를 저장할 수 있는 배열을 반환
var arr = arrayOf(100,200,null)
println(arr[0])
println(arr[1])
println(arr[2])
출력 결과
100
200
null
/* 하지만 자바로 작성 된 메소드에서 원시 타입 배열을 인자값으로 요구할 경우
* arrayOf 함수로 생성한 배열을 전달할 수 없다. 이를 해결하기 위해 2가지 방법을 사용할 수 있다.*/
// var intArr = intArrayOf(1, 2, null), 원시 타입이기 떄문에 null값 저장 불가
var intArr = intArrayOf(1, 2, 3)
var intWrapperArr = arrayOf(1,2,3)
var charWrapperArr = arrayOf('a','b','c')
var intPrimitiveArr = intWrapperArr.toIntArray() //원시타입 배열로 변환
var charPrimitiveArr = charWrapperArr.toCharArray()
상수(const val)와 읽기 전용 변수(val)
(1) 상수
: 자바의 static final과 유사
컴파일 시에 값이 결정 되기 때문에 기본 데이터 타입이나 문자열이 String만 입력할 수 있음
전역 변수로 메소드나 클래스 밖에서만 선언 가능
(2) 읽기 전용 변수
: 다양한 데이터 타입이 모두 가능하며 전역변수, 지역변수 모두 사용이 가능함
(3) var 와 val의 차이
var : variable의 약자 (mutable - 변경 가능)
val : value의 약자 (immutable - 변경 불가능)
객체에 대한 참조 값을 가진다면 참조 값만 변경 못하는 것이고 객체 내부 값 변경 가능
class Student {}
/* 전역 변수로 const val 선언 - 기본 타입만 저장 가능 */
const val PI = 3.1415
//const val student: Student = Student() 불가능
/* 전역 변수로 val 선언 */
val lecture = "kotlin"
val student: Student = Student()
fun main(args: Array<String>) {
/* 지역 변수로 const val 선언 - 불가능 */
//const val PI = 3.1415
/* 지역 변수로 val 선언 */
val lecture = "android"
// lecture = "java" //읽기 전용 변수는 재할당 불가
}
반응형
'프로그래밍 > Kotlin' 카테고리의 다른 글
[코틀린 / Kotlin] class 정의 , inti 블록 (0) | 2022.10.19 |
---|---|
[코틀린 / Kotlin] 반복문(while문, do-while문, for문 , break, continue) (0) | 2022.10.19 |
[코틀린 / Kotlin] 조건문 (if 문, when case 문) (0) | 2022.10.19 |
[코틀린 / Kotlin] 연산자 (산술, 복합, 대입, 인덱스 연산자, in 연산자, .. 연산자 ) (0) | 2022.10.19 |
[코틀린 Kotilin] 기본 문법 정리( 원시 문자열, 문자열 템플릿, 엘비스(Elvis) 연산자, Any 타입, Null Check, let) (0) | 2022.10.19 |