코틀린에서는 자바의 if, switch와 비슷한 if, when이 조건문을 표현한다.
📕if문
if문을 사용하면 불(boolean) 식의 결과에 따라 두 가지 대안 중 하나를 선택할 수 있다. 코틀린 if는 자바 if 문과 비슷한 문법을 제공한다.
fun max(a:Int, b:Int):Int{
if(a>b) return a
else return b
}
조건이 참일 때 첫 번째 문장을 실행하고, 조건이 거짓일 때 else 문을 실행한다.
만약 조건이 거짓일 때 아무 일도 하지 않아도 된다면 else문을 생략해도 된다.
⚡조건은 항상 Boolean타입의 식이어야 한다!
💡자바의 if와 코틀린의 if의 차이
코틀린은 자바와 다르게 if를 식으로 사용할 수 있다는 것이다.
if 식을 사용하면 max 함수를 더 단순화할 수 있다.
fun max1(a:Int, b:Int):Int=if(a>b)a else b
if문을 식으로 사용할 때는 else를 생략해서는 안된다.
val max= if(a>b) a //else가 없기 때문에 컴파일 오류가 발생
코틀린은 자바와 달리 3항 연산자(조건? 참일 때_식 : 거짓일 때_식)가 없다. 하지만 if를 식으로 쓸 수 있기에 단점을 대부분 상쇄해준다.
📕범위, 진행, 연산
코틀린은 순서가 정해진 값 사이의 수열을 표현하는 몇 가지 타입을 제공한다.
for 루프로 어떤 수 범위를 반복해야 할 때는 이런 타입이 유용하다. 코틀린에서는 이런 타입을 범위(range)라 부른다.
범위를 만드는 가장 간단한 방법은 수 값에 대해 ..
연산자를 사용하는 것이다.
val chars = 'a'..'h' //'a'부터 'h'까지의 모든 문자
val twoDigits=10..99 //10부터 99까지의 모든 수
val zero20ne= 0.0..1.0 //0부터 1까지의 모든 부동 소수점 수
💡in
연산을 사용하면 어떤 값이 범위 안에 들어있는지 알 수 있다.
기본적으로 한 쌍의 비교식을 조합한 것과 같다.
val num= 100
println(num in 10.99) //false
💡in에 반대되는 연산인 !in
도 있다. !in
을 통해서!(a in b)를 더 간단하게 사용 가능하다.
val num=100
println(num !in 10.99) //true
실제로는 수 타입, Char, Boolean, String 등 모든 비교 가능한 타입에 대해 ..
연산을 사용할 수 있다.
기본적으로 <=와 >=를 쓸 수 있는 타입이라면 이 타입에 대해 ..
를 사용해 범위를 만들 수 있다.
..
연산에 의해 만들어진 범위는 닫혀있다.
즉 시작 값과 끝 값이 범위에 포함되어 있다.
💡until
은 끝 값이 제외된 반만 닫힌 범위를 만드는 연산이다.
이 연산은 정수 타입에서만 사용할 수 있고, 끝 값보다 1 작은 값까지 들어있는 범위를 만들어낸다.
val num = 10 until 100 //10.99와 같음
💡downTo
: 아래로 내려가는 진행을 만들 수 있다. [단 진행의 간격은 양수를 써야 한다.]
println(5 in 10 downTO 1) // true
println(5 in 1 downTo 10) // false 끝 값이 시작 값보다 확실히 작기에 빈 범위이다.
💡step
: 진행의 간격을 지정할 수 있다. [단 진행의 간격은 양수를 써야 한다.]
1..10 step 3 // 1,4,7,10
15 down to 9 step 2 // 15,13,11,9
범위를 사용하면 문자열이나 배열의 일부분을 뽑아낼 수 있다.
[substring함수에서 두 인자를 , 로 구분해서 받으면 until과 똑같은 결과가 발생한다.]
"Hello, World".substring(1..4) // ello
"Hello, World".substring(1 until 4) //ell
"Hello, World".substring(1,4) //ell -> (1 until 4)와 같다.
IntArray(10) {it*it}.sliceArray(2..5) // 4,9,16,25
IntArray(10) {it*it}.sliceArray(2 until 5) //4,9,16
in/! in 연산을 지원하는 타입이 범위만 있는 것은 아니다.
문자열이나 배열처럼 다른 타입의 원소를 담는 컨테이너 종류의 타입이라면 보통 이 두 연산을 지원한다.
val numbers= intArrayof(3,7,2,1)
val text= "Hello"
println(2 in numbers) // true
println('a' in text) // false
✔정리
- 코틀린에서
if
는 식으로 활용할 수 있기에 함수의 코딩을 더욱 간단하게 짤 수 있다.- 하지만 if문을 식으로 활용할 때는 else문을 생략해서는 안된다.
- 범위 연산자에는
..
,in
,!in
,until
연산자가 있다...
은 닫혀 있는 범위를 나타낸다. 즉 시작 값과 끝 값이 범위에 포함되어 있다.in
과!in
연산자는 값이 범위에 들어있는지 아닌지를 알아낼 수 있다.until
은 반만 닫힌 범위를 만들어내는데, 끝 값보다 1 작은 값까지 들어있는 범위를 만들어낸다.- 정수 타입에 대해서만 사용 가능하다.
- 만약 범위 연산에서 끝 값이 시작 값보다 확실히 더 작으면 빈 범위로 처리된다.
- 진행에는
step
과downTo
가 있다.downTo
는 위에서 아래로 내려가는 진행을 만들 수 있다.- 만약 a downTo b에서 a가 b보다 확실히 크다면 빈 진행을 나타낸다.
step
은 진행의 간격을 지정할 수 있다.- downTo와 step 모두
양수
를 써야 한다.
'Skils > Kotlin' 카테고리의 다른 글
[Kotlin] 반복문 while, do-while, for (0) | 2022.08.17 |
---|---|
[Kotiln] 조건문 when (0) | 2022.08.17 |
[Kotlin] vararg(가변인자) (0) | 2022.08.12 |
[Kotlin] 오버로딩과 디폴트값 (0) | 2022.08.10 |
[Kotlin] 함수란? (0) | 2022.08.07 |