kotlin学习笔记——变量、可空与非空

AgentWeb在Kotlin开发使用中出现WebView的onPageStarted中favicon为空导致崩溃 最新项目中使用了AgentWeb的一个WebView封装库,使用kotlin语言开发时候出现了IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter favicon的问题,而在... 阅读详情

可缺省参数默认值、可空参数与java重载注解

java中的重载,在kotlin中通过为可缺省参数提供默认值来实现,添加@JvmOverloads注解是为了转换成java代码时,自动生成重载函数,kotlin中为可缺省参数提供默认值写法如下

@JvmOverloads   //包含可缺省默认参数和可空参数,增加java重载注解
fun addProduct(name: String, price: Double = 0.0, desc: String? = null) =
    "Adding product with $name, ${desc ?: "None"}, and " + NumberFormat.getCurrencyInstance()
        .format(price)

上面addProduct方法只有一行,可以简化用 = 号,省略{ }函数体括号,类似于python中的lambda方法
等同于下方常规写法:

@JvmOverloads   //包含可缺省默认参数和可空参数,增加java重载注解
fun addProduct(name: String, price: Double = 0.0, desc: String? = null){
    "Adding product with $name, ${desc ?: "None"}, and " + NumberFormat.getCurrencyInstance()
        .format(price)
}

可通过以下代码测试

@Test
fun `check all overloads`() {
    println(addProduct("Name_", 5.0, "Desc"))
    println(addProduct("Name_", 5.0))
    println(addProduct("Name_"))
}

类的构造函数重载类似,在类名后加@JvmOverloads注解,并声明constructor

//类的构造函数重载方法中包含可省略的默认参数时,@JvmOverloads重载,后面显示声明 constructor
data class Porduct @JvmOverloads constructor(
    val name: String,
    val price: Double = 0.0,
    val desc: String? = null
)

显式类型转换

与java的int、long等原生数据类型不同,kotlin中的Int和Long等都是类,所以不会自动转换,需要显式转换

  1. 使用toInt() toLong()等显式转换函数
  2. +号操作符重载隐式转换为+前面的类型
fun test3() {
   var intVar: Int = 3
   val longVar: Long = intVar.toLong()
   val byteVar: Byte = intVar.toByte()
   val charVar: Char = intVar.toChar()
   val shortVar: Short = intVar.toShort()
   val floatVar: Float = intVar.toFloat()
   val doubleVar: Double = intVar.toDouble()
   val intVar2: Int = doubleVar.toInt()

   val longVar2 = intVar.toLong()

   //+号操作符重载隐式转换至前面的类型
   val longVar3 = 0L + intVar
   val stringVar = "" + intVar

   var longVar4 = intVar.toLong()
}

打印不同的进制

java中用Integer.toString(int, int)第一个int是带转换的值,第二个int是进制
kotlin中使用Java的方法,并使其成为Byte、Short、Int以及Long的扩展函数:toString(radix: Int)

var a = 42
println(a.toString(8))  //打印a的八进制:52
println(36.toString(5)) //打印36的五进制:121
C#创建COM组件,QT调用COM组件简单测试(VS2008+QT4.6.4) 一. C#创建组件: 1. VS2008新建一个项目,选择Visual C#, Class library 修改Properties下面的AssemblyInfo.cs文件,ComVisible属性设置为True,即:[assembly: ComVisible(true)] 2. 右击项目,选择“属性”, 选择“生成”选项卡,把“为COM互操作注册”勾选上 选择“签名”选项卡,把“ 阅读详情

相关推荐

Gromacs文件格式全解析:xtc vs trr vs cpt,哪种更适合你的模拟需求?

本文深入解析Gromacs分子动力学模拟中的三种核心文件格式xtc、trr和cpt,详细对比其技术特性和适用场景。xtc适合存储效率优先的场景,trr保留完整动力学数据,cpt确保模拟精确重启。通过实际配置示例和存储优化技巧,帮助用户根据模拟需求选择最佳格式组合,平衡分析灵活性与存储成本。

weixin_29281941的博客 95

Kotlin 总结:第一部分

虽然 Kotlin 推出了一段时间了,但是我一直持观望态度。之前一直觉得 Kotlin 只是在 Java 的基础上增加了一些新的特性,如果本质的性能问题没有提升,那么也没必要深入掌握这种语言。但最近因为开发的时候遇到空指针的判断问题,感觉 Java 的处理方式非常繁琐,所以希望诉诸于 Kotlin. 本次梳理的主要目标在于, 梳理 Kotlin 基本语法和语言设计思路, 了解 Kotlin 的语...

你好,开发者 616

KAN神经网络实战:如何用Python快速搭建你的第一个可解释性模型

本文提供了使用Python和PyTorch快速搭建首个KAN(Kolmogorov-Arnold Networks)神经网络模型的实战指南。通过对比传统MLP,详细解析了KAN利用可学习的边函数实现更高可解释性的核心原理,并逐步演示了从环境配置、数据准备、核心模块实现到模型训练与可视化的完整流程,帮助开发者掌握这一新兴的可解释性AI模型构建方法。

convnet3designer的博客 472

注意kotlin变量非空的写法

1,错误示例: var mToken: String= "" ...... mToken = intent.getStringExtra(ConstantValue.FC_TOKEN)//这里在某种情况下,可能会为null 错误原因:kotlin初始化值中,如果没有加上问号,说明你声明的是一个非null的变量,即使初始化你给赋值了,如果在后面可能给赋值了一个null,还是不被允许的,会crash。 2,正确写法: //mToken虽然初始化为空字符串,但是可以为null var mToken:

Goals1989的博客 1216

相位相关匹配法的opencv C++实现

这一段就是PCIAM算法的核心了,计算两幅图像的峰值相关矩阵,也是完全按照matlab移植过来的,但是后面几行,是为了筛选一些不可能存在的情况,比如边缘处的完全重合,或者只有一行,或者一列重合等等情况,由于PCIAM算法在边缘处的响应值高,所以在一些场景下可能是一种干扰,所以进行了剔除,当然可以不剔除,就是对后期的峰值选取会有影响。头文件,以及各类函数,还有主函数,第一次独立的写这种分文件类型的项目,写的拉跨还请包涵,以及当然可以转成类的形式,但感觉有点小麻烦,后期再修改吧。

qq_43616651的博客 4260

Silvaco TCAD | 从极化效应到高频开关:GaN HEMT仿真设计与性能验证

本文深入探讨了使用Silvaco TCAD进行GaN HEMT仿真设计与性能验证的关键技术。从极化效应到高频开关特性,详细解析了2DEG形成机制、器件结构设计优化及高频特性仿真技巧,帮助工程师提升GaN HEMT的性能与可靠性。通过实战案例展示了如何通过仿真优化击穿电压和导通电阻,实现开关品质因数的显著提升。

weixin_30872337的博客 484

第2章Kotlin基础

第2章Kotlin基础

yipiziyoudelang的博客 591

Ubuntu20.04安装NVIDIA显卡驱动避坑指南:从.run文件到完美运行

本文详细介绍了在Ubuntu20.04系统上通过.run文件安装NVIDIA显卡驱动的完整流程和避坑技巧。从禁用Nouveau驱动、选择合适显示管理器到处理常见安装问题,提供了一套经过验证的解决方案,帮助用户顺利完成驱动安装并优化性能。

weixin_30776273的博客 602

Kotlin笔记(一):Lambda,非空判断,函数默认参数

Kotlin中的Lambda表达式,空指针判断及函数的默认参数值

Waruler的博客 1252

UE4 Instanced Mesh 半透明渲染顺序不对解决

以绿色方块为Instanced Mesh为例。 正确的半透应该是这样的: 这是一般蓝图Actor方块,其半透是正常的。 然而Instanced Mesh因为过多,UE4不给你缓存正确的渲染顺序。所以,在不改代码的情况下,想解决Instanced Mesh半透问题,是不可能的。不正确的半透如下: 注意到错误发生在Instanced Mesh的方块与方块之间。 但我就是要解决,...

qq_41524721的博客 5569

华为OD机试 - 不含101的数(Python/JS/C/C++ 双机位C卷 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。小明在学习二进制时,发现了一类不含101的数,也就是:现在给定一个正整数区间,请问这个区间内包含了多少个不含101的数?输入的唯一一行包含两个正整数。输出的唯一一行包含一个整数,表示在区间内一共有几个不含101的数。8 1668 → “1000”

学Java,找哪吒 1250

kotlin的空值处理

使用?运算符:我们可以使用?运算符来声明一个变量可以为空。例如,String?表示一个可空的字符串类型。当我们使用一个可空类型的变量时,需要使用?运算符来调用它的属性或方法。在上面的示例中,我们声明了一个可空的字符串类型s,然后使用?运算符来获取它的长度。如果s是nulllength也会是null。

m0_58037062的博客 1339

FPGA电路设计2——芯片原理图绘制

FPGA板卡设计要点:1. 引脚分配遵循电平标准分组原则,需通过预编译验证;2. 电源设计需满足上电时序要求并合理估算功耗;3. 最小系统包含配置Bank(Bank0)、通用I/O Bank(HRBank)、高性能Bank(HPBank)和高速收发器Bank(MGT/GTX)。其中Bank0负责关键配置功能,包括模式选择(支持SPI/BPI/JTAG等5种配置方式)、JTAG调试接口和系统监控引脚,其电压选择(CFGBVS_0)必须与VCCO_0电压匹配。

在读研究生,FPGA电路设计与功能开发。 1236

Kotlin优雅地对多变量判空

我们都知道Kotlin使用?.可以优雅地处理判空 使用?.判空 对于以下Java代码 //java if(user != null) { system.out.println("name: " + user.name) } Kotlin中处理如下 //kt user?.let { println("name: ${it.name}")} 多变量判空 如果有多个变量需要判空呢? if(u...

移动端开发干货分享 4840

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Kotlin中的空判断处理

最后赋值了”Lily“,然后传给sayHello(name),这里并没有做非空判断啊,sayHello接受的是不可空的String,但是name是一个可空String啊,道理也很简单,因为这是局部变量,没有子线程的干扰,IDE能检测到name在传给sayHello之前是赋值了”Lily"的,之后没有再赋值为null也是能检测出来的,所以这里不需要做可空判断也能编译通过。可以看到,此时不需要添加!也不报错了,因为IDE知道name是一个不可变属性,判断了不是空之后,就永远不可能是空了。

2401_89213119的博客 928

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

kotlin之变量的可空与非空

版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/218 kotlin之变量的可空与非空 上面一篇文章,介绍了kotlin的变量与常量,以及修饰为常量或者是变量的评估标准。本篇文章主要想说的是一个变量的可空与非空。从字面意思上来看,可空就是允许变量的值是null,非空就是不允许变量的值是nul...

weixin_30294021的博客 417

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Kotlin基础语法 五、可空变量的null处理

kotlin变量分为可空变量和不可空变量。如果我们定义一个可空变量,在使用的时候,需要判断该段该变量是否为空,如果定义一个不可空的量时,则判断将毫无意义,因为这个变量永远不会为空。 koltlin变量空值处理方式: 方式一、使用传统的 if…else… 条件语句判断 示例: val l = if (b != null) b.length else -1 方式二、使用安全调用操作符 ?. 判断 用法为:可空变量?.属性/方法。如果可空类型变量为null时,返回null 这种用法大量用于链式调用中,能有效避免空

weixin_43864176的博客 1936

【Kotlin】Kotlin 与 Java 互操作 ① ( 变量可空性 | Kotlin 类型映射 | Kotlin 访问私有属性 | Java 调用 Kotlin 函数 )

一、Kotlin 变量可空性 1、Java 与 Kotlin 空值处理区别 2、Java 函数返回非空值和控制 3、Kotlin 函数调用 Java 函数 4、平台类型 5、@NotNull 和 @Nullable 注解 二、Kotlin 的 Java 类型映射 三、Kotlin 访问 Java 私有属性 四、Java 调用 Kotlin 函数 1、函数调用 2、分析 Kotlin 代码生成的字节码数据 3、使用 @JvmName 注解修改 Kotlin 生成的 Java 类名

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 1万+

Kotlin变量和常量

这篇博客主要介绍了Kotlin中的变量和常量的声明,以及可空变量的使用,成员变量的一些特殊情况的处理

尘心平的博客 904

可为空的对象必须具有一个值_小谈 Kotlin 的空处理

大家好,我是光源。近来关于 Kotlin 的文章着实不少,Google 官方的支持让越来越多的开发者开始关注 Kotlin。不久前加入的项目用的是 Kotlin 与 Java 混合开发的模式,纸上得来终觉浅,终于可以实践一把新语言。本文就来小谈一下 Kotlin 中的空处理。一、上手的确容易先扯一扯 Kotlin 学习本身。之前各种听人说上手容易,但真要切换到另一门语言,难免还是会踌躇是...

weixin_39676972的博客 893

Kotlin学习笔记

本文摘要:Kotlin学习笔记涵盖基础语法和面向对象编程。基础部分包括变量定义(val/var)、循环与范围表达式(1..5/until)、字符串模板(${})、列表/字典操作、函数定义、异常处理及递归优化(tailrec)。面向对象部分详细讲解了类定义、封装(private)、继承(open/override)、抽象类(abstract)、多态、接口(interface)等核心概念,并通过洗衣机案例演示封装实践。特别对比了抽象类与接口的区别,介绍了委托代理(by)模式、枚举类和印章类(sealed)等特性

m0_62639958的博客 1534

kotlin定义变量

首先需要注意的 1 定义只读局部变量使用关键字val定义。只能为其赋值一次, 2 定义全局变量使用关键字var定义, java中定义一个TextView的id如下 private TextView text; 在kotlin中定义则如下(注意用冒号分隔) private var text : TextView? = null (解释TextView后面?的作用: 当某个变量...

小牧在一直在学习,在前进的道路上大家一起学习,进步。 3651

kotlin 消除!!强制非空

kotlin 消除强制非空!!的基本方法介绍

放下矜持的博客 1519

Kotlin中变量简要

1.Kotlin中有两个关键字定义变量 var 和 val var 声明的变量值是可以改变的 val 声明的变量值是不可以改变的相当于java的 final 2.声明可为空变量 var/val 变量名 : 类型? = null/确定的值 var var_a : Int? = 0 var val_a : Int? = null 3.控件初始化 原生: private var ...

鹏鹏的博客 454

Kotlin学习笔记——Kotlin基础

Kotlin学习手记——基本类型、变量、集合、数组、区间、函数声明

川峰的博客 6168
上一篇: kotlin学习笔记——变量、可空与非空
下一篇: Compose实现webView文件选择
LiePy
博客等级 码龄7年 1927粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值