// 표현식으로서의 if문
val result = if(a>0) "hello" else "world" // -> 표현식일 경우 else문 생략 불가능
println(result)
// if 표현식의 반환값
val result2 = if(a<10){
println("hello.."
10 + 20 // -> { }사용할 때 데이터를 맨마지막에 작성
} else {
print("world..")
20+20
}
prinln(result2)
🖥
world
hello..30
1) 정수로 분기
fun main(args: Array<String>){
val a2 = 1
when (a2){
1 -> println("a2 == 1")
2 -> println("a2 == 2")
else -> println("a2 is neither 1 nor 2")
}
}
🖥
a2 == 1
2) 정수 이외의 값으로 분기
val data1 = "hello"
when(data1){
"hello" -> println("data1 is hello")
"world" -> println("data1 is world")
else -> println("data1 is not hello or world")
}
🖥
data1 is hello
3) 여러 값으로 분기
when(data2){
10, 20 -> println("data2 is 10 or 20")
30, 40 -> println("data2 is 30 or 40")
some() -> println("data2 is 50")
30 + 30 -> println("data2 is 60")
}
4) 범위 값으로 분기
when(data3){
!in 1..100 -> println("invalid data")
in 1..10 -> println("1 <= data3 <= 10")
in 11..20 -> println("11 <= data3 <== 20")
else -> println("data2 > 20")
}
🖥
11 <= data3 <== 20
5) 여러 타입으로 분기
fun testWhen(data: Any){
when(data){
1-> println("data value is 1")
"hello" -> println("data value is hello")
is Boolean -> println("data value is Boolean")
}
}
6) if else 대체용으로 사용
7) 표현식으로 사용
fun main(args: Array<String>){
var sum: Int = 0
for(i in 1..10){ // 1부터 10까지 1씩 증가하면서 i에 대입하고 10번 반복
sum += i
}
}
🖥
55
컬렉션 타입 이용
val list = listOd("Hello", "World", "!")
val sb = StringBuffer()
for(str in list){
sb.append(str)
}
println(sb)
🖥
HelloWorld!
컬렉션 타입의 인덱스 값 이용
for(i in list.indices){
println(list[i])
}
🖥
Hello
World
!
컬렉션 타입의 인덱스와 값 모두 이용
for((index, value) in list.withIndex()){
println("the element at $index is $value")
}
🖥
the element at 0 is Hello
the element at 1 isWorld
the element at 2 is!
for (i in 1..100) -> 100까지 포함
for (i in 1 until 100) -> 100 포함 안함
for (x in 2..10 step 2) -> 2씩 증가
for (x in 10 downTo) -> 숫자 감소
while (x<10) {
sum1 += ++x
}
= : 값 대입
+, -, *, /, % : 덧셈, 뺄셈, 곱셈, 나눗셈, 나머지
*A : A배열의 데이터를 나열
val array1 = arrayOf(10, 20, 30)
val list = asList(1, 2, *array1, 100, 200)
list.forEach({println(it)})
val list3 = listOf<String>("a", "b")
some(*list3.toTypedArray()) // 배열 데이터로 변경해서 이용
🖥
1
2
10
20
30
100
200
+=, -=, *=, /=, %=
++, --
&& : AND
|| : OR
! : NOT
==, != : 값에 대한 비교
===, !== : 객체에 대한 비교
<, >, <=, >=
..
? val a: Int? -> a변수를 null 허용
?: A ?: B -> A가 null이면 B 실행
?. A?.length -> A가 null이면 null, null이 아니면 length
!! A!!B -> A가 null이 아닐 때만 B 실행, null이면 예외 발생
+a : a.unaryPlus()
-a : a.unaryMinus()
!a : a.not()
a++ : a.inc()
a-- : a.dec()
a+b : a.plus(b)
a-b : a.minus(b)
ab : a.times(b)
a/b : a.dev(b)
a%b : a.rem(b) , a.mod(b)(deprecated)
a..b : a.rangeTo(b)
a in b : b.contains(a)
a !in b : !b.contains(a)
a[i] : a.get(i)
a[I,j] : a.get(I,j)
a[i] = b : a.set(I,b)
a[I,j] = b : a.set(I,j,b)
a() : a.invoke()
a(i) : a.invoke(i)
a(i,j) : a.invoke(I,j)
a+=b : a.plusAssign(b)
a-=b : a.minusAssign(b)
a=b : a.timesAssign(b)
a/=b : a.divAssign(b)
a%=b : a.modAssign(b)
a===b : a?.equals(b) ?: (b===null)
a!=b : !(a?equals(b) ?: (b===null)
a>b : a.compareTo(b) > 0
a<b : a.compareTo(b) < 0