kotlin

Kotlin 기본 형, loop ,if

slow333 2023. 1. 14. 11:49

1. 변수 and …

    var 일반적인 변수 언제든지 읽기 쓰기가 가능함       à variable

    val 선언 초기화 가능, 중간에 값을 변경할 없음 à value

    외의 Scope 내에 선언된 변수 Local Variable(로컬 변수)

    kotlin 모든 함수는 expression return 값이 있음 : void == Unit

2. 자료형

    정수 : Byte, Short, Int, Long (8,16,32,64 bits)

·    Long 숫자뒤에 L  16진수는 0x1af   2진수는 0b10011101

·    실수 : Double(기본), Float(16비트) à 123.5    123.5f    123.5e10

    문자 : 16비트 작은 따음표로 ‘a’

    boolean

    문자열 : “” 표시

    array vs list

·    array( arrayOf ) : 크기 변경은 안되도 내용 변경은 가능

·    list(listOf) : 내용, 크기 변경이 안됨(읽기 전용)

·    arrayListOf mutableListOf 추가, 변경,삭제가능 à 같은 것임

3. 변환

    toByte(), toShort(), toInt(), toString(), toDouble

    배열

fun typEx(){

    var intArr = arrayOf(1,3,4,5,6)
    var nullArr = arrayOfNulls<Int>(5)

    intArr[2]= 8

    println(intArr[2])
    println(nullArr[2])

    var numOfArr = intArr.count() // array의 개수 확인
    var ml = mutableListOf(“abc”, “sort”, “book”, “biil1”, “book2”, “Roll”)
    val c2 = ml.count { it.startsWith("b") }
    val c3 = ml.count { it.last().isDigit() }
    val sm = mutableSetOf(4, 3, 2, 1, 5, 6, 7)
    val rs = sm.count { it >= 5 }
}

4. 타입추론(type inference)

    자료형이 자동으로 지정됨

var a = 1234

var b = 1234L

    함수

fun add (a: Int, b:Int, c:Int): Int {

    return a + b + c

}

    단일표현식(single expression)

fun add(a: Int, b:Int, c:Int) = a + b + c

5. 조건문(if, when)

fun main() {

    var a : Int = 2

    if (a >10) {
        println("10보다 큼")
    } else {
        println("10보다 작음")
    }
    if (a > 10) println(“333”) else println(“23”)
}

a is Int  // 형 비교 a가 Int 인가?

fun main() {

    doWhen("나나")
    doWhen(393L)
    doWhen(33)
    doWhen(394.22)
    doWhen("아무거나")
}

fun doWhen(a: Any) {

    var result = when(a) {
        1 -> println("정수1임")
        "나나" -> println("이름이 뭐니")
        is Long -> println("Long 타입")
        is Int -> println("정수입니다")
        !is String -> println("String 타입 아님")
        else -> println("어떤 것도 아님")
    }
    println(result)
}

fun main() {
    whenEx(40)
    whenEx(101)
}

fun whenEx(i : Int){
    var result = when (i){
        in 1..30 -> println("failed")
        in 31..60 -> println("try again")
        in 61..100 -> println("passed")
        else -> println("not score")
    }
    println(result)
}

6. 반복문과 증감연산자

조건형 반복문

    while 조건을 확인하고 수행

    do while 문은 조건 없이 한번은 do 실행하고 조건에 따라 수행

fun afterWhile(){
    var a = 0
    while(a < 5){        print(a++)    }
}

fun preAdd(){
    var b = 0
    while (b < 5){        print(++b)    }
}

fun exDoWhile(){
    var c = 0
    do{        print("${c++} @")    } while (c < 4)
}

범위형 반복문(for)

fun exFor(){
    for(i in 0..9 step 2){
        print("$i / ")
    }

    for(j in 'a'..'f' step 2){
        print("$j char. ")
    }
}

fun exForDown(){
    for(i in 6 downTo -3 step 3){
        print("$i downTo |")
    }
}

 

7. 흐름제어와 논리연산자(return, break, continue, loop)

return

    완전히 밖으로 나옴

fun reEx(){
    for (i in 1..5) {
        if(i==3) {
            return println(i)
        } else {
            print("$i, ")
        }
    }
    println("완전히 나가서 프린트 안됨")
}

beak

    반복문이 실행되는 중간에 즉시종료하고 다음 구문으로 넘어감

fun breakEx(){
    for(i in 1..7){
        if (i == 5) break
        print("$i . ")
    }
    println(“..”) // 프린트 안됨
}

continue

    다음 반복조건으로 즉시 넘어가는 역할을 수행, 뒤에 실행하지 않고 위로 가서 수행

fun continueEx(){
    for(i in 1..8){
        if (i == 4 ) continue
        print("$i . ")
    }
    println("  //") //이건 프린트됨
}

rootine(@loop)

fun loopBreak(){
    for (i in 1..4){
        for (j in 1..4){
            if (i==1 && j==2) break
// 1,2 만 안나오고 다나옴, 이 for 문에서만 나감, 어디 까지 나갈지 지정해야함
            println("i : $i, j: $j")
        }
    }
}

fun loopTo(){
    loop@for (i in 1..4){
        for (j in 1..4){
            if (i==1 && j==2) break@loop
            println("i : $i, j: $j")
        }
    }
}

논리 연산자(&&, ||, !)

    &&(and), ||(or) , !(not)

-------------------------------------------------

fun main() {

    println(true && true)

    println(true && false)

    println(true || false)

    println(!true)

}