kotlin入门知识点总结(1) 常量,条件语句,String,方法,UNIT函数和NOTHING函数

参考材料

从 VIP课程 2021-4-2 kotlin专题,适合有java基础的人
直接百度搜索码牛学院就可以找到

1. 变量常量和类型

kotlin中,变量的定义是这样
var 变量名: 变量类型

比如: var str: String ,就是声明了一个类型为String的变量str

val表示这是一个不可变量,他的值在定义之后就不可改变

// 这种写法会报错
val str: String = "hello world"
str = "hello kotlin"
// 这种写法不会报错
val str: String
//... 插入若干行代码...
str = "hello world"

1.1 类型推断

如果某个变量的类型是显而易见的,你可以不需要去声明他的类型

var str = "hello world"

双引号,表示了这一定是一个String类型,所以我们可以省略他的类型声明,即冒号和后面的String

1.2 编译时常量

编译时常量必须在方法之外定义,因为编译时常量会在编译时直接赋值,而方法都是在运行时才被调用。
编译时常量只能用基本数据类型+String一共9种

const val MAX = 100

2. 条件语句

2.1 if/else

同java

2.2 range

kotlin特有的,从某个范围内寻找某个数。
写法是 in 范围下限…范围上限
搜索的范围包括上下限

例:

var a = 10
if(a in 10..15)
	println("yes")
else
	println("no")

结果输出yes

2.3 when

类似于java的switch语句,不同点是写法比较方便且支持表达式。
所以google官方推荐你只要代码有三个以上的if分支,就使用when来代替if/else语句

例:

var school = "小学"
var student = when(school){
	"小学" -> "小学生"
	"初中" -> "初中生"
	"高中" -> "高中生"
	"大学" -> "大学生"
	else -> {
		println("未知类型学生")
	}
}
println(student)

输出是小学生

写法近似switch语句,且自带break,不会往下传递。
然后else对应的是switch语句的default部分。

3. String

kotlin支持在String里面放入变量甚至表达式(类似PHP),只要用美元符号$声明即可

例1:

var str1 = "hello"
var str2 = "world"
pintln("$str1 $str2. hello kotlin.")

输出是hello world. hello kotlin

例2:

var flag = false
println("你是老师还是学生? ${if(flag) "老师。" else "学生。"}")

输出:你是老师还是学生? 学生。

4. 方法

方法的定义和java大同小异

private fun doSomething(param1 : Type1, param2: Type2) : Type{
	//........具体逻辑......
	// doSomething
}

权限声明符同java,有public protect和private以及默认四种
fun 是方法声明符,必加
doSomething是方法名
param1,param2是参数列表,Type1,Type2是参数对应的数据类型
冒号和后面的Type表示这个方法的返回类型,不加就没有返回类型

例:

public fun compare(a: Int, b: Int): Boolean{
	return a>b
}

4.1 默认传参

方法的参数列表可以有默认的值,当不传入值的时候就会直接取默认值

private fun printNum(a: Int = 100, b:Int = 200){
    println("a = " + a)
    println("b = " + b)
}

例1:

printNum(150)

a = 150
b = 200

例2(这个例子表明了,函数的调用可以按自己喜欢的顺序传参,只要标注参数名即可):

printNum(b=150)

a = 100
b = 150

4. kotlin字节码

Tools -> kotlin -> show kotlin bytecode
再点击Decompile,就可以将字节码转成java文件。

之后遇到一些语法会转java,来比较一下两个语言的区别。

5. Unit函数

某个方法,如果没有标注任何的返回值,那它的返回值就是kotlin.unit

fun test(){}

fun main(args: Array<String>) {
    println(test())
}

翻译成java文件后,是这样的

public static final void test() {
}

public static final void main(@NotNull String[] args) {
  test();
  Unit var1 = Unit.INSTANCE;
  System.out.println(var1);
}

这个Unit.INSTANCE,就是一个类,长这样(object在kotlin中,代表着单例,所以Unit类会自带一个INSTANCE变量)

public object Unit {
    override fun toString() = "kotlin.Unit"
}

6. Nothing

TODO方法的返回类型是Nothing,其实就是抛出异常。

fun main(args: Array<String>) {
    TODO("aaaaaaa")
}
// inline表示这个函数是一个内联函数,之后会说到
@kotlin.internal.InlineOnly
public inline fun TODO(reason: String): Nothing = throw NotImplementedError("An operation is not implemented: $reason")

输出:
Exception in thread “main” kotlin.NotImplementedError: An operation is not implemented: aaaaaaa
at TestKt.main(Test.kt:5)

转JAVA:

public static final void main(@NotNull String[] args) {
   String var1 = "aaaaaaa";
   throw (Throwable)(new NotImplementedError("An operation is not implemented: " + var1));
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值