Language/Kotlin

[Kotlin 기초]

moguogu 2022. 9. 4. 16:03

1. function 

//메인함수
fun main(){
	println("Hello World!")
}

//sum 을 반환하는 함수
fun sum(a: Int, b:Int) : Int{
	return a+b
}

//같은 동작 다른 형태
fun sum(a: Int, b:Int) = a+b

//반환을 안하고 출력하는 함수
fun printSum(a: Int, b:Int) {
	println("sum of $a and $b is ${a+b}")
}

2. Variables

- val : read-only 로컬 변수를 선언할 때 사용함 -> 오직 단 한번만 값을 할당할 수 있음

- var: 여러번 값을 할당할 수 있음, 로컬에서만 사용하지 않아도 됨 

//val 

val a : Int =1  // immediate assignment 
val b= 2 // int type is inferred
val c : Int //type required when no initializer is provided
c= 3

// var 

var x = 5 //'Int' type is inferred

3. Classes and Instances

//class 선언 
class Rectangle (var height: Double, var length: Double){
	var perimeter = (height+ length)*2
}

//class 호출 -> 자동으로 default constructor와 class 선언이 가능함 
val rectangle = Rectangle(5.0, 2.0)
println("The perimeter is ${rectangle.perimeter}")

//상속 

open class Shape

class Rectangle(var height: Double, var weight: Double): Shape(){
	var perimeter = (height+ length)*2
}

4. String 

//변수 선언
var a =1  
val s1 = "a is $a"
a= 2 
//s1의 is 를 was로 대체
val s2 = "${s1.replace("is", "was")}, but now is $a"

//결과
//a was 1, but now is 2

5. for loop

//list 선언
val items = listOf("apple", "banana", "kiwi")

//list 출력
for(item in items){
	println(item)
}
//or
for(index in items.indicies){
	println("item at $index is ${items[index]"}
}

6. while loop

val items = listOf("apple", "banana" , "kiwi")
var index=0

while(index< items.size){
	println("item at $index is ${items[index]}")
    index++
}

7. Ranges

//range with if 
val x = 10
val y = 9
if(x in 1..y+1)
	println("fits in range")

//range with for--(1)
for(x in 1..10 step 3)
	println(X)
    
//range with for--(2)
for(x in 9 downTo 0 step 3){
	print(x)
}

8. Nullable values and null checks

 

nullable type의 이름은 ?를 끝에 가져야한다 

fun parseInt(str:String): Int? {
	//...
}
//str이 integer값을 가지고 있지 않는 경우 null을 반환함 

fun printProduct(arg1: String, arg2: String) {
    val x = parseInt(arg1)
    val y = parseInt(arg2)

    // Using `x * y` yields error because they may hold nulls.
    if (x != null && y != null) {
        //x와 y는 자동으로  null 체크 후 non-nullable로 바뀜
        println(x * y)
    }
    else {
        println("'$arg1' or '$arg2' is not a number")
    }    
}

 

참고

https://kotlinlang.org/docs/basic-syntax.html#type-checks-and-automatic-casts

'Language > Kotlin' 카테고리의 다른 글

[Kotlin] Null Safety  (0) 2022.09.13