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("出現(xiàn)異常")
}
}
fun checkOperation(number:Int?){
number?:throw UnskilledException()
}
//自定義異常
class UnskilledException() : IllegalArgumentException("操作不當")
3.先決條件函數(shù)
就是判斷條件是否滿足,例如非空?
import java.lang.NullPointerException
fun main() {
var number:Int ?= null
try {
checkOperation(number)
number!!.plus(1)
}catch (e:NullPointerException){
e.printStackTrace()
println("出現(xiàn)異常")
}
}
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.數(shù)字類型的安全轉換函數(shù)
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)//四舍五入保留兩位小數(shù)
println(s)
9.標準庫函數(shù)
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
文章來源:http://www.zghlxwxcb.cn/news/detail-826779.html
import java.io.File
fun main() {
val result = File("H:\\test\\test.txt")
.takeUnless { it.isHidden }
?.readText()
println(result)
}
?文章來源地址http://www.zghlxwxcb.cn/news/detail-826779.html
到了這里,關于Kotlin基本語法2基本內置方法的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!