Kotlin在線工具:https://try.kotlinlang.org/#/Examples/Hello,%20world!/Simplest%20version/Simplest%20version.kt
目錄
- 輸出語句
- 變量類型
- 函數定義
- 防止null調用方法(防止空指針異常)
- 不支持三目運算符
- 位運算符和其他運算符 + 運算符優先級
- 流程控制
一、輸出語句
print();
println();
二、變量類型
1.聲明所有變量均使用var,編譯器會自動進行類型推斷
1.1 常量聲明使用val
1.2 變量聲明時可手動指明類型:var data:Byte
1.3 var類型默認約束爲Any
2.對於函數參數類型和返回值,需要手動指定類型
數字類型:
Byte:8
Short:16
Int:32[Default]
Long:64
Float:32[1.2F]
Double:64[Default]
3.141592653589793238.toInt() //截斷
布爾類型:
Boolean:
false
true
字符:
Char
字符串:
String
元組:
二元:var data1 = Pair(1,2);
data1.first
data1.second
三元:var data2 = Triple(1,2,3);
data2.first
data2.second
data2.third
可空類型:
類型後加一個?:Int?,String?,Boolean?
// 報錯
fun test():Int{
println("hello\n");
return null;
}
// 成功
fun test():Int?{
println("hello\n");
return null;
}
一維數組(一種可以使用lambda表達式初始化,一種自定義值初始化):
var x = Array<Int>(10){1};
var x = Array<String>(10){i->(i+1).toString()};
var x = Array<Int>(10){i->i};
arrayOf(1,2,true,"hello");
arrayOf<Int>(1,2);
arrayOf<Long>(1,2);
arrayOf<Float>(1.2F,2.2F);
arrayOf<Double>(1.2,2.5);
arrayOf<Boolean>(true,false);
獲取長度:
.size
二維數組:
var x = Array<Int>(10){i->i};
var y = Array(5){x};
列表:
fun main(args: Array<String>) {
var x = arrayOf<Int>(444,555,666);
var y = arrayListOf<Int>(1,1,1,2,2,3);
var z = arrayOf<Int>(1);
y.add(4);
y.add(0,99);
y.addAll(x);
y.remove(1); // 移除第一個
y.removeAll(z); // 移除全部
y.retainAll(x); // 移除x之外的所有數據
println(y);
}
三、函數定義
1.main函數
fun main(args:Array<String>){
}
2.自定義函數
fun test():Int{
}
四、防止null調用方法(防止空指針異常)
1."?." 允許null調用方法,不報錯,結果返回null
fun test():String?{
return null;
}
fun main(args: Array<String>) {
println(test()?.length);
}
2."!!."編譯可以通過,運行到此處報錯
五、不支持三目運算符
替換版:if(2>1) true else false
六、位運算符和其他運算符 + 運算符優先級
七、流程控制
1.單分支:if...else...
2.多分支(不是switch...case...)
不需要break!
when(x){
1,2->{
println("1,2");
}
in 3..5->{
println("in 3..5");
}
else{
println("else");
}
}
3.循環
var x = Array<Int>(10){1};
// [)
for(i in 0 until x.size){
println(i);
}
// []
for(i in 0..x.size){
println(i);
}
// indices = 0 until x.size
for(i in x.indices){
println(i);
}