Kotlin学习——hello kotlin &; 函数function &; 变量 &; 类 + 泛型 + 继承
Kotlin具有强大的类型推理能力。虽然你可以显式地声明变量的类型,但你通常会让编译器通过推断来完成这项工作。Kotlin不强制执行不变性,但建议这样做。本质上使用val而不是var。声明一个不可变变量并在不指定类型的情况下对其进行初始化。编译器推断类型Int。具有单个参数的成员函数和扩展可以转换为中缀函数。2.function函数,变量,null;声明一个不可变变量并对其进行初始化。3.泛型,接
·


网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
引出
1.kotlin初识;
2.function函数,变量,null;
3.泛型,接口,继承,超类;
hello

package com.tianju.ktLearn
fun main() { // 2
println("Hello, World!") // 3
}
function函数
- 返回值为Unit,表示没有返回值, 类似与java里面的 void
- Unit可以省略不写,可以传两个参数,参数带有默认值

package com.tianju.ktLearn
// 返回值为Unit,表示没有返回值, 类似与java里面的 void
fun printMsg(msg: String): Unit {
println(msg)
}
// Unit可以省略不写,可以传两个参数,参数带有默认值
fun printMsgWithPrefix(msg: String, prefix:String = "info") {
println("[wtt--$prefix] $msg")
}
fun sum(x: Int, y: Int): Int {
return x+y;
}
fun multiply(x: Int,y: Int) = x\*y
fun main() {
printMsg("Pet!")
// 可以不传参,带有默认参数的
printMsgWithPrefix("Hello")
printMsgWithPrefix("Hello","Peter")
printMsgWithPrefix(prefix = "MMDD", msg = "HTTP")
val sum = sum(100, 300)
println(sum)
println(multiply(3,30))
}
Infix Functions 中缀函数
具有单个参数的成员函数和扩展可以转换为中缀函数。

package com.tianju.ktLearn;
// 具有单个参数的成员函数和扩展可以转换为中缀函数
fun main(){
infix fun Int.times(str: String) = str.repeat(this)
println(2 times "Hei!")
// to 是标准库中的函数 kotlin.Pair<A, B>
val pair = "WHTT" to "PPTS"
println(pair)
// 自定义一个 onto 函数
infix fun String.onto(str: String) = Pair(this,str)
val myPair = "MVC" onto "WWW"
println(myPair)
val pet = Person("peter",34)
val Shi = Person("Shirley",30)
pet likes Shi
println(pet.people[0])
}
class Person(val name: String,val year: Int){
val people = mutableListOf<Person>()
infix fun likes(person: Person){
people.add(person)
}
}
Operator Functions 算术函数
Certain functions can be “upgraded” to operators, allowing their calls with the corresponding operator symbol.

package com.tianju.ktLearn
// 符号times 就是 下面的 乘号 \*
operator fun Int.times(str:String) = str.repeat(this)
fun main() {
println(2 \* "Bye")
val str = "Always forgive your enemies; nothing annoys them so much."
operator fun String.get(range: IntRange) = substring(range)
println(str[0..14])
}
变长参数vararg Parameters

package com.tianju.ktLearn
fun printAll(vararg msgs: String) {
for (msg in msgs){
println(msg)
}
}
fun printWithPre(vararg msgs: String, prefix:String): Unit {
for (msg in msgs) println("[嘻嘻嘻--$prefix]$msg")
}
fun logs(vararg msgs:String){
printAll(\*msgs)
}
fun main() {
printAll("pet","sh","wt")
printWithPre("pet","sh","wt", prefix ="Hi")
logs("sh","wtt","abc")
}
变量
Kotlin具有强大的类型推理能力。虽然你可以显式地声明变量的类型,但你通常会让编译器通过推断来完成这项工作。Kotlin不强制执行不变性,但建议这样做。本质上使用val而不是var。
val b: Int = 1 // 2
val c = 3 // 3
声明一个不可变变量并对其进行初始化。
声明一个不可变变量并在不指定类型的情况下对其进行初始化。编译器推断类型Int。
kt中的null
- 在kt里面,如果有一个可以为null,需要在类型后面加上 问号 ?
- 函数只能传入不为null的值
- 参数类型后面加个 ? 问号后,传入的值可以为null


package com.tianju.ktLearn
fun main() {
var neverNull : String = "never Null"
// neverNull = null
println(neverNull)
// 在kt里面,如果有一个可以为null,需要在类型后面加上 问号 ?
var nullable:String? = "can be null"
nullable = null
println(nullable)
fun strLength(notNull:String ): Int {
return notNull.length
}
// 函数只能传入不为null的值
strLength(neverNull)
// strLength(nullable) // 爆红
val str = descStr(null)
println(str)
println(descStr("hello are you ok?"))
}
/\*\*
\* 返回值为String,
\* 参数类型后面加个 ? 问号后,传入的值可以为null
\*/
fun descStr(maybeStr: String?): String {
if (maybeStr !=null && maybeStr.length>0){
return "StrLength is ${maybeStr.length}"
}
return "null"
}
kt中的类
- 在kt里面没有 new 关键字

泛型 Generics




**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618608311)**
图片转存中...(img-eu5MwJDU-1715062226261)]
[外链图片转存中...(img-2oUCeh1h-1715062226261)]
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618608311)**
更多推荐


所有评论(0)