Kotlin Kotlinデフォルト1


1.関数
コトリンで関数を定義する方法は次のとおりです.
特に、他の言語とは違う
functionではなくfunであり、関数名の前に戻りタイプを書く:後ろに書く.
Javaでは戻り値がなければvoidと呼び,kotlinではUnitと呼び省略できる.
fun hello() : Unit {
	println("helloworld")
 }
//argument가 있다면 아래처럼 '변수명:타입'식으로 넣어주면된다. 
fun add(a:Int, b:Int): Int{
    return a+b
}
2.変数valvs var
val(=valueのabb)は定数を表し、再配分できません
変数val(=variableのabb)、再割り当て可能
fun hi(){
    
    val x: Int = 10 
   _// x = 14 error_
    var y: Int = 12 
    y = 14 //okay
    val c=13
    var d=14
}
3.String Template
文字列宣言なしで変数を「」に直接割り当てることができます.
String変数を文字列に入れて変数として扱う場合は->
${変数名}を書けばいいです.Javascriptの場合、backticで文字列、変数を処理します.これと似ています.
fun stringprc(){
    val name= "elle"
    println("my name is ${name} iam 15")
    //$를 이스케이프문자로 취급할때는 \$ 로 써주면 됨
}
4.条件式
基本的なif、else文は他の言語とあまり違いません.
fun max(a:Int, b:Int):Int{
    if(a>b){
        return a
    }else{
        return b
    }
}
でも、Kotlin()?a:bのような3つの演算子は存在しません.
逆に、max関数を以下のように短く表示することもできる.
fun shortmax(a:Int, b:Int):Int = if(a>b) a else b
KotlinにはWhen構文が存在し、javaのswitch文に似ているような気がします.
scoreが文に入ると、対応する列->次の文が実行されます.
この場合(理解)単純なwhen文があり、条件が満たされると変数に値が割り当てられます.
前者はelse文を省略することができ、後者は変数に値を割り当てる必要があり、すべての条件が適切でない場合、最終段階でも値を入れるため、else文は省略できません.
特にin aは...scoreがaからbの間の値である場合、->は次の操作を行います.

fun checkNum(score : Int): Unit{
    when(score){
        0 -> println("this is 0")
        1 -> println("this is 1")
        2 -> println("this is 2")
        3,4 -> println("this is 3 or 4")
        else -> println(" i dont know~")//생략가능
    }
    var b:Int = when(score){
        1 -> 1
        2 -> 2
        else -> 3 //생략불가
    }
    when(score){
        in 90..100 -> println("you did great")
        in 10..80 -> println("cheer up")
        else -> println("..umm")
    }
}
5.Expression vs Statement
このコンセプトについて、先生が親切に教えてくれなかったようなので、グーグルを試してみました.
Expression
Expressionは値を生成します.簡単に言えば、払い戻しと考えられます.
(ただし、Kotlinでは、少なくともunitが返されるため、すべての関数は式です.)
(ただし、Javaではvoid関数はStatementであり、この部分は今からかなり混乱している.)
しかし、このように理解すると、括弧の中には混乱のクライマックスが現れます.
だから正義に戻りましょう.
プログラミング言語の式は、プログラミング言語が異なる値を計算するために解析および計算する1つ以上の明示的な値、定数、変数、演算子および関数の組合せです.
すなわち,単純な1+1と(1,2)も表現とすることができる.
また、Expressionには他のExpressionを含めることができます!
単純変数を宣言
var a=10
割当値
a=20
ローカルクラス宣言
class a{}
聞いたことはすべて表現ではなく、陳述です.
Statement
コンピュータプログラミングでは、文は実行する操作を表すコマンドプログラミング言語の最小の独立要素である.
6. Array vs List
Array
Arrayには固定サイズがあり、メモリに割り当てられているので、事前にサイズを指定する必要があります.
デフォルトでは可変(変更可能)
List
リストはインタフェースです.
(コマンドキー+get()をクリック)
(可変)リスト:変更不可、読取り専用、代表的なArrayList
可変リストかへんりすと:変更可能、読み取り可能、書き込み可能
7行目のようにlistの要素をインポートし、他の変数に割り当てることができます.
6行目のようにリストの要素を直接変更することはできません.
fun array(){
    val arr = arrayOf(1,2,3)
    val list = listOf(1,2,3)
    val arr2 = arrayOf(1, "d",3.4f)

    arr[0] = 3
    //list[0] = 3 ERROR!!
    var b = list.get(0)
    println(b)
}
ArrayList
val arrayList = arrayListOf<Int>()
arrayList.add(10)
arrayList.add(20)

//arrayList= arrayListOf<Int>(1,2,3) ERROR
//val은 reassign될 수 없다.
7.は、while
for
in演算子で学生というarraylist内を回転します.
fun forandwhile(){
    val students = arrayListOf<String>("soo","charm","ham","elle")
    for(name:String in students){
        println("${name}")
    }
}
1から10まで和を求める反復文を作ってみましょう.
	var sum= 0
    for(i in 1..10){
        sum= sum+i
    }
    println(sum)
in演算子には他にも組み合わせられるものがあります.本当に不思議で、面白いです.ほほほ
Stepが言ったように、ステップを踏んでいるように、飛び越えられるやつ.
1、3、5、7、9の順にドアを回します
var sum= 0
    for(i in 1..10 step 2){
        sum= sum+i
    }
    println(sum)
downToの大きい値から、小数方向にドアを回します.
10,9,8,...三二一の順序でドアを回す
var sum= 0
    for(i in 10 downTo 1){
        sum= sum+i
    }
    println(sum)
最後の数字まで計算します.
in 1..100 1~100
in 1~100 1~99
var sum= 0
    for(i in 1 until 100){
        sum= sum+i
    }
    println(sum)
MoonwithIndex()用
val students = arrayListOf<String>("soo","charm","ham","elle")
    for((index:Int, name:String)in students.withIndex()){
        println("${index+1}번째 학생은 ${name}입니다.")

   }
while
ドアは他の言語と似ています
var index= 0
    while(index<10){
        println("current index is ${index}")
        index++
    }
8. NonNull vs Nullable
Javaとは異なるコトリンの最大の特徴の一つ
*NPE : Null Point Exception
var name:String = "Elle"
Nullでは割り当てられないNonNullタイプです.
var nullname:String? = null
Nullが割り当てることができるNullable typeです.
タイプは省略できません.疑問符を追加するだけです.
fun nulltype(){
    var name: String = "joyce"
    var nullname: String?= null
    var nameInUpperCase:String = name.uppercase()
    var nullnameInUpperCase = nullname?.uppercase()
}
.uppercase()名前を大文字に変更します.
でもここです.
var nullnameInUpperCase = nullname.uppercase()
記入のみの場合、エラーが発生します.
var nullnameInUpperCase = nullname?.uppercase()
->nullnameがnullの場合nullnameInUpperCaseはnullを返します
nullでない場合は大文字に変換されます.
エルビス演算子:
nullの場合、デフォルト値を指定できます.
 var name:String = "joyce"
 val lastName:String? = null
 val fullName = name + " "+ (lastName?: "No lastname")
 println(fullName)
lastNameはありますか?なければ「No lastname」と書きます.
結果joyce No lastnameが出力されます.
コートリンタイプのシステム!!
コンパイラにメッセージを送信しないでください...
これは押すんじゃないの!!これはnullableタイプに指定されていますが、nullではないことを保証します!!
fun ignoreNulls(str:String?){
    val mnotNull : String = str!!
}
let関数
letは自分のreceiverオブジェクト(以下email)をramda式内部に移動して実行する
val email:String? = "[email protected]"
    email?.let{
        println("my email ${email}")
    }
//emailがnullでない場合は{}で実行
9.Class
主生と副生参考このブログの記事補充学習

class Human (val name:String = "anonymous"){

    constructor(name: String, age: Int): this(name){
        //부생성자
        println("my name is ${name}, ${age} years old")
    }
    init{
        println("new human has been born!!")
    }
    fun eatingCake(){
        println("this is so yummy")
    }
}

fun main(){
    val human = Human("Minsu")
    val stranger= Human()//이름 넣지 않았기때문에 stranger의 이름은 anonymouse가 된다.
    val mom = Human(name = "kuri", age = 57)

}
メインジェネレータ
:クラス名の横に括弧で囲まれたコード
コトリンのクラスには、1つのプライマリジェネレータと複数のサブジェネレータがあります.
Initは、プライマリコンストラクション関数の一部として、コンストラクション関数の前に作成され、インスタンスの最初の作成時にどのような操作が実行されるかを示します.
class Human(val name:String){}
vala=Human()/ERROR初期値がないため
class Human (val name:String = "anonymous"){
}
匿名ユーザーのデフォルト値を指定できます.
インスタンスの作成時にnameが指定されていない場合は、anonymouseが自動的に割り当てられます.
サブジェネレータ
:クラスブロックに存在するコンストラクタキーワードとコンストラクタキーワードを使用します.
プライマリ作成者が存在する場合、親作成者は作成をプライマリ作成者に直接または間接的に委任する必要があります->this(name)
クラス継承
このブログ編継承に関する記事を参考に学習