【kotlin】人机交互、异常处理、可见性修饰符详解

118 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第23天,点击查看活动详情

人机交互

我们从键盘输入两个数字,然后打印它们的和

首先先得到从键盘输入的字符串

	println("请输入第一个数字")
	var num1Str = readLine()
	
	println("请输入第二个数字")
	var num2Str = readLine()

然后转数字

在这里插入图片描述

我们发现报错了,因为num1Str和num2Str都有可能为空,所以我们加上一个?

	var num1 = num1Str?.toInt()
	var num2 = num2Str?.toInt()

然后打印和

在这里插入图片描述

我们发现又报错了,因为num1 和 num2都有可能为空,null是不能相加的 所以我们修改之前的代码

	var num1 = num1Str!!.toInt()
	var num2 = num2Str!!.toInt()

来解释下?!!的区别

?意思是这个参数,可以为空并且程序继续运行下去

!!的意思是这个参数如果为空,就抛出异常

看下结果

在这里插入图片描述

异常处理

刚才展示的是用户输入正常的情况下代码执行情况,如果用户输入的不是数字会出现以下情况 在这里插入图片描述

这就需要我们做异常处理了

	try{
		//之前的代码
	}catch(e:Exception){
		println("请输入数字哦")
	}

在这里插入图片描述

可见性修饰符详解

Java中有publicprivateprotecteddefault (什么都不 写)这4种函数可见性修饰符。Kotlin 中也有4种,分别是publicprivateprotected internal,需要使用哪种修饰符时,直接定义在fun关键字的前面即可。下面详细介绍一下 Java和Kotlin中这些函数可见性修饰符的异同

首先private修饰符在两种语言中的作用是一模一样的, 都表示只对当前类内部可见 public修饰符的作用虽然也是一致的,表示对所有类都可见,但是在Kotlin中public修饰符 是默认项,而在Java中default才是默认项。前面我们定义了那么多的函数,都没有加任何的 修饰符,所以它们默认都是public的 protected关键字在Java中表示对当前类、子类和同一 包路径下的类可见,在Kotin中则表示只对当前类和子类可见 Kotlin抛弃了Java中的default 可见性(同一包路径下的类可见),引入了一种新的可见性概念,只对同一模块中的类可见,使 用的是internal修饰符。比如我们开发了一个模块给别人使用,但是有一些函数只允许在模块 内部调用,不想暴露给外部,就可以将这些函数声明成internal