首页 > 其他分享 >kotlin学习

kotlin学习

时间:2023-05-06 10:31:44浏览次数:38  
标签:Int kotlin var Son 学习 println fun class


kotlin方法一般不能接受空值,硬加能接受空值 就必须加?

 

fun method(value : String ?){
println(value)
}
 
 
 var nums = 1..100表示1到100的数组
var nums1= 1 until 100 表示1到99的数组
for( a in nums step 2 ){
println(a)
}

显示13 579    step表示跳几个元素

 

 

nums.reversed()  表示翻转
var list = listOf("aaa","bbb","ccc")
for((i,e) in list.withIndex()){  //带下表的增强遍历数组
println("$i $e")
}

 

 

声明方法的一行写法

fun addValue(x:Int ,y:Int):Int = x+y

 

还有一种函数表达式的写法

var i= {x:Int,y:Int->x+y}
var result = i(3,5)
var j:(Int,Int)->Int ={x,y->x+y}
var result1 = j(3,5)

 

 

具名参数用法

val Pi= 3.14159f

fun 获取圆的周长(PI:Float=Pi,半径:Float){
return  2*PI*半径
}

PI在还没被调用的时候就被赋值了,叫默认参数

如果调用的时候不填,默认就是 3.14159f

 

在明知道PI的值的时候,可以只赋值半径

但是var area=获取圆的周长(2.0f)

这样是会报错的

正确写法是var area=获取圆的周长(半径=2.0f)

    这就叫具名参数

 

 

类要被继承  必须前面加open

方法允许被重写也要加关键字open

 

例如 open class Father{
var chactor ="内向"
open fun action(){
println("啦啦啦啦啦")
}
}
 
class Son :Father(){
 
override  fun action(){
println("儿子说话了")
}
}
 
fun main(args :Array<String>){
var son1= Son()
println("儿子在${son1.chactor)}")
son1.action()
}

 

抽象类的定义和java一样 方法也要抽象

 

abstract class Human(var name: String){
abstract fun eat()
}

接口是事物的能力

抽象类反应事物的本质

interface    IMan {
fun xiaodidi()
}
abstract class Human{
abstract   fun eat(){}
}
class  Man : Human(),IMan{
override fun xiaodidi(){
println("dasdasdasd")
}
override fun eat(){
println("dasdasdasda")
}
}

 

继承要带括号   实现不需要

 

代理
interface IWashing{
fun washing()
}
class son :IWashing {
override fun washing(){
println("儿子洗碗")
}
}
 class Father :IWashing by Son(){
override fun washing(){
println("爸爸开始洗碗")
Son().washing()
println("儿子替爸爸把碗洗好了")
}
}

通过by 来让别人代理自己做事

 

单例设计模式

只要把class 换成object就行,如果是单例 引用的时候就不需要加括号

 

object son :IWashing {
override fun washing(){
println("儿子洗碗")
}
}
 class Father :IWashing by Son{
override fun washing(){
println("爸爸开始洗碗")
Son.washing()
println("儿子替爸爸把碗洗好了")
}
}

 

 

枚举

enum class Week{

星期一,星期二,星期三,星期四,星期五

}

印章类

sealed class Son{
fun sayHello(){
println("大家好!")
}
class xiaoA():Son()
class xiaoB():Son()
}

 

 

fun main(args:Array<String>){
var s: Son= Son.xiaoA()
var v:Son= Son.xiaoB()
var d:Son = Son.xiaoA()
var list = listOf<Son>{s,v,d}
for(q in list){
if(q is Son.xiaoA){
q.sayHello()}
}
}

 

is  相当于 java的instanceof

 

kotlin中的单利


class MyApplication private constructor() : Application() {
  companion object {
     val instance :MyApplication by lazy{ 
       MyApplication()
     }
  }
}


private constructor~私有话构造方法,禁止手动创建对象; 
companion object~伴生对象,每个类都可以实现一个伴生对象,它是该类的所有实例共有的对象。它将类似于Java中的静态字段; 
by lazy~懒加载, 可以在我们使用这个对象时再对其创建。

标签:Int,kotlin,var,Son,学习,println,fun,class
From: https://blog.51cto.com/u_13045684/6249124

相关文章

  • Vue学习
    vue第一个案例vue.js开发版本vue.min.js生产版本(压缩版)第一个案例:<!doctypehtml><htmllang="en"><head><metacharset="UTF-8"><title>Document</title><scripttype="text/javascript"src=&q......
  • httprunner 4.x学习 - 5. validate 断言总结
    前言HttpRunner4.x支持两种(jmespath和正则)提取返回结果的方式,并且内置了丰富的校验结果的方式assert校验方式validate可以支持的校验方式assert缩写功能equal"eq","equals","equal"相等less_than"lt","less_than"小于less_or_equals"le&q......
  • nmap学习
    1、nmap简介Nmap是一款用于网络发现和安全审计的网络安全工具,它是自由软件。软件名字Nmap是NetworkMapper的简称。通常情况下,Nmap用于:列举网络主机清单、管理服务升级调度、监控主机、服务运行状况,Nmap可以检测目标主机是否在线、端口开放情况、侦测运行的服务类型及版本信......
  • 2023.5.5 《动手学深度学习》第3、4章
    今天继续学习《动手学习深度学习》第3章:线性神经网络、第4章:多层感知机,今天学到的内容主要有这两章的概念,另外,完成了Kaggle房价预测的代码复现(Kaggle_HousePricePrediction.ipynb)。一、理论部分:1、概念解释:超参数:可以调整但不在训练过程中更新的参数称为超参数2、DL操作数......
  • python基础学习-文件
    """文件操作open()打开open(name,mode,encoding)name:文件名,文件所在的路径mode:文件访问模式,只读r,写入w(文件存在,从开头开始编辑,原有内容会删除,不存在,创建),追加a(文件存在,从已有内容之后进行编辑,不存在,创建)读写encoding:编码格式"""#打开文件f=open("demo.txt","r",encoding="......
  • python基础学习-字典
    """字典dict定义:元素是键值对,key不能重复,不能使用下标索引,key是除字典外其他类型,value为任意类型,可嵌套,可修改,支持for循环,不支持while循环#字面量{key:value,key:value,key:value}#定义变量变量名称={key:value,key:value,key:value}#定义空列表变量名称=dict(......
  • python基础学习-异常
    """异常:捕获异常:基本语法:try:可能发生错误的代码except:出现异常执行代码else:没异常,执行finally:无论有无异常,都执行异常具有传递性"""#捕获指定异常try:print(name)exceptNameErrorase:print("出现未定义异常")print(e)#捕获多个异常try:......
  • python基础学习-容器
    """容器的通用功能:len(容器)统计容器元素个数max(容器)统计最大元素min(容器)统计最小元素类型转换list(容器)给定容器转换为liststr(容器)给定容器转换为strtuple(容器)给定容器转换为tupleset(容器)给定容器转换set通用排序:sorted(容器,[reverse=True])......
  • Photoshop学习
        Photoshop基础教程:图层全面解析 PS图层蒙版_技巧教程 PS图层合并并同时保留原样式_技巧教程ps图层合并(图片合成)_技巧教程 ps图层智能对象_作用图解PS图层智能对象_10个特性介绍ps图层转换为智能对象使用介绍和方法PS智能对象的图片不能编辑的两种解决办法PS智能对象......
  • keepalived-学习目录
    1、Keepalived基本概述https://www.cnblogs.com/ygbh/p/17373758.html2、Keepalived安装https://www.cnblogs.com/ygbh/p/17373985.html3、keepalived高可用配置【抢占式】https://www.cnblogs.com/ygbh/p/17374339.html4、keepalived高可用配置【非抢占式】https:/......