[Kotlin]基本構文
kotlinの主要部分リターンレスの場合は設備を使用する必要がある-> を省略してもよい.関数の作成方法 fun関数名(変数名:変数タイプ、変数名:変数タイプ):戻りタイプ{}
->returnがある場合は、常にreturnタイプを指定する必要があります.(省略不可) CまたはJavaの違い 変数名がタイプ書きの より先にリターンタイプはパラメータ化してから使用する必要があります. value=value値を変更しない var=変更可能な値 型は使わなくてもわかるので使わなくてもいい 段、すぐに配らない場合はタイプを使います.
ex) var e : String e='OkHui' valかvarかを明記します. 変数を出力したい場合は$タグを使用します.
結果
文字を出力するには、前に書かなければなりません.
結果
ジャワ
Javaのcaseに似た機能です. elseは省略できます
変数ではelseは を省略することはできない.
Expression生成値 Statementは、値を作成するのではなく実行する です.コトリンは返されませんが、unit->コトリンを返すすべての関数はExpression です. javaは、「尊敬->Expression」の関数 ではなくvoidという戻り値のない関数を作成できます.
if文が宣言文のみを使用する場合、 javaはExpressionとStatementを使用できます. アレイにはメモリが割り当てられており、初期サイズは です. List リスト(変更不可、読取り専用) MutableList(修正可能、読み書き可能)
NPE : Null Pointer Exception
デフォルト値ではなく nullの場合、
保証は nullではなく ですが本当にnullの場合にのみ使用されます!
Kotlin javaは、次のようなコンストラクション関数ブロックを作成しますが、cottlinはコンストラクション関数()をクラス名の横に書きます: Java
Kotlinの最初のエラーで見られたvalname=nameは、以下に示すようにクラスHuman(valname:String)を使用することができる. なぜコトリンでopenを入れたのですか? コトリンはfinalなので、同じファイルでもアクセスできません.
fun main(){
}
1.関数
fun helloWorld() : Unit {
println("Hello World!")
}
fun add(a : Int, b : Int) : Int{
return a+b
}
->returnがある場合は、常にreturnタイプを指定する必要があります.(省略不可)
2. val vs 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'
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")
}
}
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")
}
}
Expression vs Statement
if文が宣言文のみを使用する場合、
5. Array and List
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
?
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
}
?:
デフォルト値ではなく
fun nullcheck(){
val lastName : String? = null
val fulName = name + " " + (lastName?: "No lastName") //lastName이 있으면 lastName출력 없으면 "No lastName"으로 출력
println(fulName)
}
!!
保証は
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(){
}
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~~~")
}
}
継承
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}")
}
Reference
この問題について([Kotlin]基本構文), 我々は、より多くの情報をここで見つけました https://velog.io/@1000oki/Kotlin-기본-문법テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol