[Kotlin]基本構文


kotlinの主要部分
fun main(){
	
}

1.関数

fun helloWorld() : Unit {  
    println("Hello World!")
}
  • リターンレスの場合は設備を使用する必要がある->
  • を省略してもよい.
    fun add(a : Int, b : Int) : Int{
        return a+b
    }
  • 関数の作成方法
  • fun関数名(変数名:変数タイプ、変数名:変数タイプ):戻りタイプ{}
    ->returnがある場合は、常にreturnタイプを指定する必要があります.(省略不可)
  • CまたはJavaの違い
  • 変数名がタイプ書きの
  • より先に
  • リターンタイプはパラメータ化してから使用する必要があります.
  • 2. val vs var

  • value=value値を変更しない
  • var=変更可能な値
  • fun hi(){
        val a:Int = 10 // 변하지 않는 값 value
    
        var b:Int = 9 //바뀌어도 되는 값 variable
    
        // a=10 -> 에러
        b=10 //가능
    
        val c = 100
        var d =100
    
        var name = "joyce"
        
  • 型は使わなくてもわかるので使わなくてもいい
  • 段、すぐに配らない場合はタイプを使います.
    ex) var e : String e='OkHui'
  • valかvarかを明記します.
  • 3. String Template

    fun main(){
    	val name = "OkHui"
    	val lastName = "Cheon"
        println("My name is ${name + lastName} I'm 23")
    }
  • 変数を出力したい場合は$タグを使用します.
    結果
  • fun main(){
    	 println("this is 2\$a")
    }
  • 文字を出力するには、前に書かなければなりません.
    結果
  • 4.条件式

    fun macBy(a : Int, b:Int) : Int{
        if (a>b){
            return a
        }else{
            return b
        }
    }
    簡潔なコードに変更
    ジャワ
    return(a>b) ? a: b
    コトリン
    fun maxBy2(a:Int, b:Int) = if(a>b) a else b

    when


    Javaのcaseに似た機能です.
    fun checkNum(score:Int){
        when(score){
            0 -> println("this is 0")
            1 -> println("this is 1")
            2,3 -> println("this is 2 or 3")
            else -> println("I don't know")
        }
     }
  • elseは省略できます
  • fun checkNum(score:Int){
    	var b = when(score){
            1->1
            2->2
            else -> 3
        }
    println("b : ${b}")
    
    when(score){
            in 90..100 -> println("You are genius")
            in 10..80 -> println("not bad")
            else -> println("okay")
        }
    }
  • 変数ではelseは
  • を省略することはできない.

    Expression vs Statement

  • Expression生成値
  • Statementは、値を作成するのではなく実行する
  • です.
  • コトリンは返されませんが、unit->コトリンを返すすべての関数はExpression
  • です.
  • javaは、「尊敬->Expression」の関数
  • ではなくvoidという戻り値のない関数を作成できます.
    if文が宣言文のみを使用する場合、
  • javaはExpressionとStatementを使用できます.
  • 5. Array and List

  • アレイにはメモリが割り当てられており、初期サイズは
  • です.
  • List
  • リスト(変更不可、読取り専用)
  • MutableList(修正可能、読み書き可能)
  •   fun array(){
        val array = arrayOf(1,2,3) //arrayOf->배열 초기화
        val list = listOf(1,2,3) //listof -> 초기화
        val array2 = arrayOf(1,"d",3.4f)
        val list2 = listOf(1,"d",11L)
    
        array[0] = 3 //가능
        //list[0]=3 -> 불가
        var result = list.get(0) //가져오는 것만 가능
    
        var arrayList = arrayListOf<Int>()
        arrayList.add(10)
        arrayList.add(20) //추가 가능
    }

    6. for / while

    fun forAndWhile(){
        val students = arrayListOf("joyce", "james","jenny","jennifer")
        for(name in students){
            println("${name}")
        }
    
        var sum:Int=0
        for(i in 1..10 step 2){  //1,3,5,7,9
            sum += i
        }
        println(sum)
    
        for(i in 10 downTo 1){  //10부터 1까지
            sum += i
        }
        println(sum)
    
        for(i in 1 until 100){  //1..100은 1부터 100까지, 1 until 100은 1부터 99까지
            sum += i
        }
        println(sum)
    
        for((index,name)in students.withIndex()){ //students의 인덱스와 이름사용
            println("${index+1}번째 학생 : ${name}")
        }
    
        var index = 0
        while(index < 10){
            println("current index : ${index}")
            index++
        }
    }

    7. Nullable / NonNull


    ?

  • NPE : Null Pointer Exception
  • fun nullcheck(){
        //NPE : Null Pointer Exception
    
        var name : String = "OkHui"
    
        //var nullName : String = null ->오류
        var nullName1 : String? = null //?넣으면 가능
    
        var nameInUpperCase = name.toUpperCase() //nonNull타입이라 null일 수가 없어 바로 사용 가능
    
        //var nullNameInUpperCase = nullName1.toUpperCase() -> nullName1은 null일 가능성이 있어 check가 필요
        var nullNameInUpperCase = nullName1?.toUpperCase() // -> ?의 뜻은 nullName1이 null이면 전체가 null반환, null이 아니면 toUpperCase
    }

    ?:


    デフォルト値ではなく
  • nullの場合、
  • fun nullcheck(){
    	val lastName : String? = null
    
    	val fulName = name + " " + (lastName?: "No lastName") //lastName이 있으면 lastName출력 없으면 "No lastName"으로 출력
    
    	println(fulName)
    }

    !!


    保証は
  • nullではなく
  • です
  • が本当にnullの場合にのみ使用されます!
  • fun ignoreNulls(str : String?){
        val mNotNull : String = str!!
        val upper = mNotNull.toUpperCase()
    
        val email : String?= "[email protected]"
        email?.let{
            println("my email is ${email}")  //let은 자신의 리시버 객체를 람다식 내부로 옮겨서 실행하는 함수 -> email이 null이 아니면 람다식 내부로 옮겨준다.
        }
    }

    8. Class


    Kotlin
    class Human constructor(name:String) {
        val name = name
    
        fun eatingCake(){
            println("This is so YUMMY~~~")
        }
    }
    Java
     Human(){
    
        }
  • javaは、次のようなコンストラクション関数ブロックを作成しますが、cottlinはコンストラクション関数()をクラス名の横に書きます:
  • Java
    class Person{
           public Person(String name){
         }
    
         public Person(String name, int age){
            this(name);
         }
    }
    Javaでは、親ジェネレータを作成しましたが、コトリンは次の内容を作成しました.
    Kotlin
    open class Human (val name:String = "Annoymous") { //constructor 생략가능. default값도 넣을 수 있음
     
        constructor(name:String, age : Int) : this(name){ //부생성자는 주 생성자의 위임을 받아야함 this(name)
            println("my name is ${name}, ${age}years old")
        }
    
        init{ // 주 생성자의 일부
            println("New human has been born!!")
        }
    
        fun eatingCake(){
            println("This is so YUMMY~~~")
        }
    }
  • の最初のエラーで見られたvalname=nameは、以下に示すようにクラスHuman(valname:String)を使用することができる.
  • なぜ
  • コトリンでopenを入れたのですか?
  • コトリンはfinalなので、同じファイルでもアクセスできません.
  • 継承

    class korean : Human(){ //상속을 받기 위해 :뒤에 써줌. 
    }

    main

    fun main(){
        val human = Human("minsu") //자바에서는 new키워드를 썼지만, 코틀린은 그냥 써주면 됨.
        val stranger = Human()
        human.eatingCake()
    
        val mom = Human("young", 49)
    
        println("this human's name is ${human.name}")
        println("this human's name is ${stranger.name}")
    }