栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

kotlin笔记第一阶段(变量&语句&函数)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

kotlin笔记第一阶段(变量&语句&函数)

kotlin笔记第一阶段(变量&语句&函数) 笔记所在视频地址 02、Kotlin语言成为Android第一语言

03、Kotlin语言和JVM虚拟机

04、学Kotlin语言的重要性

05、 kotlin语言的跨平台特性

06、Kotlin语言学习的技巧

07、kotlin语言声明变量于内置数据类型

package com.derry.s1
// TODO 07.kotlin语言声明变量于内置数据类型
fun main() {

    println("Hello world")

    //TODO ============= 声明变量

    
    var name : String = "Derry"
    name = "Lance"
    println(name)

    //TODO ============= 内置数据类型
    
08.kotlin 语言的只读变量

// TODO 08.kotlin语言的只读变量
fun main() {
    // var info :String = "Mhyinfo"
    // var 默认提示:变量永远不会修改,建议改为 val == 不可改变的(只读
    val info :String = "Mhyinfo"
    println(info)
    
    val age : Int = 99
    println(age)
}
4.kotlin 语言的类型推断

// TODO 08.kotlin语言的类型推断
fun main() {
    //提示:Explicitly given type is redundant here
    //     显示给定的类型在这里是多余的
    val info : String = "Derry is Success"
    println(info)

    val age = 98
    println(age)

    val  xxx =  "A"
}
5.kotlin语言的编译时常量

// TODO 10.kotlin语言的编译时常量
const val PI = 3.1415926  // 定义编译时常量

// TODO 10.kotlin语言的编译时常量
// 编译时常量只能是常用的数据类型:(String. Double. Int. Float. Long. Short. Byte. Char. Boolean)
// 编译时常量只能在函数之外定义,为什么? 答:如果在行数之内定义,就必须在运行时才能调用函数赋值,何来编译时常量一说
// 结论:编译时常量只能在函数之外定义,就可以在编译期间初始了
fun main() {
    val a = "Derry info" //这个称为 只读类型的变量

    // 提示:修饰符constant不适用于 局部变量
    // const val PI = 45

    // const val PI2 = 3.1415 //定义编译时常量
}
11.学习查看Kotlin反编译后字节码

查看Kotlin反编译后字节码方法

const val PI1 = 3.1415926
const val PI2 = 3.1415926
const val age = 3.1415926


// TODO 10.学习查看Kotlin反编译后字节码
fun main() {
    val name = "Derry"
    val number = 108
    val number2 = 208
    val isOK = false
}

反编译后的字节码文件(编译器在编译过程中会将kotlin代码转成java代码)

//                 D : double类型 
public final static D PI1 = 3.1415926
// ================com/derry/s1/Ktbase11Kt.class =================
// class version 50.0 (50)
// access flags 0x31
public final class com/derry/s1/Ktbase11Kt {


  // access flags 0x19
  public final static D PI1 = 3.1415926

  // access flags 0x19
  public final static D PI2 = 3.1415926

  // access flags 0x19
  public final static D age = 3.1415926

  // access flags 0x19
  public final static main()V
   L0
    LINENUMBER 10 L0
    LDC "Derry"
    ASTORE 0
   L1
    LINENUMBER 11 L1
    BIPUSH 108
    ISTORE 1
   L2
    LINENUMBER 12 L2
    SIPUSH 208
    ISTORE 2
   L3
    LINENUMBER 13 L3
    ICONST_0
    ISTORE 3
   L4
    LINENUMBER 14 L4
    RETURN
   L5
    LOCALVARIABLE isOK Z L4 L5 3
    LOCALVARIABLE number2 I L3 L5 2
    LOCALVARIABLE number I L2 L5 1
    LOCALVARIABLE name Ljava/lang/String; L1 L5 0
    MAXSTACK = 1
    MAXLOCALS = 4

  // access flags 0x1009
  public static synthetic main([Ljava/lang/String;)V
    INVOKESTATIC com/derry/s1/Ktbase11Kt.main ()V
    RETURN
    MAXSTACK = 0
    MAXLOCALS = 1

  @Lkotlin/metadata;(mv={1, 1, 16}, bv={1, 0, 3}, k=2, d1={"u0000u0010nu0000nu0002u0010u0006nu0002u0008u0003nu0002u0010u0002nu0000u001au0006u0010u0004u001au00020u0005"u000eu0010u0000u001au00020u0001Xu0086Tu00a2u0006u0002nu0000"u000eu0010u0002u001au00020u0001Xu0086Tu00a2u0006u0002nu0000"u000eu0010u0003u001au00020u0001Xu0086Tu00a2u0006u0002nu0000u00a8u0006u0006"}, d2={"PI1", "", "PI2", "age", "main", "", "Kotlin_Text"})
  // compiled from: Ktbase11.kt
}


// ================meta-INF/Kotlin_Text.kotlin_module =================
            

com.derry.s1
Ktbase11Kt
12、Kotlin语言的引用类型学习

// TODO 12.Kotlin语言的引用类型学习
// Java语言有两种数据类型
//      第一种:基本类型:int double等
//      第二种:引用类型 String等

// Kotlin语言只有一种数据类型
//       看起来都是引用类型,实际上编译器会在Java字节码中,修改成"基本类型"
fun main() {
    val age: Int = 99
    val PI: Float  = 3.1415f
    val PI2: Double  = 3.1415
    val isOK: Boolean = true
}

以下进入kotlin语法阶段

13、Kotlin语言的range表达式

// TODO 13.Kotlin语言的range表达式
fun main() {
    val number = 148
    //range 范围 从哪里 到哪里

    if(number in 10..59){
        println("不及格")
    } else if (number in 0..9){
        println("不及格且分数很差")
    } else if(number in 60..100){
        println("合格")
    } else if (number !in 0..100){
        println("分数不在0到100范围内")
    }
}
14、Kotlin语言when表达式

// TODO 14.Kotlin语言when表达式
fun main() {
    val week = 8

    //Java的 if 语句
    //KT 的 if 是表达式 有返回值的

    val info = when(week){
        1 -> "今天是星期一,非常忙碌的一天开会"
        2 -> "今天是星期二,非常辛苦的写需求"
        3 -> "今天是星期三,努力写Bug中"
        4 -> "今天是星期四,发布版本到凌晨"
        5 -> "今天是星期五,淡定喝茶,一个Bug改一天"
        6 -> "今天是星期六,稍微加加班"
        7 -> "今天是星期七,看剧中,游玩中"
        //else -> "养猪去了,忽略星期几"   这样返回值一定是String类型,因为全为Sting类型
        else -> {
            println("养猪去了,忽略星期几")   //这样写类型是Any == Object(相当于Java中的Object)
        }
    }
    println(info) //void  关键字 无返回    用Unit类代替了java的void关键字
}
15、Kotlin语言的String模板

// TODO 15、Kotlin语言的String模板
fun main() {
    val garden = "黄河公园"
    val time = 6

    println("今天天气很晴朗,去${garden}玩,玩了$time 小时")  // 字符串模板的写法
    //Java的写法(对比)  println("今天天气很晴朗,去"+ garden +"玩,玩了"+ time +"小时")

    //KT的if是表达式,所以更灵活。 Java的if是语句,还有局限性
    val isLogin = true
    println("server response result: ${if (isLogin)"恭喜你,登录成功√" else "不恭喜,你登录失败了,请检查Request信息"}")
}
16、Kotlin语言的函数头学习

//TODO 16、Kotlin语言的函数头学习
fun main() {
    method01(99,"lisi")

}

// 函数默认都是public
// 其实Kotlin的函数,更规范,先有输入,再有输出
private fun method01(age: Int, name: String):Int{
    println("你的姓名是:$name,你的年龄是:$age")
    return 200
}



17、Kotlin中函数参数的默认参数

package com.derry.s1

// TODO 17、Kotlin中函数参数的默认参数
fun main() {
    action01("lisi",89)
    action02("wangwu")
    action03()
    action03("赵六",76)
}

private fun action01(name: String,age:Int) {
    println("我的姓名是:$name,我的年龄是$age")
}

private fun action02(name: String,age:Int = 77) {
    println("我的姓名是:$name,我的年龄是$age")
}

private fun action03(name: String = "王五",age:Int = 77) {
    println("我的姓名是:$name,我的年龄是$age")
}
18、Kotlin语言的具名函数参数

package com.derry.s1

//TODO 18、Kotlin语言的具名函数参数
fun main() {
    loginAction(age = 99,userpwd = "123",usernam = "de",username = "Darry",phonenumber = "123456")
}

private fun loginAction(username: String,userpwd:String,phonenumber:String,age:Int,usernam:String){
    println("username:$username, userpwd:$userpwd, phonenumber:$phonenumber, age:$age")
}
19、Kotlin语言的Unit函数特点

// TODO 19、Kotlin语言的Unit函数特点
fun main() {

}
// : Unit不写,默认也有。Unit代表 无参数返回的 忽略类型 == Unit 类型类
// 相当于Java语言的void关键字(但不是,是一个类)
// (void是一个无参数返回的 忽略类型 但是它是关键字,不是类型,这很矛盾)
private fun doWork(): Unit{
    return println()
}
private fun doWork2(){
    return println()
}
private fun doWork3(){
    println()
}
20、Kotlin语的Nothing类型特点

// TODO 20、Kotlin语的Nothing类型特点
fun main() {
    show(60)

}

private fun show(number: Int){
    when(number){
        -1 -> TODO("没有这种分数")
        in 0..59 -> println("分数不及格")
        in 60..70 -> println("分数及格")
        in 71..100 -> println("分数优秀")
    }
}
interface  A{
    fun show()
}
class AImpl :A{
    override fun show() {
        // 下面这句话,不是注释提示,会终止程序的
        TODO("Not yet implemented")
    }
}

21、Kotlin语言的反引号中函数名特点

// TODO 21、Kotlin语言的反引号中函数名特点
fun main() {
    // 第一种情况
    `登录功能 2021年8月8日测试环境下 测试登录功能 需求编码人员Derry`("Derry","123456")

    // 第二种情况: // in is 在Kotlin里面是关键字,怎么办? 使用反引号
    Ktbase_21.`is`()
    Ktbase_21.`in`()

    // 第三种情况,很少发生
}
private fun  `登录功能 2021年8月8日测试环境下 测试登录功能 需求编码人员Derry`(name : String ,pwd: String){
    println("模拟登录$name, 密码:$pwd")
}

private fun `65465655475`(){
    // 写了很复杂的功能,核心功能
    // ...
}

// 公司加密私有的文档 65465655475 == 此函数的作用 xxxx
// 公司加密私有的文档 55576575757 == 此函数的作用 xxxx
public class Ktbase_21 {

    // in is 在java里面是普通函数

    public static  final void in() {
        System.out.println("In run success");
    }

    public static  final void is() {
        System.out.println("In run success");
    }
}

22、对前面所学内容,小结篇

(变量&语句&函数)快速回顾小结

建议:配合视频将代码在理解的基础上自己写一下
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/462311.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号