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

1.Kotlin的可空性

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

 

安全的管理

1.1 安全操作调用符

fun main() {
    var str:String? = "butterfly" //?问好代表可空类型
    str= null
    println(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 = null
    println(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 = null
    if (str != null) {
        str = str.capitalize()
    } else {
        println("为null.")
    }

    str = "rose "
    str = str?.capitalize()?.plus("is great.")
    println(str ?: "jack") //如果为null就是jack,否则 就按正常输出
    


}

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

 2.异常

import java.lang.NullPointerException

fun main() {
    var number:Int ?= null

    try {
        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.NullPointerException

fun main() {
    var number:Int ?= null

    try {
        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.Source

const 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.File

fun 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.Charset

fun 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 >= 10

fun 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.File

fun 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.File

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

}

 9.7 takeUnless

import java.io.File

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

}

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java使用Documents4j实现Word转PDF(知识点+案例)

文章目录 前言源码获取一、认识Documents4j二、快速集成2.1、pom.xml依赖2.2、word转PDF实现项目目录WordUtils.javaDemo6.java测试效果 参考文章资料获取 前言 博主介绍&#xff1a;✌目前全网粉丝2W&#xff0c;csdn博客专家、Java领域优质创作者&#xff0c;博客之星、阿里…

优秀的电机驱动MCU:MM32SPIN360C

DC-DC电源布局注意点&#xff1a; 电源模块布局布线可提前下载芯片的datasheet&#xff08;数据表&#xff09;&#xff0c;按照推荐的布局和布线进行设计。 1) 芯片电源接近原则&#xff1a; 对于为芯片提供电压的开关电源&#xff0c;应确保它尽量靠近芯片放置。这样可以避…

嵌入式中PWM操作与实现原理

PWM有非常广泛的应用&#xff0c;比如直流电机的无极调速&#xff0c;开关电源、逆变器等等。 个人认为&#xff0c;要充分理解或掌握模拟电路、且有所突破&#xff0c;很有必要吃透这三个知识点&#xff1a; PWM 电感 纹波 PWM是一种技术手段&#xff0c;PWM波是在这种技术…

java8使用流

这种处理数据的方式很有用&#xff0c;因为你让Stream API管理如何处理数据。这样StreamAPI就可以在背后进行多种优化。此外&#xff0c;使用内部迭代的话&#xff0c;SteamAPI可以决定并行运行你的代码。这要是用外部迭代的话就办不到了&#xff0c;因为你只能用单一线程挨个迭…

中等题 ----- 栈和单调栈

文章目录 一&#xff0c;栈1. 用栈操作构建数组2. 逆波兰表达式求值3. 使括号有效的最少添加4. 最小栈5.小行星碰撞6. 验证栈序列7.检查替换后的词是否有效8. 反转每队括号间的子串9.移除无效的括号10. 括号的分数11. 删除字符串后的所有相邻重复项II12. 基本计算器|| 二&#…

opencv鼠标响应与操作

这节讲得好,建议仔细揣摩 Point sp(-1, -1);//初始位置 Point ep(-1, -1);//结束位置 Mat temp; static void on_draw(int event, int x, int y, int flags, void * userdata) {Mat image *((Mat*)userdata);//先将void类型转为Mat类型//((Mat*)userdata)是Mat类型指针 前面加…

vue3 中使用pinia 数据状态管理(在Taro 京东移动端框架中的使用)

1.pinia 介绍 pinia 是 Vue 的存储库&#xff0c;它允许您跨组件/页面共享状态。就是和vuex一样的实现数据共享。 依据Pinia官方文档&#xff0c;Pinia是2019年由vue.js官方成员重新设计的新一代状态管理器&#xff0c;更替Vuex4成为Vuex5。 Pinia 目前也已经是 vue 官方正式的…

论文阅读 - Non-Local Spatial Propagation Network for Depth Completion

文章目录 1 概述2 模型说明2.1 局部SPN2.2 非局部SPN2.3 结合置信度的亲和力学习2.3.1 传统正则化2.3.2 置信度引导的affinity正则化 3 效果3.1 NYU Depth V23.2 KITTI Depth Completion 参考资料 1 概述 本文提出了一种非局部的空间传播网络用于深度图补全&#xff0c;简称为…

手把手教你免费搭建自己的红包封面商城​

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。&#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精通…

【Linux】调试工具gdb:初识

前言 今天来记录并学习一下gdb的使用 背景 程序的发布方式有两种&#xff0c;debug模式和release模式Linux gcc/g出来的二进制程序&#xff0c;默认是release模式要使用gdb调试&#xff0c;必须在源代码生成二进制程序的时候, 加上 -g 选项 使用 gdb FileName 退出&#x…

爱上JVM——常见问题:JVM组成(一)

1 JVM组成 1.1 JVM由那些部分组成&#xff0c;运行流程是什么&#xff1f; 难易程度&#xff1a;☆☆☆ 出现频率&#xff1a;☆☆☆☆ JVM是什么 Java Virtual Machine Java程序的运行环境&#xff08;java二进制字节码的运行环境&#xff09; 好处&#xff1a; 一次编写&…

qt-C++笔记之打印所有发生的事件

qt-C笔记之打印所有发生的事件 code review! 文章目录 qt-C笔记之打印所有发生的事件1.ChatGPT问答使用 QApplication 的 notify 方法使用 QObject 的 event 方法 2.使用 QObject 的 event 方法3.使用 QApplication 的 notify 方法 1.ChatGPT问答 在Qt C中&#xff0c;若要打…

相机图像质量研究(22)常见问题总结:CMOS期间对成像的影响--光学串扰

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…

C# VS2022+WinForm+Oracle19.3+Excel,根据数据库表定义书生成SQL

目标&#xff1a; 用Excel写数据库的表的定义书&#xff0c;用该工具生成SQL&#xff0c;在客户端执行&#xff0c;把表结构导入数据库&#xff0c;生成真正的表 Github代码下载 目录 0.完成下面开发环境的准备1 操作系统Win11 专业版 21H22 oracle 19.33 Visual Studio Commun…

C语言第二十五弹---字符函数和字符串函数(上)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 目录 1、字符分类函数 2、字符转换函数 3、strlen的使用和模拟实现 4、strcpy 的模拟实现 5、strcat 的模拟实现 6、strcmp 的模拟实现 7、strncpy 函数的使用 总结…

高效货运 - 华为OD统一考试(C卷)

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 200分 题解&#xff1a; Java / Python / C 题目描述 老李是货运公司承运人&#xff0c;老李的货车额定载货重量为wt&#xff1b;现有两种货物&#xff0c;货物A单件重量为wa&#xff0c;单件运费利润为pa&#xff0c…

Fluke ADPT 连接器新增对福禄克万用 Fluke 15B Max 的支持

所需设备&#xff1a; 1、Fluke ADPT连接器&#xff1b; 2、Fluke 15B Max&#xff1b; Fluke 15B Max拆机图&#xff1a; 显示界面如下图&#xff1a; 并且可以将波形导出到EXCEL: 福禄克万用表需要自己动手改造&#xff01;&#xff01;&#xff01;

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

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

AI数据中心网络架构需求:400/800G光模块

随着AI技术和相关应用的不断发展&#xff0c;大模型、大数据和AI计算能力在AI发展中的重要性日益凸显。大模型和数据集构成AI研究的软件基础&#xff0c;而AI算力是关键的基础设施。在本文中&#xff0c;我们将探讨AI发展对数据中心网络架构的影响。 Fat-Tree数据中心网络架构…

Spring Boot结合MinIO 实现文件切片极速上传!

本文将介绍如何使用Spring Boot和MinIO实现文件切片极速上传技术&#xff0c;通过将大文件分割成小片段并并行上传&#xff0c;显著提高文件上传速度。 2 文件切片上传简介 文件切片上传是指将大文件分割成小的片段&#xff0c;然后通过多个请求并行上传这些片段&#xff0c;最…