zoukankan      html  css  js  c++  java
  • Kotlin学习(一):基本语法

    今天说一下Kotlin的基本语法,主要包括以下部分:

    1.变量
    2.操作符
    3.函数

    先来了解一下Kotlin代码是什么样子吧,这是一个HelloWorld

    package com.oppo.demo.test  //包的声明
    
    import java.util.*  //  导包,这里可以导入Java类,可以正常使用
    
    /**
     * 程序入口
     */
    fun main(args: Array<String>) {
        //输出字符 代码结尾不需要写分号
        println("Hello world")
    }
    

    需要注意的是,在Kotlin中,不再向Java那样,代码结尾不需要写“;”了

    注释
    // 这是一个行注释
    
    /* 这是一个多行的
       块注释。 */
    
    /**
     * 函数、类注释
     */
    

    变量

    在Kotlin中,变量分为只读变量和可变变量,声明变量的方法也和Java不同,和JS类似

    //只读变量
    val name = "小明" //自动推断出类型
    val age:Int = 22 // 明确类型
    val email:String //如果没有初始值 则需要明确类型
    email = "hezhao_java@163.com"
    
    //可变变量
    var score = 90.5
    score += 2
    

    我们尝试给name重新赋值,看看会出现什么结果:

    Paste_Image.png

    可以看到编译器报错,所以:

    • var - 用于定义可变变量
    • val - 用于定义只读变量

    变量类型,和Java一模一样

    var b1:String   //字符串
    var b2:Char     //字符
    var b3:Int      //整型
    var b4:Double   //双浮点
    var b5:Float    //浮点数
    var b6:Byte     //字节
    var b7:Long     //长整型
    var b8:Boolean  //布尔
    

    使用可空值及 null 检测

    开发过Java的人都知道,程序报异常了,打开控制台一看,你肯定能看到NullPinterException的存在。Kotlin的类型设计系统旨在消灭“空指针异常”,那么是怎么做到的呢?

    正常情况下,变量都不允许直接赋值为null,比如以下这段代码是错误的:

    fun returnNull():String{
        return null  //error,不能赋null值
    }
    

    或者

    var str:String
    str = null  //error
    

    那么,有时候我们确实需要返回null值,要怎么做呢?

    当某个变量的值可以为 null 的时候,必须在声明处的类型后添加 ? 来标识该引用可为空。

    fun returnNull():String?{
        return null
    }
    
    //变量也是一样
    var str:String?
    str = null
    

    值得注意的是,当我们使用一个可空变量的时候,编译器会报一个错,它会认为这是不安全的,这种情况下我们需要自己去做类型检查

    if(str != null)
        println(str.length)
    

    或者

    var str:String? = returnNull()
    
    if(str == null){
        return
    }
    
    //// 在空检测后,str 会自动转换为非空值
    println(str.length)
    

    以上这段代码可以简写为:

    //变量也是一样
    var str:String? = returnNull() ?: return
    
    //// 在空检测后,str 会自动转换为非空值
    println(str.length)
    

    这里涉及到了操作符的问题

    那么,这里说一下Kotlin一些新的操作符

    1.安全调用操作符
    var length =str?.length
    

    如果当str不为null时候就会返回str.length,否则返回null。

    2.Elvis操作符
    val length2 = str?.length ?: -1
    

    如果当str不为null时候就会返回str.length,否则返回-1。

    3.!!操作符
    val length3 = str!!.length
    

    如果当str不为null时候就会返回str.length,否则干脆抛出空指针异常。
    依我看,这个操作符还是少用吧。。。

    同样,也适用于类型转换

    //类型转换  如不成功给个 null
    val s = "1"
    val s1: Int? = s as? Int
    

    函数

    函数使用fun来定义,缺省返回值为Unit,类似于Java中的void
    下面列出几种常见的函数定义

    没有返回值的函数
    fun printSum(a: Int, b: Int): Unit {
        println("sum of $a and $b is ${a + b}")
    }
    
    //可以省略Unit 
    fun printSum(a: Int, b: Int) {
        println("sum of $a and $b is ${a + b}")
    }
    
    明确返回值类型函数
    fun sum(a: Int, b: Int): Int {
        return a + b
    }
    
    自动推断返回值的函数
    fun sum(a: Int, b: Int) { 
      return a + b
    }
    
    简写的函数
    fun sum(a: Int, b: Int)  =  a + b
    
    //这里,可以使用if作为表达式
    fun calc(a: Int, b: Int)  =  if(a > b) a+b else a-b
    
    可返回null的函数
    fun returnNull():String?{
        return null
    }
    

    以上就是,今天学习的内容,后续再说选择结构、表达式、循环结构 等。

    以上资料,有部分参考自:kotlin入门之"null"


    作者:何钊

    来源:博客园

    链接:http://www.cnblogs.com/hezhao/

    CSDN:http://blog.csdn.net/sinat_27403673

    简书:http://www.jianshu.com/u/5ae45d288275

    Email:hezhao_java@163.com

    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 相关阅读:
    View Documentation in Web Using [openoffice.org 3+swftools+flexpaper]
    swfobject.js
    Java 文件上传组件 Apache Commons FileUpload 应用指南
    模拟HTML表单上传文件(RFC 1867)
    Using CURL to download a remote file from a valid URL in c++
    GUN tar for windows Practice
    Using libcurl in VC++
    Zlib Practice
    解决HtmlAgilityPack中文乱码
    Windows 7,Windows Server 2008 MSDTC配置
  • 原文地址:https://www.cnblogs.com/hezhao/p/7389683.html
Copyright © 2011-2022 走看看