반응형
이 포스팅에서 작성하는 내용은 자바 개발자를 위한 코틀린 입문 에서 발췌하였습니다.
https://inf.run/BpYf
1. 조건문
- if는 Java와 문법이 동일하다.
- 단, Java에서의 if는 그 자체로 값이 될 수 없지만, Kotlin에서는 if 자체로 값을 반환할 수 있다.
- in과 ..을 사용하면 범위를 나타내는데 용이하다.
- (Java) swtich case문 = (Kotlin) when
// void 생략 가능
fun isMale(data: String) {
if(data == "male"){
throw IllegalAccessException("${data}로 조건에 부합하지 않습니다.")
}
else{
println("${data}로 조건에 부합하지 않습니다.")
}
}
// Kotlin에서의 if는 Expression으로 값을 바로 대입할 수 있다. (그러므로, 삼항연산자가 코틀린에는 없음)
fun isPostiveOrNagtive(num: Int): String{
return if(num > 0) "양수입니다"
else if(num == 0) "0 입니다"
else "음수입니다"
}
// in .. 을 사용하면 보다 간편하게 범위를 지정할 수 있다.
fun isZeroToTen(num: Int): Boolean{
// (java) (0 <= num && num <= 10)
return num in 0..10
}
// (java) switch case 문 = (kotlin) when
// when에 변수를 할당하지 않아도 사용 가능하다.
fun numToEng(num: Int): String{
return when(num){
0 -> "zero"
1 -> "one"
2 -> "two"
in 3..10 -> "three ~ ten"
else -> "I can't"
}
}
2. 반복문
- (Java) for-each문 = (Kotlin) in
- step : 증감 수치
- downTo : 반대로 수를 낮추면서 반복
- Java에서의 while & do-while 문법은 Kotlin에서도 같다.
fun main() {
var numArr = listOf(1,2,3,4,5)
println("[1]")
// (java) [foreach] int num : numArr
for(num in numArr){
println(num)
}
println()
println("[2]")
// (java) for(int i=0; i<5; i++)
for(i in 0..4){
println(numArr[i])
}
println()
println("[3]")
// downTo를 하면 반대로 수를 낮추면서 반복할 수 있다.
// (java) for(int i=4; i>=0; i--)
for(i in 4 downTo 0){
println(numArr[i])
}
println()
println("[4]")
// step을 이용하면 몇개씩 증가시킬 지 설정할 수 있다.
// (java) for(int i=0; i<5; i+=2)
for(i in 0..4 step 2){
println(numArr[i])
}
// while & do-while은 Java와 같다.
}
3. 예외 처리
- Kotlin에서의 모든 예외는 Unchecked Exception 이다. (throws 던질 필요 X)
- try-catch (finally) 문법은 Java와 동일하다.
- Java의 try-with-resources 대신 Kotlin에서는 use 라는 것을 사용한다.
fun main() {
// 입력을 하는데도 불구하고, throws로 IOException을 하지 않는다.
// Kotlin 에서는 모두 Unchecked Exception 이다. (즉, throws 할 필요X)
var reader = BufferedReader(InputStreamReader(System.`in`))
println(reader.readLine())
}
// try-catch (finally) 문법은 Java와 동일
fun parseIntOrThrow(str: String): Int {
try{
return str.toInt()
} catch(e: NumberFormatException){
throw IllegalArgumentException("${str}은 숫자가 아닙니다.")
}
}
// try with resources 대신 use라는 것을 사용한다. (추후에 공부 예정)
4. 함수 사용 방법
- 함수가 하나의 값을 도출한다면, { } 블록 대신 = 을 사용할 수 있다. (= 을 사용하는 경우, 반환 타입 생략 가능)
- 함수에 default 값을 설정할 수 있다.
- 가변인자 사용 : vararg를 사용하며, 배열로 파라미터를 넣어줄 땐 *을 써야 한다.
fun main() {
println(findMin(5,8))
// 직접 어떤 인자에 무슨 값을 넣을 지도 설정 가능하다. (Java 함수를 가져다 사용하는 경우에는 불가능)
strPrint("Kotlin", newLine=false)
println()
// 가변인자 사용 1번
println(sumAll(1,2,3,4,5))
var numArr = arrayOf(1,2,3,4,5)
println(sumAll(* numArr.toIntArray())) // 배열로 넘기는 경우에는 *을 붙여줘야 한다.
}
// 함수가 하나의 값을 도출해낸다면, { } 블록대신 = 사용이 가능하다. (= 을 사용하는 경우 리턴타입을 생략 가능)
fun findMin(num1: Int, num2: Int) =
if(num1 < num2)
num1
else
num2
// 함수에 default 값을 Setting 할 수 있다.
fun strPrint(
str: String = "Default String",
num: Int = 5,
newLine: Boolean = true
) {
for(i in 1..num){
if(newLine)
println(str)
else
print(str)
}
}
fun sumAll(vararg nums: Int): Int {
var result = 0
for (num in nums) {
result += num
}
return result
}
반응형
'BE > Kotlin' 카테고리의 다른 글
[Kotlin] Lambda Expression (0) | 2023.03.10 |
---|---|
[Kotlin] Collection, 확장/중위함수 (0) | 2023.03.08 |
[Kotlin] object 키워드, 클래스 관련 (0) | 2023.03.07 |
[Kotlin] 클래스, 상속, 접근제어자 (0) | 2023.03.04 |
[Kotlin] 변수, 타입 사용 방법 (0) | 2023.02.22 |