2024年安卓最全10天学会kotlin DAY3 语言特性(3),2024年最新程序员如何自我学习和成长

最后

一线互联网Android面试题含详解(初级到高级专题)

这些题目是今年群友去腾讯、百度、小米、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。并且大多数都整理了答案,熟悉这些知识点会大大增加通过前两轮技术面试的几率

如果设置门槛,很多开发者朋友会因此错过这套高级架构资料,错过提升成为架构师的可能。这就失去了我们的初衷;让更多人都能通过高效高质量的学习,提升自己的技术和格局,升职加薪。

最后送给大家一句话,望共勉,永远不要放弃自己的梦想和追求;

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 9、sqlit 操作 (分割操作)

  • 10、replace 完成加密解码操作

  • 11、== 与 === 比较操作符

  • 12、字符串的遍历

  • 13、数字类型的安全转换函数

  • 14、Double 转 Int 类型格式化

  • 15、apply 内置函数

  • 16、let 内置函数

  • 17、run 内置函数

  • 18、with 内置函数

  • 19、also 内置函数

  • 20、takeIf 内置函数

  • 21、takeUnless 内置函数

  • 总结


前言

================================================================

任何语言都有自己的特性,了解特性,才能深入的学习


1、可空性特点


// kotlin 在声明参数的时候,默认是不可空类型。

var name: String = “tiger”

// name = null 如果赋值为null 将会报错, 可以赋值成 空串 “”

println(name)

// 但是我们在声明时,使用 ? 指定成可空类型

var name2: String ?

name2 = null

name2 = “tiger”

println(name2)

2、安全调用操作符


var name: String ?

name = “tiger”

name = null

// name 是可空类型,可能是null 想要使用name,必须给出补救措施,在name后面添加 ? 符号

// name 是可空类型 如果真的是null,?后面的代码不执行,就不会引发空指针异常

val str = name?.capitalize()

println(str)

3、使用带let 的安全调用


var name: String? = null

name = “tiger”

name = “”

// name 是可空类型,可能是null 想要使用name,必须给出补救措施,在name后面添加 ? 符号

// name 是可空类型 如果真的是null,?后面的代码不执行,就不会引发空指针异常

val str = name?.let {

// 如果能进入这里,it 一定不为null

if (it.isBlank()){ // isBlank name是空串 “” 没有内容

“Default”

}else{

“我是:$it”

}

}

println(str)

4、非空断言操作符


var name: String? = null

// name 是可空类型,可能是null 想要使用name,必须给出补救措施,在name后面添加 ? 符号

name = “tiger”

// !! 断言操作符,和Java一样,不论name 是否为空,都会走后面的代码

// 如果不能保证name 被赋值,就会出现崩溃的情况

val str = name!!.capitalize()

println(str)

5、对比 if 判断null 值情况


var name: String? = null

// name 是可空类型,可能是null 想要使用name,必须给出补救措施,在name后面添加 ? 符号

if (name != null){ // if 也算是补救措施,代码会自动识别, 和Java一样

val str = name.capitalize()

println(str)

}else{

println(“name is null”)

}

6、空合并操作符


var name: String? = “tiger”

name = null

// ?: 空合并操作符, 如果name 等于 null ,就会执行 ?: 后面的区域

println(name ?: “原来你没名字啊”)

// let 函数 + 空合并操作符

println(name?.let { “$it” ?: “原来你没名字啊” })

7、异常处理与自定义异常


try {

var name: String? = null

checkException(name)

println(name!!.capitalize())

}catch (e: Exception){

println(“啊呀,又出差了 $e”)

}

fun checkException(name: String?) {

name ?: throw CustomException()

}

// 自定义的异常

class CustomException : IllegalArgumentException(“传null 还想使用 非空断言操作符?不出错才怪呢”)

8、substring


val info = “You are handsome.”

val indexOf = info.indexOf(“.”)

println(info.substring(0, indexOf))

// kotlin 基本使用下面的这种方式截取, 从0 直到(until) indexOf

println(info.substring(0 until indexOf))

9、sqlit 操作 (分割操作)


val jsonText = “张三,王五,大漂亮,杨美丽”

// list 自动类型推断成 list == List

val list = jsonText.split(“,”)

// 直接输出list 集合

println(list)

// C++ 里面有解构操作。 kotlin 里面也有解构操作

val (v1, v2, v3, v4) = list

println(“解构之后的4个数据,分别是: v1:$v1, v2: $v2, v3: $v3, v4: $v4”)

10、replace 完成加密解码操作


val sourcePwd = “qwertyuiopasdfghjklzxcvbnm”

println(sourcePwd)

// 加密操作:就是把字符替换打乱的操作

val newPwd = sourcePwd.replace(Regex(“[asdwq]”)){

when(it.value){ // 轮询字符串中的每个字符

“a” -> “2”

“s” -> “4”

“d” -> “3”

“w” -> “5”

“q” -> “7”

else -> it.value //不做任何操作,直接返回原值

}

}

println(newPwd)

// 解密操作

val sourcePwdNew = newPwd.replace(Regex(“[24357]”)){

when(it.value){

“2” -> “a”

“4” -> “s”

“3” -> “d”

“5” -> “w”

“7” -> “q”

else -> it.value

}

}

println(sourcePwdNew)

11、== 与 === 比较操作符


// == 是内容的比较,相当于Java 中的 equals()

// === 是引用的比较,对比的是状态池里面的引用

val name1 = “Tiger”

val name2 = “tiger”

val name3 = “tiger”

val name4 = name2.capitalize()

println(name1 === name2)

println(name3 == name2)

println(name1 === name4)

12、字符串的遍历


val str = “qwertyuiopasdfghjklzxcvbnm”

str.forEach {

// it 隐式函数,是str 中的每一个字符

println(“遍历出来的数据 $it”)

}

13、数字类型的安全转换函数


val number: Int = “666”.toInt()

println(number)

val number1: Int = “666.6”.toInt() // 字符串里面放入double 类型,转换成int 类型,会失败导致程序崩溃

println(number1)

// 解决 上面崩溃的问题

val number2: Int? = “666.6”.toIntOrNull()

println(number1 ?: "字符类型转换失败,返回一个null ")

14、Double 转 Int 类型格式化


// 四舍五入 算法转int

println(54.2334.toInt())

// 四舍五入 算法转int

println(54.2334.roundToInt())

// 保留小数点后三位

val r = “%.3f”.format(53.3432212)

println®

15、apply 内置函数


val info = “The tiger you are the most handsome”

// 普通写法

println(“info 字符串的长度是 ${info.length}”)

println(“info 的最后一个字符是 ${info[info.length-1]}”)

println(“info 全部转换成大写字符 ${info.toUpperCase()}”)

// apply 内置函数的方式

// info.apply 的特点:apply 函数始终是返回 info 本身 String 类型

val str = info.apply {

// 大部分情况下,匿名函数,都会持有一个it ,但是apply 不会持有it,却会持有当前 this == info 本身

println(“info 字符串的长度是 ${this.length}”)

println(“info 的最后一个字符是 ${info[this.length-1]}”)

println(“info 全部转换成大写字符 ${this.toUpperCase()}”)

// 也可以直接把this 去掉

println(“info 字符串的长度是 ${length}”)

println(“info 的最后一个字符是 ${info[length-1]}”)

println(“info 全部转换成大写字符 ${toUpperCase()}”)

}

println(str)

// 真正使用apply 函数的方法如下

// info.apply 特点: apply 函数始终是返回 info 本身,可以使用链式调用

info.apply {

println(“info 字符串的长度是 ${length}”)

}.apply {

println(“info 的最后一个字符是 ${info[length-1]}”)

}.apply {

println(“info 全部转换成大写字符 ${toUpperCase()}”)

}

// 文件读取小例子

// 普通写法

val file = File(“/Users/tiger/Desktop/aaa.text”)

file.setExecutable(true)

file.setReadable(true)

println(file.readLines())

// apply 写法

val r = file.apply {

写在最后

本次我的分享也接近尾声了,感谢你们在百忙中花上一下午来这里聆听我的宣讲,希望在接下来的日子,我们共同成长,一起进步!!!

最后放上一个大概的Android学习方向及思路(详细的内容太多了~),提供给大家:

对于程序员来说,要学习的知识内容、技术有太多太多,这里就先放上一部分,其他的内容有机会在后面的文章向大家呈现出来,不过我自己所有的学习资料都整理成了一个文档,一直在不断学习,希望能帮助到大家,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!

为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!希望读到这的您能点个小赞和关注下我,以后还会更新技术干货,谢谢您的支持!

Android架构师之路很漫长,一起共勉吧!

如果你觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言,一定会认真查询,修正不足,谢谢。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

的宣讲,希望在接下来的日子,我们共同成长,一起进步!!!

最后放上一个大概的Android学习方向及思路(详细的内容太多了~),提供给大家:

[外链图片转存中…(img-mJ8Had6Z-1715723408047)]

对于程序员来说,要学习的知识内容、技术有太多太多,这里就先放上一部分,其他的内容有机会在后面的文章向大家呈现出来,不过我自己所有的学习资料都整理成了一个文档,一直在不断学习,希望能帮助到大家,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!

为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!希望读到这的您能点个小赞和关注下我,以后还会更新技术干货,谢谢您的支持!

Android架构师之路很漫长,一起共勉吧!

如果你觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言,一定会认真查询,修正不足,谢谢。

[外链图片转存中…(img-WzxPTquY-1715723408047)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 14
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值