: 타입을 지정해도되고 안해도 됨
val nameArray = arrayListOf("Jame")
nameArray.add("Tom")
println("result: $nameArray")
error: Type mismatch
?
를 붙이면 null 사용 가능val s: String? = null
?.
연산자fun getLen(s: String?){
val sLength: Int? = s?.length
println(sLength)
}
s가 null이 아닐때만 length 함수 실행 / null 이면 null 반환
?:
연산자 (Elvis operator)val sLength: Int? = s?.length ?: 0
null 일 경우 0 반환
fun getLength(s: String?): Int = s!!.length
s에 null이 들어오면 NPE 발생
name?.let{ println(it) }
it은 null이 될 수 없음
val person: Person = Person()
println(person.name)
println(person.age)
기존코드
val person: Person = Person()
with(person){
println(name)
println(age)
}
with 함수 사용 코드
inline fun <T, R> with(receiver: T, block: T.() -> R): R{
return receiver.block()
}
with 함수 동작 코드
recevier
: 수신 객체
block
: 수신 객체 지정 람다
val person: Person = getPerson().also{
println(it.name)
println(it.age)
}
val james = Person().apply {
name = "James"
age = 25
}
대표적인 apply 사용인 객체 초기화 예
val inserted: Boolean = run {
// person과 personDao의 지역변수 범위 제한
val person: Person = Person()
val personDao: PersonDao = PersonDao()
// 수행 결과 반환
personDao.insert(person)
}
to변수()
를 통해 형변환 가능val a: Int = 123
val b: String = a.toString()
println(b)
for (i in 1..3) {
println(i)
}
1부터 3까지 순서대로 출력
for (i in 1 until 3){
println(i)
}
// 1
// 2
until은 마지막 3을 포함하지 않음
for (i in 1..5 step(2)){
println(i)
}
// 1
// 3
// 5
step 수만큼 증가
for (i in 5 downTo 1 step(2)){
println(i)
}
// 5
// 3
// 1
downTo는 값을 감소
val list = arrayListOf("A", "B", "C")
for (i in list){
println(i)
}
// A
// B
// C
in 다음에 숫자가 아닌 list를 넣게되면 list안의 값들이 순차적으로 i에 담기게 됨
for (i in list.indices){
println(i)
}
// 0
// 1
// 2
indices를 사용하면 list 길이만큼 for문을 돌리는 것이 아닌 list index 출력이 가능함
for ((i, v) in list.withIndex()){
println("$i, $v")
}
// 0, A
// 1, B
// 2, C
list 값과 index를 둘 다 출력하고 싶은 경우 withIndex를 사용함
val anyArray = arrayOf(1, "안녕하세요", true, 1.1)
val intArray = arrayOf<Int>(10, 20, 30)
val stringArray = arrayOf<String>("하나", "둘", "셋")
val intArray = intArrayOf(100, 200, 300)
val charArray = charArrayOf('A', 'B', 'C')
val booleanArray = booleanArrayOf(true, false)
val nullArray = arrayOfNulls<String>(5) // {null, null, null, null, null}
val zeroArray = Array(5) {0} // {0, 0, 0, 0, 0}
val idxArray = Array(5) {i->i+1} // {1, 2, 3, 4, 5}
val intArray = Array<Int>(3, {0})
val stringArray = Array<String>(3, {""})
val intArray = IntArray(10, {0})
val charArray = CharArray(10, {''})
val list = listOf(100, 200, 300)
// list.add x
// list.set x
println(list.get(0)) // 100
val arrayList: ArrayList<Int> = arrayListOf<Int>()
arrayList.add(100)
arrayList.add(200)
println(arrayList)
// {100, 200}
arrayList.remove(100)
println(arrayList)
// {200}
val mutableList: MutableList<Int> = mutableListOf<Int>()
mutableList.add(100)
mutableList.add(200)
println(mutableList)
// {100, 200}
mutableList.removeAt(0)
println(mutableList)
// {200}
array[0] = 'A'
val array = arrayOf(1, "안녕", true, 1.1)
array[0] = 3 // 오류 발생
println(array[0]) // 정상 실행
val arr1 = Array<Array<Int>>(3) {Array<Int>(3) {0}}
val arr2 = Array(3, {Array(3, {0})})
val arr = Array(10){Array(10){Array(10){0}}}
println(Integer.parseInt("A", 16))
// 10
println(Integer.toBinaryString(10))
println(Integer.toOctalString(10))
println(Integer.toHexString(10))
// 1010
// 12
// a