Kotlin基本语法2基本内置方法

1.Kotlin的可空性

fun main() {var str:String? = "butterfly" //?问好代表可空类型str= null
}

 

安全的管理

1.1 安全操作调用符

fun main() {var str:String? = "butterfly" //?问好代表可空类型str= nullprintln(str?.capitalize())//当String为null时候输出null
}

fun main() {var str:String? = "butterfly" //?问好代表可空类型
//    str= ""str = str?.let {//非空白的字符串if (it.isNotBlank()){it.capitalize()}else{"butterfly"}}println(str)}

 1.2 非空断言操作符

fun main() {var str:String ?= "1"str = nullprintln(str!!.capitalize())
}

1.3 使用if判断

fun main() {var str:String? = readLine()if (str!=null){str=str.capitalize()}else{println("为null.")}
}

1.4 空合并操作符

fun main() {var str: String? = "12"str = nullif (str != null) {str = str.capitalize()} else {println("为null.")}str = "rose "str = str?.capitalize()?.plus("is great.")println(str ?: "jack") //如果为null就是jack,否则 就按正常输出}

   str = nullstr=str?.let { it.capitalize() }?: "butterfly"println(str ?: "jack") //如果为null就是jack,否则 就按正常输出

 2.异常

import java.lang.NullPointerExceptionfun main() {var number:Int ?= nulltry {checkOperation(number)number!!.plus(1)}catch (e:NullPointerException){e.printStackTrace()println("出现异常")}}fun checkOperation(number:Int?){number?:throw UnskilledException()
}//自定义异常
class UnskilledException() : IllegalArgumentException("操作不当")

3.先决条件函数

就是判断条件是否满足,例如非空 

import java.lang.NullPointerExceptionfun main() {var number:Int ?= nulltry {checkOperation(number)number!!.plus(1)}catch (e:NullPointerException){e.printStackTrace()println("出现异常")}}fun checkOperation(number:Int?){checkNotNull(number,{"Something is not good"})
//    number?:throw UnskilledException()
}//自定义异常
class UnskilledException() : IllegalArgumentException("操作不当")

 4.字符串的操作

4.1 substring

const val NAME="Jimmy's friend"fun main() {val index = NAME.indexOf("'")
//    println(NAME.substring(0, index))var str = NAME.substring(0..<index)}

 4.2 split

import javax.xml.transform.Sourceconst val NAME="Jimmy's friend"
const val NAMES = "jack,jacky,jason"
fun main() {val index = NAME.indexOf("'")
//    println(NAME.substring(0, index))var str = NAME.substring(0..<index)println(str)/*** 称之为结构语法*/val (origin,dest,proxy)= NAMES.split(",")println("$origin $dest $proxy")}

4.3 replace

fun main() {val str = "The people's Republic of China."val str1 = str.replace(Regex("[aeiou]"),{it->when(it.value){"a" -> "8""e" -> "6""i" -> "9""o" -> "1""u" -> "3"else -> it.value}})println(str)println(str1)
}

5.字符串的比较

fun main() {val str1 ="Jason"val str2 = "jason".capitalize()println(str1==str2)println(str1===str2)
}

 是因为第二种方式是存在堆内存的引用而不是 常量池

6. 字符串的遍历

fun main() {"The people's Republic of China.".forEach(::println)
}

7.数字类型的安全转换函数

fun main() {
//    val number1:Int = "8.98".toInt()val number1:Double? = "8.98".toDoubleOrNull()println(number1)
}

8. Double转Int 与 类型格式化 

    println(8.98656.toInt())//取整println(8.98656.roundToInt())//四舍五入取整val s = "%.2f".format(8.956756)//四舍五入保留两位小数println(s)

9.标准库函数

9.1 apply

import java.io.Filefun main() {val file1 = File("H:\\test\\i have a dream_copy.txt")file1.setReadable(true)file1.setWritable(true)file1.setExecutable(false)val file2 = File("H:\\test\\i have a dream_copy.txt").apply {setReadable(true)setWritable(true)setExecutable(false)}}

 9.2 let

fun main() {val result = listOf(3, 2, 1).first().let {it * it}println(result)
}
fun main() {val result = listOf(3, 2, 1).first().let {it * it}println(result)println(formatGreeting("jack"))}fun formatGreeting(guestNmae: String?): String {return guestNmae?.let { "Welcome ,$it" } ?: "What's your name?"
}

  链式调用 流行

9.3 run

import java.io.File
import java.nio.charset.Charsetfun main() {var file = File("H:\\test\\test.txt")val run = file.run {//和apply很像readText().contains("great") //返回的类型 就是lambda表达式的最后一行}println(run)println("========================")"The people's Republic of China.".run(::isLong).run(::showMessage).run(::println)}fun isLong(name: String) = name.length >= 10fun showMessage(isLong:Boolean):String{return if (isLong){"Name is too long."}else{"Please rename."}
}

9.4 with

fun main() {val run = "The people's Republic of China.".run { length >= 10 }val with = with("The people's Republic of China.") {length >= 10}println(with)}

 9.5 also 

新版本 他是把 作用域传给 里面,然后返回这个对象 

import java.io.Filefun main() {var fileContents:List<String>val apply:File = File("H:\\test\\test.txt").apply {println(name)}.apply {fileContents = readLines()}println(fileContents)
}

9.6 takeif

import java.io.Filefun main() {val result = File("H:\\tes1t\\test.txt").takeIf { it.exists() && it.canRead() }?.readText()println(result)}

 9.7 takeUnless

import java.io.Filefun main() {val result = File("H:\\test\\test.txt").takeUnless { it.isHidden }?.readText()println(result)}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/470856.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

找不到目标和方向,怎么办?

现代社会里&#xff0c;许多人常见的症状&#xff0c;就是「空心病」。 什么是空心病呢&#xff1f;类似这样&#xff1a; 我知道要有目标&#xff0c;但我就是不知道想做什么&#xff0c;感觉对一切事物都提不起兴趣&#xff0c;没有动力&#xff0c;怎么办&#xff1f; 这个…

京东护网面试题汇总

1 、JNI 函数在 java 中函数名为 com.didi.security.main,C 中的函数名是什么样的&#xff1f; com_didi_security_mian java.com.didi.security.main 2 、Frida 和 Xposed 框架&#xff1f; 3 、SSRF 利用方式&#xff1f; 4 、宏病毒&#xff1f; 5 、APP 加壳&a…

Qt:自定义信号,信号emit,传参问题,信号槽与moc

一、自定义信号&#xff0c;信号emit 1、自定义信号 在头文件中 加入signals&#xff1a; 就可以编写信号 2、emit emit的作用是通知信号发生 二、跨UI控件传参 每次按Dialog添加按钮主控件数字会增长 // .h private slots:void on_btnAdd_clicked(); signals:void sign…

新时代异步 IO 框架:IO_URING 的原理、用法、业界示例分析

文章目录 IO_URING基本介绍常见 I/O 模型IO_URING 原理核心结构工作模式高级特性 用法APIliburing基本流程Demo 业界示例SeaStar / ScyllaDBCEPHRocksDBClickHouse IO_URING 基本介绍 常见 I/O 模型 当前 Linux 的几种 I/O 模型&#xff1a; I/O 模型 同步 I/O 是目前应用最…

每日一练:LeeCode-98、 验证二叉搜索树【二叉搜索树+DFS】

本文是力扣LeeCode-98、 验证二叉搜索树【二叉搜索树DFS】】 学习与理解过程&#xff0c;本文仅做学习之用&#xff0c;对本题感兴趣的小伙伴可以出门左拐LeeCode。 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&am…

LeetCode 每日一题 Day 62 - 75

1686. 石子游戏 VI Alice 和 Bob 轮流玩一个游戏&#xff0c;Alice 先手。 一堆石子里总共有 n 个石子&#xff0c;轮到某个玩家时&#xff0c;他可以 移出 一个石子并得到这个石子的价值。Alice 和 Bob 对石子价值有 不一样的的评判标准 。双方都知道对方的评判标准。 给你…

基于MQTT协议的消息代理软件(Mosquitto)介绍与应用

文章目录 一、Mosquitto是什么二、Mosquitto的特点三、Mosquitto常用命令四、Mosquitto的主要应用场景五、Mosquitto的下载与安装六、Mosquitto如何使用 一、Mosquitto是什么 Mosquitto是一个开源的消息代理软件&#xff0c;它实现了MQTT&#xff08;Message Queuing Telemetry…

OTA升级时序

ECU启动时序 在上电/复位后&#xff0c; ECU 执行 Bootloader 程序。 Bootloader 程序首先执行一些基本的初始化&#xff0c;然后检查外部编程请求标志位是否置为 TURE。如果外部编程请求标志位置为 TURE&#xff0c;即使应用程序是有效的&#xff0c;Bootloader 程序 也会继续…

[OPEN SQL] 更新数据

UPDATE语句用于更新数据库表中的数据 本次操作使用的数据库表为SCUSTOM&#xff0c;其字段内容如下所示 航班用户(SCUSTOM) 需要操作更新以下数据 1.更新单条数据 语法格式 UPDATE <dbtab> FROM <wa>. UPDATE <dbtab> FROM TABLE <itab>. UPDATE &l…

电脑监控屏幕软件有哪些(监控电脑屏幕的软件)

随着信息技术的迅猛发展&#xff0c;电脑屏幕监控软件已成为企业、家庭以及教育机构保护数据安全、提升工作效率以及进行行为分析的重要工具。本文将详细介绍几款主流的电脑屏幕监控软件&#xff0c;包括它们的功能、特点以及适用场景&#xff0c;帮助读者更好地了解并选择合适…

【C++第二阶段-重载-关系运算符函数调用】

你好你好&#xff01; 以下内容仅为当前认识&#xff0c;可能有不足之处&#xff0c;欢迎讨论&#xff01; 文章目录 关系运算符-重载-判断相等函数调用运算符重载 关系运算符-重载-判断相等 场景&#xff1a;两个对象&#xff0c;若有年龄和性别的不同&#xff0c;是否可以直…

Stable Diffusion 的提示词入门

一、正向提示词和反向提示词 Stable Diffusion 中的提示词通常用于指导用户对生成的图像进行控制。这些提示词可以分为正向提示词&#xff08;Positive Prompts&#xff09;和反向提示词&#xff08;Negative Prompts&#xff09;两类&#xff0c;它们分别影响图像生成过程中的…