1、输出 hello word
fun main(args:Array<String>){
print("hello word");
}
fun:声明方法
main:方法名称
参数书写方式:名称 :变量类型
2、声明 与 初始化 变量
var a=10
var b= "韩小呆"
val a= 123
var: 相当于可变参数,此时可以向 a 再次进行赋值,这里不需要 java 里面的各种变量具体声明,因为 Kotlin 会从后面的赋值内容中推导出对象类型;被称之为:智能类型推断。
val :相当于 java 内 的final 修饰,故对基本数据类型进行一次赋值之后,就不可以进行再一次更改。
当然书写者也可以直接指定数据类型:
var a : int=2
val b : String ="韩小呆"
当只进行声明而不进行赋值时应进行如下操作
var a : Int
a=10
因为存在智能类型推断,所有在不赋值的情况下变量需要 声明数据类型则可以让编译器知道数据类型。
Kotlin内的常见数据类型
Btye 、 Short 、Int、Long、Float、Double、String
3、函数声明
编写规则
fun 函数名(参数名:参数类型):返回值类型{
//函数体
}
返回值类型可以不写
无参无返回值
fun nHave(){
}
无参有返回值
fun oHave():String{
return "abc";
}
有参无返回值
fun oHave( a:Int,b:String){
}
有参有返回值
fun dHave(a:Int):String{
return "韩小呆"
}
4、字符串模板
fun main() {
println(language("Kotlin"))
}
fun language(name:String):String{
var str="今天大雨,我坐在家里学习新的编程语言 $name"
return str
}
这里用 “ $ ” 符号 将字符串进行了拼接类似于Java的“ + ”;
5、条件控制 if 和 else
fun main() {
println(isTrue(10,12))
}
fun isTrue(a:Int,b:Int):String{
if (a>b){
return "a比较大"
}else{
return "b比较大"
}
}
或
fun main() {
println(isTrue(10,12))
}
fun isTrue(a:Int,b:Int):String{
return if(a>b) "a较大" else "b较大"
}
第二种书写方式虽然 阅读不是十分友好,但是简洁很多,类似于三元表达式
6、字符串比较
fun main() {
var str1 = "abc"
var str2 = "abc"
var str3 = "Abc"
println(str1 == str2)
println(str1 == str3)
println(str1.equals(str2))
//第二个参数 为 true 时忽略大小写,为 false 或者是默认 则不忽略大小写
println(str1.equals(str3,true))
}
7、空值处理
当在编译期赋值为 null 时,会造成编译不通过,编译期进行提示。
a: Int?
参数类型后面的 “?”表示 数据可为空。
8、when 表达式
fun main() {
whatWeather("冰雹")
}
fun whatWeather(weather:String){
val weather="今天天气怎么样,额,$weather,今天的天气是 $weather ${strLength(weather.length)} 个字可以形容"
println(weather)
}
fun strLength(len: Int): String {
val reseult = when (len) {
1 -> "一"
2 -> "二"
3 -> "三"
4 -> "四"
else -> "很多字"
}
return reseult
}
这里的 when 相当于 Java 内的 switch case
注意 String 的拼接。
9、loop(循环) 和 range(区间)
循环
fun main() {
var nums1 = 1..100 //[1,100] 表示 1到 100
for (num in nums1) {
print("$num ,")
}
println("")
var num2 = 1 until 100//[1,100) 表示1 到 99
for (num in num2) {
print("$num ,")
}
println("")
for (num in num2 step 2) {//表示步长为 2 进行取值
print("$num ,")
}
println("")
println("num2 包含数据个数为 ${num2.count()} 个") // count() 方法表示数据长度
}
10、list 与 map 了解
创建 List
var names= listOf("小明","小红","小韩","小呆")
循环输出 list 内内容
var names= listOf("小明","小红","小韩","小呆")
for (name in names){
print("名字:$name , ")
}
循环输出内容 和 内容索引
var names= listOf("小明","小红","小韩","小呆")
for ((i,e) in names.withIndex()){
print("$i $e ")
}
创建 Map
var map: HashMap<Int, String> = HashMap()
map[1] = "小明"
map[2] = "小红"
map[3] = "小呆"
map[4] = "小韩"
Map 输出
var map: HashMap<Int, String> = HashMap()
map[1] = "小明"
map[2] = "小红"
map[3] = "小呆"
map[4] = "小韩"
println(map[1])
for (item in map) {
print("$item ,")
}
}
11、函数和函数式表达式
以下代码表达的效果相同
fun main() {
var i = { a: Int, b: Int -> a + b }
var a = i(3, 4)
var j: (Int, Int) -> Int = { x, y -> x + y }
var b=j(4,5)
println(result0(1, 2))
println(result1(2, 3))
println(a)
println(b)
}
fun result0(a: Int, b: Int): Int {
return a + b
}
fun result1(a: Int, b: Int): Int = a + b
12、默认参数 和 具名参数
可以在形参内指明具体的参数数值,这样咋调用该方法或者是函数时 当不输入已经指明的 参数时 则需要按照第二种方式去指定 没有默认值的参数的数值,当输入全部参数时则可以按照正常调用逻辑一样进行调用 即第一种输出方式
fun main() {
println(result0(2,3))
println(result0(b=3))
}
fun result0(a: Int = 1, b: Int): Int {
return a + b
}
13、人机交互进行运算
fun main() {
println("请输入第一个数值")
var a = readLine()
println("请输入第二个数值")
var b = readLine()
var num1 = a!!.toInt()
var num2 = b!!.toInt()
println("$num1 + $num2 =${num1 + num2}")
}
这里的双 “!” 表示该数据不能为空,当然了 ,可以输入空,之后 程序挂掉报错如下
14、Kotlin 实现递归
fun main() {
println(result(5))
}
fun result(a:Int):Int{
if (a==1){
return 1
}else{
return a*result(a-1)
}
}
BigInteger : 表示 Kotlin 内的一个足够大的数据