4차산업혁명의 일꾼/Java&Spring웹개발과 서버 컴퓨터

자바와 코틀린 차이및 코틀린 특징 1(타입지정, 함수호출, 변수타입, 상속, 조건문, 반복문)

르무엘 2023. 2. 5. 16:39

자바와 코틀린 차이 및 코틀린 특징

1.  메인 함수에서 fun main() 에서 바로 호출 가능

fun main(){

}

 

2. 타입 지정 방식

// 2. 함수
fun test(a: Int, b: Int=3) : Int {
    println(a+b)
    return a+b
}

- 자바 처럼 Int a 가 아니라 a: Int 이런 식이다.

- 자바에서 return 타입이 앞에 있는데 뒤에 =>  : Int  이런식으로 되고 없으면 

자바의 void 처럼 빈형태가 기본적으로 return 된다.

 

3.   { } 없이 = 으로 함수 구현가능

fun test2(name:String, nickname:String, id:String) = println(name+nickname+id)
    //print(name + nickname + id)

fun time(a:Int,b:Int ,) = a*b

 

4. 상수는 val 로 표현 변수는 var 이고 변경 가능

// 상수 val , 변수 var

 

5. 코틀린에서 상속(open class , open val name : String) - 하기 참조

클래스에서 init이 가장 먼저 호출 되고 constructor이 두번째로 호출된다.

// 상속시에는 open class 해야함
open class User(open val name : String, open var age: Int =100)

// 상속받기
class Kid (override val name:String, override var age:Int) :User(name,age){
    var gender :String ="male"
    
    // 클래스에서 가장 먼저 호출
    init{
        println("초기화 중 입니다.")
    }
    
    // 클래스에서 두번째로 호출
    constructor(name:String, age:Int, gender: String) : this(name, age){
        this.gender=gender
        println("부생성자 호출")
        println(gender)
    }
}

 

 

6. 조건문도 { } 없이 간단하게 표현 가능

switch 는 when 구문으로 변경(하기 참조)

// 조건식
fun main(){
     max(10,3)
    isHoliday("월")
}

// 함수에 void return이 기본
fun max(a:Int,b:Int){
    // if를 변수로 받을수 있음
    val result= if(a>b) a else b
    println(result)
}

// 월 화 수 목 금 토 일  
// any  로 해서 아무거나 받게 할 수 있음
fun isHoliday(dayOfWeek: Any){
    var result = when(dayOfWeek){
        "토" ,   // 중간에 if문 추가 가능
        "일" -> if(dayOfWeek == "토") "ok" else "very good"
        in 2..4 -> {}
        in listOf("월","화")-> {}
        else -> "no good"
    }
    println(result)
}

 

7. 반복문의 변경

- 향상된 for문을 쓴다.

- IntRange로 범위 지정이 가능하다.(하기 참조)

- until 로도 범위 지정이 가능하다.(하기 참조)

- step , downTo 를 써서 향상 숫자 변경이 가능하다

 

// 반복문
fun main(){

    //  IntRange(1,10) == 1..10  => 이두개는 같다
    for(i in IntRange(1,10)){
        print(i)
        print(",")
    }
    println()
    // until 은 10을 포함하지 않는다
    for(i in 1 until 10){
        print(i)
        print(",")
    }
    println()
    // step 으로 2씩 띄어갈수 있다.
    for(i in 1..10 step(2)){
        print(i)
        print(",")
    }
    println()
    // downTo로 1씩 작아지게 말들수있다
    for(i in 10 downTo 1){
        print(i)
        print(",")
    }
    println()
    // downTo까지의 step단계를 설정할수 있다.
    for(i in 10 downTo 1 step(2)) {
        print(i)
        print(",")
    }
    println()
    var c =0
    while(c < 11){
        print(c)
        print(",")
        c++
    }

}

 

 

 

 

LIST