Kotlin学習の開始編—基礎文法
12358 ワード
Kotlin学習の開始編—基礎文法
KotlinはAndroidに公式言語として受け入れられてもう一年以上経ちました。今勉強を始めました。本当に恥ずかしいです。少しずつ進歩して、最後までKotlinでアプリを開発したいです。余計なことは言わない。Let’s get started!
1.定義パッケージ
2.定義関数
2.1有参、戻り値関数があります。
このような関数は1つの表現しかないです。戻り値の種類は自動的に推測できる関数です。以下のように簡単に書くことができます。
3.1宣言変数
3.2リードオンリー変数(定数)
4.コードコメント
Javaと同じです
6.条件式を使う
if文:
7.空き値を使って、null検査を行います。
セキュリティコール
文字列の長さを取得します。空の場合は-1を返します。
9.forサイクルを使う
10.whileサイクルを使う
11.when表現を使う
12.レンゲを使う
レンゲの繰り返しは、1から5まで印刷されます。
集合の遍歴上で紹介しましたので、ここでは言いません。
lamda表現を使用して、セットをフィルタやマッピングなどの操作を行います。
APPLE PINEAPPLE
14.クラスの作成例
初めてKotlinに接触しましたので、間違いがありますので、ご指導をお願いします。
KotlinはAndroidに公式言語として受け入れられてもう一年以上経ちました。今勉強を始めました。本当に恥ずかしいです。少しずつ進歩して、最後までKotlinでアプリを開発したいです。余計なことは言わない。Let’s get started!
1.定義パッケージ
package my.demo
import java.util.*
// ...
パッケージ名はソースファイルの先頭に置きますが、Javaとは別に区別がないようです。終端番号;
を除いて終わります。これはKotlin
とJava
の大きな違いであり、語句の最後は加算番号;
を用いない。2.定義関数
2.1有参、戻り値関数があります。
fun sum(a: Int, b: Int): Int {
return a + b
}
二つのIntタイプのパラメータが入ってきて、Int値を返します。関数名の前にキーワードを追加します。パラメータタイプと戻り値タイプの定義はJavaとは大きく異なります。このような関数は1つの表現しかないです。戻り値の種類は自動的に推測できる関数です。以下のように簡単に書くことができます。
fun sum(a: Int, b: Int) = a + b
2.2有参、戻り値関数なしfun printSum(a: Int, b: Int): Unit {
println("sum of $a and $b is ${a + b}")
}
キーワードfun
は、Java内のUnit
キーワードと同様である。無意味な値を返す、または無リターン値を返すということが理解される。戻り値のない関数は以下のように簡単に書くことができます。fun printSum(a: Int, b: Int) {
println("sum of $a and $b is ${a + b}")
}
3.変数の定義3.1宣言変数
var a: Int = 1
var b = 2
変数を宣言するときはvoid
キーワードを使用して、タイプを定義しなくてもいいです。定義しないとシステムは自動的にそのタイプを推論します。これはJava変数宣言と最も異なるところです。Javaの変数はタイプを宣言しなければなりません。3.2リードオンリー変数(定数)
val c: Int = 2
キーワードvar
で読み取り専用変数を定義します。変数は初期化された後、再び値を割り当てられません。Javaにおいてval
キーワードを使用して1つの定数を定義するのと同様である。4.コードコメント
Javaと同じです
//
/*
*/
5.文字列テンプレートを使うvar a = 1
// :
val s1 = "a is $a"
a = 2
// :
val s2 = "${s1.replace("is", "was")}, but now is $a"
ドル記号final
+変数名を使うと、その変数の値を参照できます。外部にダブルクォーテーションをかけることを忘れないでください。参照時にも値を動作させることができますが、このような動作は元の変数(上のコードの$
)の値を変更しないことに注意が必要です。6.条件式を使う
if文:
fun maxOf(a: Int, b: Int): Int {
if (a > b) {
return a
} else {
return b
}
}
一番大きな値を得る方法はJavaの書き方と同じですね。ハハハ。実は簡単に書くことができます。fun maxOf(a: Int, b: Int) = if (a > b) a else b
一行のコードを書いてください。これは伝説のs1
です。上手になりました。書いたら確かに楽です。7.空き値を使って、null検査を行います。
var a: String = "323"
var b: String? = "dfd"
疑問符
を使用して、変数bが空であることを示していますが、変数aは必ず空ではなく、使用中に変数aに?
値を付与すると、自動的にエラーが発生するので、null
のように安心して動作できます。a.length
を呼び出すと、変数bが空である可能性があるので、エラーが発生します。もし呼び出しが必要であれば、NullPointException
の代わりにセキュリティ呼子b.length
を使用することができ、例えば?.
の場合、bが.
の場合、この方法はb?.length
の代わりにnull
に戻る。セキュリティコール
null
については、例えば、オブジェクトNullPointException
があります。オブジェクトパラメータ?.
があります。対象のSchoolに文字列変数Person
があります。この人の学校の名前を教えてください。一般に、school
を使用するが、オブジェクトschoolName
がPerson.school.schoolName
またはperson
がnull
である場合、このような呼び出しはschool
が発生し、もしセキュリティコールを使用すると、オブジェクトが空である限り、結果は直接エラーではなくnull
に戻る。fun printProduct(arg1: String, arg2: String) {
// , null
val x = arg1.toIntOrNull()
val y = arg2.toIntOrNull()
if (x != null && y != null) {
// x y
println(x * y)
} else {
// ,
println("either '$arg1' or '$arg2' is not a number")
}
}
上のようなnull検査はJavaの書き方と同じです。操作する前にnullかどうか確認してください。文字列の長さを取得します。空の場合は-1を返します。
val l: Int = if (b != null) b.length() else -1
もう一つの簡単な書き方:Javaの中の3つの目の演算に似ています。空でなければ、bの長さに戻ります。そうでなければ、-1に戻ります。val l = b.length()?: -1
8.タイプチェックと自動変換 fun getStringLength(obj: Any): Int?{
return if(obj is String) obj.length else null
}
NullPointException
オペレータを使用してパラメータの種類を判断し、Java内のPerson?.school?.schoolName
オペレータと同様に、判断後、その対応するクラスの方法を直接呼び出すことができ、タイプ変換を行ったに相当する。上のnull
タイプはJavaのis
タイプと似ています。すべての種類の親タイプです。9.forサイクルを使う
val items = listOf("apple", "banana", "kiwifruit")
for (item in items) {
println(item)
}
Javaでは、コロンinstanceof
を巡回オペレータとして使用し、KotlinはAny
を使用している。もう一つのKotlinの書き方は以下の通りです。val items = listOf("apple", "banana", "kiwifruit")
for (index in items.indices) {
println("item at $index is ${items[index]}")
}
Object
の:
によって循環される。10.whileサイクルを使う
val items = listOf("apple", "banana", "kiwifruit")
var index = 0
while (index < items.size) {
println("item at $index is ${items[index]}")
index++
}
Javaと同じです11.when表現を使う
fun describe(obj: Any): String =
when (obj) {
1 -> "One"
"Hello" -> "Greeting"
is Long -> "Long"
!is String -> "Not a string"
else -> "Unknown"
}
Javaにおけるin
式と同様であるが、list
はより強力な機能を有し、分岐条件として式を用いることができる。index
は、Switch
式の代わりに使用されてもよい。12.レンゲを使う
val x = 10
val y = 9
if (x in 1..y+1) {
println("fits in range")
}
キーワードwhen
を使用して、数値がある範囲内にあるかどうかを確認する。val list = listOf("a", "b", "c")
if (-1 !in 0..list.lastIndex) {
println("-1 is out of range")
}
if (list.size !in list.indices) {
println("list size is out of valid list indices range too")
}
数値がある範囲外にあるかどうかをチェックします。レンゲの繰り返しは、1から5まで印刷されます。
for (x in 1..5) {
print(x)
}
13.Collectionを使う集合の遍歴上で紹介しましたので、ここでは言いません。
lamda表現を使用して、セットをフィルタやマッピングなどの操作を行います。
fun printSpecificFruit(){
var fruits = listOf("apple", "orange", "pearl", "pineapple")
fruits.filter { it.contains("ap") }
.sortedBy { it }
.map { it.toUpperCase() }
.forEach { println(it) }
}
キーワードwhen
は、セット内の単一のエントリを指すために使用される。if - else if
方法でコンテンツをフィルタリングし、in
方法でセット順序付け、it
方法をマッピングし、最後に印刷された内容は以下の通りである。APPLE PINEAPPLE
14.クラスの作成例
var rectangle = Rectangle(5.0, 2.0)
var triangle = Triangle(3.0, 4.0, 5.0)
Javaと比べて、キーワードfilter
さえ使わなくなりました。初めてKotlinに接触しましたので、間違いがありますので、ご指導をお願いします。