[kotlin] kotlin Basic Syntax java와 비교

2018. 6. 13. 17:47kotlin-이론

[kotlin] kotlin Basic Syntax



1. package 
패키지는 자바에서 기존에 사용하던 방법과 비슷하지만 꼭 폴더의 파일 위치에 따라 지정해주지 않아도 된다.  


한마디로 자기 마음대로 패키지명을 지정할 수 있다는 것이다.


2. 함수선언

-java

public class main {
    public static void main(String[] args){
        main a = new main();
        System.out.println(a.add(2, 4));
    }
    int add(int a, int b){
        return  a+b;
    }
}


-kotlin 

fun main(args: Array) {

println(add(1, 4)) } fun add(a:Int, b:Int):Int = a+b //함수식 형태는 리턴 생략가능

//fun add(a:Int, b:Int):Int{}이런식으로 사용해도 된다.


fun ss():Unit{}

//void함수와 같다

자바와 달리 코틀린에서는 함수의 인자, 반환하는 형태 선언이 다르다.  그럼 여러분은 어 그럼 void는 어떻게 만들지 ????라고 그건 함수이름(인자들)Unit을 적어주면 된다. 이것 또한 생략 가능하다.


3. 변수 선언


val b:Int = 3 var a:Int = 2 a = 2 b = 5 //error발생

var은 우리가 일반적으로 선언하는 일반 변수 

val은 자바에서 쓰이는 final형과 같은 것이다. 만들자 마자 데이터 값을 할당해주어야 한다. 


4. 주석


한줄을 쓸 때는 //

여러줄을 쓸 때는 /**/


5. 문자열 

예시1)

val a:String = "hoony_computer"

println("my blogName is $a")


결과

my blogName is hoony_computer  

위의 코드에서 $표시 후 변수 이름을 넣으면 그 변수가 실행된다. 


예시 2)

val a:String = "hoony_computer" println("my blogName is ${a.replace("computer", "컴퓨타")}")

결과

my blog Name is hoony_컴퓨타 


이런식으로도 사용할 수 있다. 



nullable 


자바와 달리 nullpointException을 처리하기 위한 방법을 코틀린에서 지원해주고 있다. 


val a:String = "hoony_computer" val b:Int?= add(1, null) if (b ==null) println(a) else println("hi null이 아니야") fun add(a:Int?, b:Int?):Int? = b


원래는 오류가 발생하여 실행되면 안되지만 정상적이게 hoony_computer가 출력된다. 그 비밀은 인자의 옆에 붙어있는 ?때문이다. ?의 뜻은 이것이 이 인자형일 수 도 있고 null일 수도 있다는 말이다.  이 방법을 통해 오류없이 nullPointException을 처리할 수 있다. 


auto type change


fun main(args: Array) {
    val a:String = "hoony_computer"
    println(ab(a))
}

fun ab(obj:Any):String = if(obj is String) "난 스트링이야" else "난 스트링 아니지"


fun ab(obj:Any):String = if(obj is String) "난 스트링이야" else "난 스트링 아니지"

이코드에서 Any는 최상위 클래스를 뜻한다. 따라서 if문 사이에 있는  조건식 obj는 인자형에 맞게 자동으로 변형된 것이다.  

그리고 위와 같이 kotlin에서는 조건식을 한줄로 간편하게 나타낼 수 있다. 


when


솔직히 이건 대박이다. switch와 비슷하면서 switch에서는 변수의 인자 데이터 형이 제한되어 있는데 kotlin에서는 전혀 제한이 없다 크크크크 유용하게 써먹을 수 있을 것 같다. 


fun main(args: Array

) { val a:String = "hoony_computer" whenTest("hoony") whenTest(1) whenTest(2345) } fun whenTest(a:Any){ when(a){ 1 -> println("you are number one") "hoony"-> println("computer") 'a'->println("bcdefghi") 2345 -> println(1234) a is String -> "데이터형까지 사용가능하다는 것이다"
else -> println("unknown")
        }}

결과


else 일때는 아무 조건도 맞지 않을 때 호출된다. 


range


반복문이나 조건문을 사용할 때 약간 파이썬이나 es6처럼 비슷하게 사용할 수 있다.


조건문 

var x = 3

if( x in 1..5){

}


반복문 

for ( x in 1..5){

println(x)

}

 


'kotlin-이론' 카테고리의 다른 글

[kotlin]Class  (0) 2018.06.15
[kotlin]Return and Jumps (break 문, continue 문, return 문)  (0) 2018.06.15
[kotlin]코틀린 controlFlow  (0) 2018.06.15
[kotlin]코틀린 BasicType  (0) 2018.06.14
[kotlin] kotlin 시작하기  (0) 2018.06.13