Kotlin基础 (二)


 

11_kotlin命令行交互式终端

配置环境变量 PATH

Kotlinc :进入命令行
:quit :退出

kotlinc
命令行交互式终端解决数学问题
 

12_kotlin函数加强

函数的本质

    函数的本质,可以理解是一个或者一组功能的组合.

kotlin函数编写规则

kotlin函数编写规则
代码解释
代码分析
 

实战编写一个计算器:

fun main(args: Array<String>) {
    var a = 8
    var b = 2

    println("a+b="+plus(a,b))
    println("a-b="+sub(a,b))
    println("a*b="+mutl(a,b))
    println("a/b="+devide(a,b))
}

//fun 固定写法  plus 函数名称 (a第一个参数,类型 Int , b第二个参数,类型 Int): Int 返回值是Int类型
// 接收两个参数,方法的返回值是一个Int类型
fun plus(a:Int,b:Int):Int{
    return a+b
}

fun sub(a:Int,b:Int):Int{
    return a-b
}

fun mutl(a:Int,b:Int):Int{
    return a*b
}

fun devide(a:Int,b:Int):Int{
    return a/b
}

传参和返回值的图片示例
添加
 

作业练习

作业

fun main(args: Array<String>) {
    var result = sayHello("张三")
    println(result)
    println(checkAge(28))
    saveLog(3)
}

// 请编写函数,函数名为 sayHello
// 方法返回值是 String 类型,一个参数是 String 类型 名称为 name
fun sayHello(name:String):String{
    return "Hello" + name
}

// 请编写函数,函数名为 checkAge
// 方法的返回值是 Boolean 类型,一个参数是整数类型 名称为 age
fun checkAge(age:Int):Boolean{
    if (age >18)
        return true
    else
        return false
}

// 请编写函数,函数名为 saveLog
// 方法没有返回值,一个参数是整数类型 名称为 logLevel
fun saveLog(logLevel:Int){

}

 

14_kotlin字符串模版

   字符串模版:${} 为字符串模板(转义字符),用一个占位符

// 日记生成器,接收参数是地点,返回值是日记的内容
// ${} 为字符串模板(转义字符),用一个占位符
// ${placeName} 通过这个字符串模板 进行字符串的改变(动态的替换内容)

fun diaryGenerater(placeName:String):String{
    var temple = """
        今天天气晴朗,万里无云,我们去${placeName}游玩,
        首先映入眼帘的是,${placeName}${placeName.length}个镏金大字。
        """
    return temple
}

fun main(args: Array<String>) {
    var diary = diaryGenerater("人民公园")
    println(diary)
    var diary1 = diaryGenerater("珠海海滨公园")
    println(diary1)
}

 

15_kotlin条件控制if和else

// 返回两个数当中较大的那个
fun returnBig(a:Int,b:Int):Int{
    if (a>b)
        return a
    else
        return b
}

fun main(args: Array<String>) {
    var a = 3
    var b = 5
    println("${a}和${b}较大的那个数的值为:${returnBig(a,b)}")
}

 

16_kotlin字符串比较

// 一个等号(=)是赋值的意思,把等号右边的内容赋值给左边的变量
// 二个等号(=)是判断两个字符串是否相等

fun main(args: Array<String>) {
    var str1 = "张三"
    var str2 = "张二"

    println(str1 == str2)
}

上面代码打印出来为 false
 

把str2改为"张三"
// 一个等号(=)是赋值的意思,把等号右边的内容赋值给左边的变量
// 二个等号(=)是判断两个字符串是否相等

fun main(args: Array<String>) {
    var str1 = "张三"
    var str2 = "张三"

    println(str1 == str2)
}

上面代码打印出来为 true
 

Kotlin代码和Java代码不太一样

  Java代码如果用两个等号==),它代表的是比较内存地址是否相同

  Kotlin代码如果用两个等号==),它等价于Java里面的.equals()方法

  println(str1 == str2) 和 println(str1.equals(str2)) 是一样的

 
// 有区分大小写之分

fun main(args: Array<String>) {

    var str3 = "Andy"
    var str4 = "andy"

// 有区分大小写之分
println(str3 == str4)
println(str3.equals(str4))

}

上面代码输出为 false、false
因为 有 大小写区分
 

不区分大小写

// 一个等号(=)是赋值的意思,把等号右边的内容赋值给左边的变量
// 二个等号(=)是判断两个字符串是否相等

fun main(args: Array<String>) {
    var str1 = "张三"
    var str2 = "张三"
    var str3 = "Andy"
    var str4 = "andy"

    println(str1 == str2)
    println(str1.equals(str2))

    // 有区分大小写之分
    // Andy 和 andy
    println(str3 == str4)
    println(str3.equals(str4))

    // 不区分大小写之分(使用重载的函数)
    // Andy 和 andy
    // 第二个参数为 true 代表忽略字母的大小写
    // 第二个参数为 false 代表不忽略字母的大小写
    println(str3.equals(str4,true))
}

 

17_kotlin空值处理

  null 值

    null也是值
    表示没有东西没有数据
null值

如果直接传 null 值的话会直接报错
 

  在null值处理上kotlin比Java要智能很多,Java会出现空指针异常,Java最常见的空指针异常在kotlin语言语法阶段被完美的避免掉了,因此在heat(null)写null在kotlin语言是不可以的

 
 
如果一定要传一个 null 值应该怎么做呢?
  //加上问号代表的是参数可以为空
  在 fun heat(str:String?):String 中的 str:String? 中加上一个问号

//接收一个参数,参数是非空的 string 类型,加上问号代表的是参数可以为空
// 在设计函数的时候如果 (str:String)中没有问号就代表这个数据不可能为空的
fun heat(str:String):String{
    return "热"+str
}

fun main(args: Array<String>) {
    var result1 = heat("水")
    println(result1)
	
	// 当   (str:String?) 时可以传递 null 参数
	// null 为传递过去的参数
	//var result2 = heat(null)
	//println(result2)
}

 

18_kotlin的when表达式

  when

    • 给定条件
    • 满足什么条件执行什么任务

Kotlin代码的when表达式和Java代码的switch表达式有相识点,但是比 switch 更加强大、更加方便

// 10分:满分  9分:干的不错  8分:还可以  7分:还需努力  6分:刚好及格  其它(需要加油啦)

fun gradeStudent(score:Int){
    when(score){
        10 -> println("考了满分,棒棒哒!")
        9 -> println("干的不错")
        8 -> println("还可以")
        7 -> println("还需努力")
        6 -> println("刚好及格")
        else -> println("需要加油哦!")
    }
}
fun main(args: Array<String>) {
    gradeStudent(10)
}

 
把数字变成中文数字(例如:1变成“一”)

数字版的代码(${placeName.length} 由这个代码所决定)

// 日记生成器,接收参数是地点,返回值是日记的内容
// ${} 为字符串模板(转义字符),用一个占位符
// ${placeName} 通过这个字符串模板 进行字符串的改变(动态的替换内容)

fun diaryGenerater(placeName:String):String{
    var temple = """
        今天天气晴朗,万里无云,我们去${placeName}游玩,
        首先映入眼帘的是,${placeName}${placeName.length}个镏金大字。
        """
    return temple
}

fun main(args: Array<String>) {
    var diary = diaryGenerater("人民公园")
    println(diary)
    var diary1 = diaryGenerater("珠海海滨公园")
    println(diary1)
}
中文数字的代码(${numToChinese(placeName.length)} 由这个代码所决定)

fun diaryGenerator(placeName:String){
    var diary = """
        今天天气晴朗,万里无云,我们去${placeName}游玩,
        首先映入眼帘的是,${placeName}${numToChinese(placeName.length)}个镏金大字。
        """
    println(diary)
}

fun numToChinese(num:Int):String{
    var result = when(num){
        1 -> "一"
        2 -> "二"
        3 -> "三"
        4 -> "四"
        5 -> "五"
        else -> num.toString()
    }
    return result
}

fun main(args: Array<String>) {
    diaryGenerator("珠海海滨公园")
}

 

19_kotlin的loop和Range

    Loop:循环
    Range:区间 (var nums = 1…100 (从 1 到 100 这个区间))

// 1 到 100 的数字在 kotlin 用下方表达
var nums = 1 … 100

 

打印 1 到 100 的值

// 计算从 1 加到 100
fun main(args: Array<String>) {
    // 1 到 100 的数字在 kotlin 用下方表达
    // 声明了一个数组,内容为 1 到 100
    var nums = 1 .. 100
    // 打印 1 到 100 的值
    for(num in nums){
        print("${num},")
    }
}

 

计算从 1 加到 100

// 计算从 1 加到 100
fun main(args: Array<String>) {
    // 1 到 100 的数字在 kotlin 用下方表达
    // 声明了一个数组,内容为 1 到 100 的区间
    var nums = 1..100
    var result = 0
    // 把 nums数组 里的每一个值取出来
    for (num in nums) {
        result = result + num
    }
    println("结果:${result}")
}

 

开区间1 到 99

//开区间
fun main(args: Array<String>) {
     //前闭后开区间  [1,100)      1 到 99
    var nums = 1 until 100
    for (num in nums){
        println(num)
    }
}

 

step 2 以 2 作为 步长 例如:1 3 5 7

fun main(args: Array<String>) {
    
    var nums2 = 1 .. 16
    //step 2 以 2 作为 步长 例如:1 3 5 7
    for (a in nums2 step 2){
        println(a)
    }
}

 

反转数值

// 反转数值
var nums3 = nums2.reversed()
for (a in nums3) {
    print("数值为:" + a + " ")
}

 

集合里面有多少内容

// 集合里面有多少内容
println("总数为:" + nums3.count())

 

总体的代码

//开区间
fun main(args: Array<String>) {
    // 前闭后开区间  [1,100)      1 到 99
    var nums = 1 until 100
    for (num in nums) {
        print("${num} ,")
    }
    println()
    println()

    var nums2 = 1..16
    //step 2 以 2 作为 步长 例如:1 3 5 7
    for (a in nums2 step 2) {
        print("数值为:" + a + " ")
    }
    println()
    println()

    // 反转数值
    var nums3 = nums2.reversed()
    for (a in nums3) {
        print("数值为:" + a + " ")
    }
    println()
    println()

    // 集合里面有多少内容
    println("总数为:" + nums3.count())
}

 

20_kotlin的list和map入门

 

List

  List就是列表的意思
 

Map

  Map类似一个词典
    词典有索引
    索引对应了具体的内容
 

List的Demo

 
** lists.withIndex() 有下标的方式打印 List**

fun main(args: Array<String>) {
    // 定义一个List
    var lists = listOf("买蛋糕","买奶茶","买水果","买冰淇淋")
    // lists.withIndex():按位置去打印 List 里的内容
    // lists.withIndex() 有下标的方式打印 List
    // 例如:0 买蛋糕
    for ((i,e) in lists.withIndex()){
        println("$i $e")
    }
}

 

Map的Demo
import java.util.*

fun main(args: Array<String>) {
    // 声明一个 Map
    var map = TreeMap<String, String>()
    // 向 Map 里放置东西
    map["好"] = "good"
    map["学习"] = "study"
    map["天"] = "day"
    map["向上"] = "up"

    // 如何获取 Map 里面的内容(与赋值是一样的)
    println(map["好"])

}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值