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

news2024/11/27 4:03:19

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)

}

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows11系统下对jar文件解压修改后在压缩为jar文件

一、准备内容 安装JAVA环境——若已安装则忽略 我这里以在Windows11中安装JAVA 的JDK8环境为例进行安装配置说明: 1.1、下载JDK安装包 Java Downloads | Oraclehttps://www.oracle.com/java/technologies/downloads/#java8-windows 1.2、安装JDK

流量主小程序/公众号h5开源代码 源码分享

小程序开源代码合集 1、网课搜题小程序源码/小猿题库多接口微信小程序源码自带流量主 搭建教程 1、微信公众平台注册自己的小程序 2、下载微信开发者工具和小程序的源码 3、上传代码到自己的小程序 界面截图&#xff1a; 开源项目地址&#xff1a;https://ms3.ishenglu.com…

【计算机网络】物理层|传输介质|物理层设备|宽带接入技术

目录 一、思维导图 二、传输介质 1.传输介质——导引型 2.传输介质——非导引型​编辑 三、物理层设备 1.物理层设备&#xff1a;中继器&集线器 2.宽带接入技术&#xff08;有线&#xff09; ​编辑 四、趁热打铁☞习题训练 五、物理层总思维导图 推荐 前些天发现…

【电路笔记】-LR串联电路

LR串联电路 文章目录 LR串联电路1、概述2、示例1所有线圈、电感器、扼流圈和变压器都会在其周围产生磁场,由电感与电阻串联组成,形成 LR 串联电路。 1、概述 在本节有关电感器的第一个文章中,我们简要介绍了电感器的时间常数,指出流过电感器的电流不会瞬时变化,而是会以恒…

常见的几种Web安全问题测试简介

Web项目比较常见的安全问题 1.XSS(CrossSite Script)跨站脚本攻击 XSS(CrossSite Script)跨站脚本攻击。它指的是恶意攻击者往Web 页面里插入恶意html代码&#xff0c;当用户浏览该页之时&#xff0c;嵌入其中Web 里面的html 代码会被执行&#xff0c;从而达到恶意用户的特殊…

【Docker】Docker Container操作案例 | 综合实战

文章目录 Docker Container操作案例容器的基本操作容器状态迁移容器批量处理技巧容器交互模式attached模式detached模式interactive模式 容器与宿主机内容复制容器自动删除容器自动重启容器环境变量设置容器详情查看容器执行单行命令容器镜像导入导出容器日志查看容器资源查看 …

[AIGC] 消息积压了,该如何处理?

在构建分布式系统时&#xff0c;开发人员经常会遇到消息积压的问题。当系统的处理能力不足时&#xff0c;消息会在队列中积压&#xff0c;导致系统 slowed down 或 even crashed。为了解决这个问题&#xff0c;我们需要采取一些措施来缓解消息积压。 文章目录 什么是消息积压&…

【Redis快速入门】Redis三种集群搭建配置(主从集群、哨兵集群、分片集群)

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢AI编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc;️…

Vue中v-on 可以监听多个方法吗

当然可以&#xff01;Vue.js是一款非常强大的JavaScript库&#xff0c;它提供了很多方便的方法和指令&#xff0c;使我们可以更容易地构建交互式的Web应用程序。其中&#xff0c;v-on指令是Vue.js中一个非常重要也非常常用的指令&#xff0c;它用于监听DOM事件&#xff0c;并在…

Leetcode-102. 二叉树的层序遍历

今天的情人节和树过了...... 题目&#xff1a; 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[…

SPI控制8_8点阵屏

协议与硬件概述 SPI SPI是串行外设接口&#xff08;Serial Peripheral Interface&#xff09;的缩写。是一种高速的&#xff08;10Mbps&#xff09;的&#xff0c;全双工&#xff0c;同步的通信总线&#xff0c;并且在芯片的管脚上只占用四根线。 引脚介绍 SCLK&#xff1a;…

leetcode hot100爬楼梯

在本题目中&#xff0c;要求爬第n阶有多少种爬法&#xff0c;并且每次只能爬1个或者2个&#xff0c;这明显是动态规划的问题&#xff0c;我们需要用动态规划的解决方式去处理问题。动态规划就是按照正常的顺序由前向后依次推导。而递归则是从结果往前去寻找&#xff08;个人理解…

Python访问数据库

目录 SQLite数据库 SQLite数据类型 Python数据类型与SQLite数据类型的映射 使用GUI管理工具管理SQLite数据库 数据库编程的基本操作过程 sqlite3模块API 数据库连接对象Connection 游标对象Cursor 数据库的CRUD操作示例 示例中的数据表 无条件查询 有条件查询 插入…

CSS3学习(一)

1. 语法规范 CSS主要由选择器和一条或多条的声明构成。 选择器用于指定CSS样式的HTML标签&#xff0c;花括号里面是对应的具体样式 属性与属性值以键值对的形式出现&#xff0c;属性与属性之间用分号隔开 <head>里写<style> 2. 基础选择器 【作用】选择标签使…

Panalog 日志审计系统 libres_syn_delete.php 前台RCE漏洞复现

0x01 产品简介 Panalog是一款日志审计系统,方便用户统一集中监控、管理在网的海量设备。 0x02 漏洞概述 Panalog日志审计系统 libres_syn_delete.php接口处存在远程命令执行漏洞,攻击者可执行任意命令,接管服务器权限。 0x03 影响范围 version <= MARS r10p1Free 0…

LabVIEW虚拟测试与分析仪

LabVIEW虚拟测试与分析仪 在现代工程技术领域&#xff0c;虚拟仪器的开发和应用已成为一种趋势。利用LabVIEW软件平台开发的虚拟测试与分析仪器进行展开&#xff0c;实现工程测试和分析中的实际需求。通过结合LabVIEW的强大功能和灵活性&#xff0c;成功实现了一套高效、精确的…

Linux第53步_移植ST公司的linux内核第5步_系统镜像打包并烧录到EMMC

本节主要学习系统镜像打包&#xff0c;然后将打包文件烧录到EMMC测试。 1、创建bootfs文件夹 1)、打开第1个终端 输入“ls回车” 输入“cd linux/回车”&#xff0c;切换到“linux”目录 输入“ls回车”&#xff0c;列出“linux”目录下的文件和文件夹 输入“cd atk-mp1/…

【Linux取经路】文件系统之被打开的文件——文件描述符的引入

文章目录 一、明确基本共识二、C语言文件接口回顾2.1 文件的打开操作2.2 文件的读取写入操作2.3 三个标准输入输出流 三、文件有关的系统调用3.1 open3.1.1 比特位级别的标志位传递方式 3.2 write3.2.1 模拟实现 w 选项3.2.2 模拟实现 a 选项 3.3 read 四、访问文件的本质4.1 再…

leetcode(二分查找)34.在排序数组中查找元素的第一个和最后一个位置(C++详细解释)DAY11

文章目录 1.题目示例提示 2.解答思路3.实现代码结果 4.总结 1.题目 给你一个按照非递减顺序排列的整数数组 nums&#xff0c;和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target&#xff0c;返回 [-1, -1]。 你必须设计…

多线程基础使用

提示&#xff1a;有关线程六大状态, 以及创建线程的五种方法 线程 线程线程状态NEWRUNNABLEBLOCKEDWAITINGTIMED_WAITINGTERMINATED 线程状态转化图线程创建使用方式ps 线程 线程状态 操作系统的线程主要有以下三个状态&#xff1a; 就绪状态(ready)&#xff1a;线程正在等待使…