kotlin接口和控制继承,可见修饰符
接口在kotlin中,也是使用interface来定义接口的。接口中,可以定义属性和方法,方法可以实现,也可以不实现。但是他们都是默认为open的,也就是可以被继承和重写的。 属性不能赋值,而且实现了这个接口的方法必须重写该属性,添加上get,set方法 未实现的方法在被之后的类实现时,必须把这个方法也同时实现了。 实现的方法(即带方法体的方法)可以不重写,而是直接使用。1234567891011121314151617fun main(){ B().showA() B().showB()}interface A{ val sb:String fun showA(){ println(123) } fun showB(){ println("234") }}class B(): A { override val sb: String get() =...
kotlin处理集合:可变参数,中缀调用
可变参数在kotlin中创建一个集合,可以往其中传递任意数量的参数进去。 1fun listOf<T>(vararg values:T):List<T>{...} 在kotlin中,是直接使用vararg来说修饰可变参数的。而且kotlin和java的另一个区别就是java中,你可以按照原样传递某个数组进去,而kotlin需要你显式的对这个数组进行解包操作。例如 123val list1 = listOf("1","2")val list2 = listOf(*list1,"3")//最后list2的结果为["1","2","3"] 这个功能被称为展开运算符 中缀调用和解构声明在kotlin中,创建一个map 1val map = mapOf(1 to "One",2 to...
kotlin扩展函数
Kotlin的又一大特色 给别人的类添加扩展函数和属性当我们在一个现有的java或者android项目中,需要添加kotlin的代码,而我们又不能把java等之类的代码全部转重写成kotlin,那会大大降低效率,而kotlin的扩展函数就很好的解决了这个办法。例如:我要获取字符串的最后一个字符: 1234fun main() { println("kotlin".lastChar())}fun String.lastChar(): Char = this.get(this.length-1) 结果为 12nProcess finished with exit code...
kotlin函数特点
kotlin中的集合在kotlin中 12345678fun main(args: Array<String>) { println(set.javaClass) println(list.javaClass) println(map.javaClass)}val set = setOf(1,2,3)val list = arrayListOf(1,2,3,4)val map = mapOf(1 to 'a',2 to 'b') 他的输出结果为 12345class java.util.LinkedHashSetclass java.util.ArrayListclass java.util.LinkedHashMapProcess finished with exit code...
kotlin异常
在kotlin中,他解决异常的方式与java类似,有两种共解决办法。 throw可以选择用throw来抛出异常。但是不一样的是,在kotlin中,他的throw是一个表达式,也就是throw可以作为一个值让其他的表达式使用。 try-cacth 可以像java一样使用try-catch 在kotlin中,try-catch也是表达式的形式。例如:12345val number = try{ Integer.parseInt(reader.readLine())}catch(e:NumberFormatException){ null} 他会返回最后代码块中的最后一个表达式。而kotlin与java异常不同之处在java中有两种异常,受检异常和未受检异常。java必须显示的处理受检异常,例如IOException,而kotlin中,不区分受检异常和非受检异常。你不需要用throws来强制的抛出异常。
kotlin枚举类和“WHEN”,in
枚举类在kotlin中,有enum的一个所谓的软关键字,她只在class钱买你才有特殊意义,其他时候都是普通的名称使用。 12345678910111213enum class Color(val r: Int, val g: Int, val b: Int) { RED(255, 0, 0), ORANGE(255, 165, 0), YELLOW(255, 255, 0), GREEN(0, 255, 0), BLUE(0, 0, 255);//如果在枚举类中,有定义任何方法的话,需要将定义的常量后面加上分号来与方法分开 fun rgb() = (r * 256 + g) * 256 + b}fun main() { println(Color.RED)} 结果为 123REDProcess finished with exit code 0 //如果没有选择方法或者属性字段,她会默认输出他的名字。 when一些比较常用的方法 1234567891011import...
kotlin高级函数和lambda表达式
kotlin的表达式函数体 12345678910111213141516171819202122fun main() { println(add_express(1, 2)) println(add_block(1, 2)) println(add_lambda(1, 2))}/** * 代码块体,最完整的函数体 */fun add_block(a: Int, b: Int): Int { return a + b}/** * 表达式体 * 要求,他的函数体是由单个表达式构成的。 * 那么她会自动判断返回类型。可以省略掉返回类型,同时需要省略掉花括号和return */fun add_express(a: Int, b: Int) = a + bvar add_lambda = { a: Int, b: Int -> a+b}fun add(a:Int,b:Int):(Int,Int)->(Int)={ a: Int, b: Int ->...
kotlin细节(1)if表达式
在kotlin中,if是表达式,而不是语句。他们的区别是表达式有值,可以作为另一个表达式的一部分使用。而语句没有。 而另一方面,在java中赋值操作是表达式,所以你可以在很多的if判断中看到赋值的出现,而kotlin中赋值操作变成了语句,这样有助于避免比较和赋值的混淆
Echarts入门
echarts的引入 在原生html中引入echarts你可以在官方下载链接获得echarts的js包 1234<!--下载包的方式--><script src="你的echar.js的路径"></script><!--引入网络链接的方式--><script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.4.2/echarts.common.js"></script> 在vue中引入echarts echarts的使用echarts会自动适应和匹配容器的大小 通过js来使用echar首先先定义一个容器,用来防止echart图标 1234567891011121314151617181920212223<div id="echart-box"...
Kali Linux 安装英伟达显卡驱动和CUDA套件
事情是这样子的,我最近刚装kali linux在我的笔记本上,想从windows转为linux体验一下,然后我访问Google浏览器发现我的cpu居然跑到了90%以上,风扇呼呼转,真的是见了鬼了。后来意识到,linux可能没有英伟达显卡的驱动这篇文章说明一下安装驱动的过程 确保仓库包含contrib和non-free部分。Kali默认就有此部分。 检查显卡 下面的命令会显示你现在的显卡是什么。123456┌──(root㉿kali)-[~]└─# lspci | grep -i vga10:22.0 VGA compatible controller: NVIDIA Corporation GP106 [GeForce GTX 1060 6GB] (rev a1)┌──(root㉿kali)-[~]└─# 为了查看nvidia显卡,可以安装nvidia-detect,并运行此软件。12345678910┌──(root㉿kali)-[~]└─# apt install nvidia-detect┌──(root㉿kali)-[~]└─# nvidia-detect...