资讯专栏INFORMATION COLUMN

Kotlin学习(一):基本语法

myeveryheart / 1079人阅读

摘要:操作符如果当不为时候就会返回,否则干脆抛出空指针异常。以上资料,有部分参考自入门之

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

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

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

package com.oppo.demo.test  //包的声明

import java.util.*  //  导包,这里可以导入Java类,可以正常使用

/**
 * 程序入口
 */
fun main(args: Array) {
    //输出字符 代码结尾不需要写分号
    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重新赋值,看看会出现什么结果:

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

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"

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/70215.html

相关文章

  • #土豆记事# ——学习Kotlin(Android中的Swift)

    摘要:概览之前我们学习过如何写一个简单的。综上所述,我要给点赞我把土豆记事所有的代码全部改成的实现,并开源到上大家可以下来学习,也非常感谢大家对我的支持。 概览 之前我们学习过如何写一个简单的Android App。 为了赶上潮流,我特地去学习了下Jetbrains开发的新语言 —— Kotlin 不想说太多的概念,总结出来就是 Swift on JVM。 那么为什么要用它呢,我喜欢它的...

    ytwman 评论0 收藏0
  • Kotlin 资源大全

    摘要:联系方式开发交流群扫描二维码添加小编好友,备注,稍后会拉你进群 目录 介绍 官网及文档 中文社区 教程 & 文章 开源库和框架 Demo 其他 介绍 今天凌晨的 Google I/O 上,Google 正式宣布官方支持 Kotlin. 为了让大家更快了解和上手 Kotlin,掘金技术社区为大家整理了这份 Kotlin 资源大全,希望可以帮助大家用最短时间学习 Kotlin. 官...

    VPointer 评论0 收藏0
  • 现代编程语言最有趣的 10 大特性

    摘要:本文地址阅读时间大概分钟如今大多数现代语言都依然使用老旧的语法。我们看一下编程语言的年代等等。这些都是上个世纪的语言了。我觉得还有要给非常有用的特性,。之所以没有提到,是因为大多数语言都已经有这个特性了吧,看来还是发展太慢啊。。。 dev-reading/fe 是一个阅读、导读、速读的 repo,不要依赖于 dev-reading/fe 学习知识。本 repo 只是一个快速了解文章内容...

    sanyang 评论0 收藏0
  • 现代编程语言最有趣的 10 大特性

    摘要:本文地址阅读时间大概分钟如今大多数现代语言都依然使用老旧的语法。我们看一下编程语言的年代等等。这些都是上个世纪的语言了。我觉得还有要给非常有用的特性,。之所以没有提到,是因为大多数语言都已经有这个特性了吧,看来还是发展太慢啊。。。 dev-reading/fe 是一个阅读、导读、速读的 repo,不要依赖于 dev-reading/fe 学习知识。本 repo 只是一个快速了解文章内容...

    Sike 评论0 收藏0
  • 从零开始学 Kotlin 之「1」基础篇

    摘要:前言大家好,这里是从零开始学之基础篇,本文首发于公众号,欢迎前往大家关注。也可以用在表达式中集合的使用创建一个集合,并用循环遍历输出也可以在用去检查集合中的元素最后从零开始学之基础篇到这里就结束了。 前言 大家好,这里是「从零开始学 Kotlin 之『1 』基础篇」,本文首发于公众号「Binguner」,欢迎前往大家关注。我会每周分享一些关于 Android 和其他方向的技术干货或一...

    hatlonely 评论0 收藏0

发表评论

0条评论

myeveryheart

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<