kotlin基本的语法学习(代码片段)

zhang106209 zhang106209     2022-12-23     331

关键词:

1.变量

在Kotlin中定义变量的方式和Java区别很大,在Java中如果想要定义一个变量,需要在变量前面声明这个变量的类型,比如说int a表示a是一个整型变量,String b表示b是一个字符串变量。而Kotlin中定义一个变量,只允许在变量前声明两种关键字:val和var。

val(value的简写)用来声明一个不可变的变量,这种变量在初始赋值之后就再也不能重新赋值,对应Java中的final变量。

var(variable的简写)用来声明一个可变的变量,这种变量在初始赋值之后仍然可以再被重新赋值,对应Java中的非final变量。

fun main() 
    val a = 10
    var b = "hello"
    b = "Kotlin"
    println("a---$a")
    println("b---$b")

注意:Kotlin每一行代码的结尾是不用加分号的,如果你写惯了Java的话,在这里得先熟悉一下。

在上述代码中,我们使用val关键字定义了一个变量a,并将它赋值为10,这里a就会被自动推导成整型变量。因为既然你要把一个整数赋值给a,那么a就只能是整型变量,而如果你要把一个字符串赋值给a的话,那么a就会被自动推导成字符串变量,这就是Kotlin的类型推导机制。

2:函数

函数和方法就是同一个概念,这两种叫法都是从英文翻译过来的,函数翻译自function,方法翻
译自method,它们并没有什么区别,只是不同语言的叫法习惯不一样而已。

fun getName(param1: String,param2: String):String
    return param1

首先fun(function的简写)是定义函数的关键字,无论你定义什么函数,都一定要使用fun来声明。

3.条件语句 if 和 when

3.1 if条件语句

Kotlin中的if语句和Java中的if语句几乎没有任何区别,因此这里我就简单举个例子带你快速了解一下。

fun getNumber(num1: Int, num2: Int): Int 
    var value = 0                         
    if (num1 > num2)                     
        value = num1                      
     else                               
        value = num2                      
                                         
    return value                          
  

可以简化一下,如下

fun getNumber(num1: Int, num2: Int): Int 
    return if (num1 > num2) 
        num1
     else 
        num2
    

3.2 when条件语句

Kotlin中的when语句有点类似于Java中的switch语句,但它又远比switch语句强大得多。它可以Java替代if和switch。

示例:查询考试成绩的功能,输入一个学生的姓名,返回该学生考试的分数。

fun getScore(name: String) = when (name) 
    "Tom" -> 80
    "Jim" -> 70
    else -> 0

when语句允许传入一个任意类型的参数,然后可以在when的结构体中定义一系列的条件,格式
是:

匹配值-> 执行逻辑

当你的执行逻辑只有一行代码时, 可以省略。

除了精确匹配之外,when语句还允许进行类型匹配。

fun checkNumber(num: Number) 
    when (num) 
        is Int -> println(" number is Int")
        is Double -> println(" number is Double")
        else -> println(" number not support")
    

上述代码中,is关键字就是类型匹配的核心,它相当于Java中的instanceof关键字。
Number是Kotlin内置的一个抽象类,像Int、Long、Float、Double等与数字相关的类都是它的子类,所以这里就可以使用类型匹配来判断

4.循环语句

Java中主要有两种循环语句:while循环和for循环。而Kotlin也提供了while循环和for循环,其中while循环不管是在语法还是使用技巧上都和Java中的while循环没有任何区别,因此我们就直接跳过不进行讲解了。

Kotlin在for循环方面做了很大幅度的修改,Java中最常用的for-i循环在Kotlin中直接被舍弃了,而Java中另一种for-each循环则被Kotlin进行了大幅度的加强,变成了for-in循环,所以我们只需要学习for-in循环的用法就可以了。

Kotlin中for循环用法如下示例:

fun main() 

    for (i in 1 .. 10) //闭区间 包含首尾数字 相当于[1,10]  1 2 3 4 5 6 7 8 9 10
        println("i=$i")
    

    for (x in 1 until 10)  //前闭后开区间 包含首位但不包含最后一位 相当于[1,10) 1 2 3 4 5 6 7 8 9
        println("x=$x")
    

    for (y in 1 .. 10 step 2)//在闭区间内按给定步长(step)输出数据 1 3 5 7 9
        println("y=$y")
    
    
    for (a in 10 downTo 1)  //使用标准库中定义的downTo()函数倒序输出数据10 9 8 7 6 5 4 3 2 1 
        println("a=$a")
    

until关键字要求的是区间升序,也就是左边必须小于右边,如果想创建降序区间,可以使用downTo关键字:

操作数组的用法:

fun main() 
    val array = arrayOf("a", "b", "c")

    for ((index,e) in array.withIndex()) 
        println("下标:$index->元素:$e")
    
    for (index in array.indices) println("下标:" + index)

    for (Str in array) println("元素有:$Str")

5.相等语句 ==

Kotlin中判断字符串或对象是否相等可以直接使用 == 关键字,而不用像Java那样调用equals()方法。
==语句一般用在带参数when语句无法实现的时候
示例:假设所有名字以Jack开头的人,他的分数都是86分,这种场景如果用带参数的when语句来写就无法实现,而使用不带参数的when语句就可以这样写:

fun getScore(name: String) = when 
    name.startsWith("Jack") -> 90
    name == "Tom" -> 80
    name == "Jim" -> 70
    else -> 0

6.实例化一个类的方式

Kotlin中实例化一个类的方式和Java是基本类似的,只是去掉了new关键字而已。示例如下StudentBean()

fun main() 
    val bean = StudentBean()
    bean.name = "赵云"
    bean.age = 20
    bean.test()
//  输出结果: 赵云 is eating. He is 20 years old.


class StudentBean 
    var age = 0
    var name = ""

    fun test()
        println("$name is eating. He is $age years old.")
    

7.继承与构造函数

7.1 继承

在Kotlin中想要一个类可以被继承,方法很简单,只要在这个类的前面加上open关键字就可以了,加上open关键字之后,我们就是在主动告诉Kotlin编译器,这个类是专门为继承而设计的,这样类就允许被继承了。

open class StudentBean 

继承类的写法在Java中继承的关键字是extends,而在Kotlin中变成了一个冒号,写法如下:

class Person:StudentBean()
    var sno = ""
    var grade = 0

7.2 构造函数

任何一个面向对象的编程语言都会有构造函数的概念,Kotlin中也有,但是Kotlin将构造函数分成了两种:主构造函数和次构造函数。

主构造函数将会是你最常用的构造函数,每个类默认都会有一个不带参数的主构造函数,当然你也可以显式地给它指明参数。主构造函数的特点是没有函数体,直接定义在类名的后面即可。比如下面这种写法:

class Person : StudentBean() 
    

StudentBean类后面的一对空括号表示Person类的主构造函数在初始化的时候会调用StudentBean类的无参数构造函数,即使在无参数的情况下,这对括号也不能省略。

任何一个类只能有一个主构造函数,但是可以有多个次构造函数。次构造函数也可以用于实例化一个类,这一点和主构造函数没有什么不同,只不过它是有函数体的。示例如下

class Person(val sno: String, val grade: Int, name: String, age: Int) : StudentBean(name, age) 

    constructor(name: String, age: Int):this("",0,name,age)
    
    
    constructor() : this("",0) 
    


open class StudentBean(val name: String, val age: Int) 

上述代码也是将this关键字换成了super关键字

8.接口

Kotlin中的接口部分和Java几乎是完全一致的。

interface ClickListener 
    fun getName()

实现如下

class Test :ClickListener 
    override fun getName() 
        TODO("Not yet implemented")
    

Java中继承使用的关键字是extends,实现接口使用的关键字是implements,而Kotlin中统一使用冒号,中间用逗号进行分隔。

9.Java和Kotlin中函数可见性修饰符之间的区别。

10.数据类

在Kotlin中,当在一个类前面声明了data关键字时,就表明你希望这个类是一个数据类, Kotlin会根据主构造函数中的参数帮你将equals()、 hashCode()、 toString()等固定且无实际逻辑意义的方法自动生成,从而大大减少了开发的工作量。示例如下:

data class Test(var name: String?, var phone: String?)

11.单例类

在Kotlin中创建一个单例类的方式极其简单,只需要将class关键字改成object关键字即可。示例如下:

object Test

12.空指针检测

12.1 参数可为空

让一个参数可以为空,只要在后面加上?就可以了,示例如下:

fun test(name: String?) 

12.2 判空辅助工具

首先学习最常用的?.操作符。这个操作符的作用非常好理解,就是当对象不为空时正常调用相
应的方法,当对象为空时则什么都不做。比如以下的判空处理代码

if (person!=null)
    person.getName()

直接可以简化:

person?.getName()

?.操作符就是将if判断语句去掉了。另外一个非常常用的?:操作符,这个操作符的左右两边都接收一个表达式, 如果左边表达式的结果不为空就返回左边表达式的结果,否则就返回右边表达式的结果。示例如下:

val c = if (a!=null)
    a
else
    b

可以简化成:

val c = a ?: b

kotlin语法学习(代码片段)

Kotlin语法学习(一)变量和函数变量在Kotlin中定义变量的方式和java有很大的区别,在java中有很多的基本类型和一些引用类型,但是在Kotlin中定义一个变量只允许在变量前面声明两个关键字:val和varval(value的简写)用来声明一个不可变的... 查看详情

kotlinkotlin的基本语法(代码片段)

本文目录kotlin学习-基本语法1.简介2.运行3.逻辑控制1.if条件语句2.when条件语句循环语句4.面向对象5.接口6.可见修饰符7.数据类8.单例类kotlin学习-基本语法1.简介对比java1.语法简洁,代码量少2.语法高级3.语言安全性。杜绝空指针... 查看详情

android:kotlin详细入门学习指南-高阶函数-基础语法(代码片段)

本人也是在初学Kotlin,如有错误,请帮忙指出,持续更新Android:Kotlin详细入门学习指南-高阶函数-基础语法(七)建议先看看前面的文章Android:Kotlin详细入门学习指南-基础语法(一)Android:Kotlin详细入门学习... 查看详情

android:kotlin详细入门学习指南-类和对象(上)-基础语法(代码片段)

本人也是在初学Kotlin,如有错误,请帮忙指出,持续更新Android:Kotlin详细入门学习指南-类和对象-基础语法(四)建议先看看前面的文章Android:Kotlin详细入门学习指南-基础语法(一)Android:Kotlin详细入门学习... 查看详情

android:kotlin详细入门学习指南-类和对象(下)-基础语法(代码片段)

本人也是在初学Kotlin,如有错误,请帮忙指出,持续更新Android:Kotlin详细入门学习指南-类和对象(下)-基础语法(五)建议先看看前面的文章Android:Kotlin详细入门学习指南-基础语法(一)Android:Kotlin详细入门学... 查看详情

kotlin基本的语法学习(代码片段)

1.变量在Kotlin中定义变量的方式和Java区别很大,在Java中如果想要定义一个变量,需要在变量前面声明这个变量的类型,比如说inta表示a是一个整型变量,Stringb表示b是一个字符串变量。而Kotlin中定义一个变量,... 查看详情

kotlin语法学习(代码片段)

文章目录Kotlin语法学习(二)面向对象编程类和对象继承和构造函数接口访问修饰符数据类和单例Kotlin语法学习(二)面向对象编程类和对象创建一个Person类openclassPerson/***姓名*/varname=""/***年龄*/varage=0/***人的吃饭方法*/fune... 查看详情

markdown[kotlin基本语法]#kotlin(代码片段)

查看详情

android:kotlin详细入门学习指南-包-控制流-返回与跳转-基础语法(代码片段)

本人也是在初学Kotlin,如有错误,请帮忙指出,持续更新Android:Kotlin详细入门学习指南-包-控制流-返回与跳转-基础语法(三)建议先看看前面的文章Android:Kotlin详细入门学习指南-基础语法(一)Android:Kotlin详... 查看详情

kotlin基础学习(代码片段)

...就对这本书进行了学习。在这本书中,由于谷歌大力推广kotlin语言,将其作为android开发的首推语言,本书也遵循了谷歌的推广,因此我就跟着书本学习了基本的Kotlin语法,当作记录笔记了。变量和函数变量在Koltin中的变量定义... 查看详情

浅谈kotlin:基本类型基本语法代码风格

浅谈Kotlin(一):简介及AndroidStudio中配置 通过上面的文章,在AndroidStudio中我们已经可以进行Kotlin编程了,接下来开始学习Kotlin的基本类型及语法。 一、基本类型  在Kotlin中,所有变量的成员方法和属性都是一个对象... 查看详情

android:kotlin详细入门学习指南-函数-基础语法(代码片段)

本人也是在初学Kotlin,如有错误,请帮忙指出,持续更新Android:Kotlin详细入门学习指南-函数-基础语法(六)建议先看看前面的文章Android:Kotlin详细入门学习指南-基础语法(一)Android:Kotlin详细入门学习指南-... 查看详情

kotlin入门基础语法学习笔记(代码片段)

敲了一天的kotlin基础语法,整理归纳到一个类里面,便于以后忘记的时候复习。/***CreatedbyGGon2017/11/20.*///main函数funmain(args:Array<String>)vartestMain=TestMain()print(testMain.array())classTestMain//单例的写法compani 查看详情

android:kotlin详细入门学习指南-基础语法(代码片段)

Android:Kotlin详细入门学习指南-基础语法(一)本人也是在初学Kotlin,如有错误,请帮忙指出,持续更新Kotlin被Google官方认为是Android开发的一级编程语言自2019年GoogleI/O以来,Kotlin就成为了Android移动开发的首选。... 查看详情

kotlin基础语法学习笔记(代码片段)

Kotlin简介Kotlin是一门与Swift类似的静态类型JVM语言,由JetBrains设计开发并开源。与Java相比,Kotlin的语法更简洁、更具表达性,而且提供了更多的特性,比如,高阶函数、操作符重载、字符串模板。它与Java高度... 查看详情

一个swifter的kotlin学习——kotlin基本语法

...是干货满满的,身为程序员最让我刚兴趣的还是谷歌宣布kotlin成为安卓第一开发语言这确实是个比较震撼的消息,身为移动端开发的我,势必要及时掌握这门开发语言。个人看了kotlin的中文文档,感觉它的语法和swift十分相像(... 查看详情

kotlin基础语法(代码片段)

一.Kotlin基本数据类型1.Kotlin的基本数值类型包括Byte、Short、Int、Long、Float、Double等。不同于Java的是,字符不属于数值类型,是一个独立的数据类型,eg:如下表类型位宽度占用字节数Double648Float324Long648Int324Short162Byte81数据类... 查看详情

kotlin基础语法(代码片段)

一.Kotlin基本数据类型1.Kotlin的基本数值类型包括Byte、Short、Int、Long、Float、Double等。不同于Java的是,字符不属于数值类型,是一个独立的数据类型,eg:如下表类型位宽度占用字节数Double648Float324Long648Int324Short162Byte81数据类... 查看详情