目录
序
关于Kotlin
在IDEA中使用Kotlin
一
二
三
四
五
主要内容
运行截图
序
全都写在程序里面了,可以直接运行,各位直接全部复制走慢慢体验(很详细)
对了,里面的函数名为中文,方便各位查找所需的部分喵,如果你感觉有用就留下一个小小的赞
吧
关于Kotlin
Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源。
现代、简洁、安全的编程语言
易于上手,因此您可以立即创建功能强大的应用程序。
它拥有领先许多语言的语法(众多语法糖),将带给你无与伦比的开发体验(就像py一样好用)
-》这里是官网-《
柯特林编程语言 (kotlinlang.org)
在IDEA中使用Kotlin
一
文件-》新建-》模板
二
新建模板-》随便输入名称-》语言选择Java-》创建
三
找到新建的文件夹重点src-》右击鼠标-》新建-》Kotlin类/文件
四
随便起个名字-》选择包含Kotlin文件的所有模块-》确定
五
复制以下代码-》右击鼠标-》运行
fun main(args: Array
{
println("Hello world!")
}
主要内容
创建对象 数据类型及基本数据转换 数据比较 字符串 数组 可变参数 函数可省略返回值类型 方法不能省略返回值类型 空值检查 对象类型检测使用 对象类型转换使用 区间表达式 判断结构
import java.text.SimpleDateFormat
import java.util.*
import kotlin.reflect.typeOf
class Kotlin1() {
fun 创建对象() {
println("我是一个函数,我被调用时,就创建成功了一个对象(Kotlin1)")
}
//Kotlin 中没有基础数据类型,只有封装的数字类型,你每定义的一个变量,其实 Kotlin 帮你封装了一个对象,
// 这样可以保证不会出现空指针。数字类型也一样,所以在比较两个数字的时候,就有比较数据大小和比较两个对象是否相同的区别了。
//Kotlin 的《-基本数值类型-》包括 Byte、Short、Int、Long、Float、Double。
fun 数据类型及基本数据转换(): Unit {
//不用写类型,自动推断,简直就像python!
val Int_ = 100
//和 Java 一样,String 是不可变的,都是基于字符(char)数组,在字符串那里再说
val String_ = "我是字符串类型"
val Double_ = 1.1
//不用写类型,指定后缀
val Float_ = 200F
val Long_ = 300L
//指定类型
val Double_1: Double = 400.0
val String_1: String = "我是字符串类型"
//Java 不一样,Kotlin 中的 Char 不能直接和数字操作,Char 必需是单引号 ' 包含起来的。比如普通字符 '3'
//对了Java中直接将Char类型赋值为数字会产生未知无法显示的字符,其实是和C语言一样是“机器直链字符”,不过好像失传了
val Char_: Char = '3'
//你可以使用下划线使数字常量更易读
//wc,太先进了!,这样易于查数,妈妈再也不用担心我查错了
val Long_2 = 1_000_000_000_000_000
println(Int_)
println(String_)
println(Double_)
println(Float_)
println(Long_)
println(Double_1)
println(String_1)
println(Long_2)
println(Char_)
//数据类型的转化
//每种数据类型都有下面的这些方法,可以转化为其它的类型:
//
//toByte(): Byte
//toShort(): Short
//toInt(): Int
//toLong(): Long
//toFloat(): Float
//toDouble(): Double
//toChar(): Char
}
//在 Kotlin 中,三个等号 === 表示比较对象地址,两个 == 表示比较两个值大小。
//wc太牛逼了,再也不用想java一样比较对象时还有重写 equals与hashcode方法了!!
fun 数据比较(a: Int, b: Int): Unit {
if (a === b) {
println("地址相同")
} else {
println("地址不相同")
}
if (a == b) {
println("值相同")
} else {
println("值不相同")
}
}
fun 字符串(): Unit {
//和Java C#一样字符串类型 也是基于数组实现的,都为不可变类型
// 不过!!他的字符串竟然可以直接用[]取值与迭代!!!逆天和python一样
val testString = "abcdefg"
for (char_ in testString) {
println(char_)
}
//祖传取值法
println(testString[0])
//好用的”“”引号(和python,C# 一样就Java没有,哈哈)
val text = """
|多行字符串
|产生
|多行字符串
|输出完成OK
""".trimMargin("|") // 删除每一行的前置空格(用符号"|"作为分割符,其他的也可以奥)
println(text)
//插值字符串或字符串模板
// (和C#一样奥)
val s = "我们是Kotlin爱好者"
val str = "$s 长度为 ${s.length}"
// 求值结果为 "我们是Kotlin爱好者 长度为 6"
println(str)
//当你需要转义时
val price = """
${'$'}9.99
"""
println(price)
// 求值结果为 $9.99
//
}
fun 数组(): Unit {
//数组是基于类Array实现的,有ByteArray, ShortArray, IntArray,
// 用来表示各个类型的数组,省去了装箱操作,因此效率更高,其用法同Java中的Array一样:
//数组的创建与访问
//方法1 函数式
val a = arrayOf(1, 2, 3)
println(a[0])
// 输出结果:1
val b = charArrayOf('a', 'b', 'c')
for (char_ in b) {
println(char_)
}
//输出a,b,c,d
//方法2 工厂式
//第一个参数为数组的长度
//初始化一个长度为3的数组
val c = Array(3, { i -> i })
//源码是这样说明的: 创建一个具有指定size的新数组,其中每个元素通过调用指定的init函数来计算。
//从第一个元素开始依次为每个数组元素调用函数init 。它应该返回给定索引的数组元素的值,听起来好牛逼!
val d = Array(4, { i -> (i * 2 + 1) })
println(d[3]) // 输出结果:7,因为进行了3*2+1的运算
}
//使用vararg关键字,效果相当于穿了一个数组过来
fun 可变参数(vararg res: Int) {
for (r in res) {
println(r)
}
}
fun 函数可省略返回值类型(a: Int, b: Int) = a + b
public fun 方法不能省略返回值类型(a: Int, b: Int): Int = a + b // public 方法则必须明确写出返回类型
fun 空值检查(age: String?): Unit {
//和C#一样的!
//类型后面加?表示可为空
println(age)
}
//和java中的instanceof一样
fun 对象类型检测使用is(object1: Any, object2: Any): Unit {
if (object1 is String) {
println("参数1是字符串类型")
println()
} else {
println("参数1不是字符串类型")
}
if (object2 is String) {
println("参数2是字符串类型")
} else {
println("参数2不是字符串类型")
}
}
//as运算符用于执行引用类型的显示类型转换,如果类型与指定类型相符,就会转换成功,如果类型不兼容,使用as?就会返回null
//我不太会玩,略....
fun 对象类型转换使用as(String1: String, Int2: Int): Unit {
println(String1 as? Int)
println(Int2)
println(String1)
}
fun 区间表达式(): Unit {
for (i1 in 1..4)
print(i1)
// 输出“1234”
for (i2 in 4..1)
print(i2)
// 什么都不输出
val i3 = 10
if (i3 in 1..10) {
// 等同于 1 <= i3 && i3 <= 10
println(i3)
}
// 使用 step 指定步长
for (i4 in 1..4 step 2)
print(i4)
// 输出“13”
for (i4 in 4 downTo 1 step 2)
print(i4)
// 输出“42”
// 使用 until 函数排除结束元素
for (i in 1 until 10) {
println(i)
// i in [1, 10) 排除了 10
}
}
fun 判断结构(): Unit {
val arr = intArrayOf(1, 2, 3, 4)
// 使用 else
val max: Int
if (arr[0] > arr[1]) {
max = arr[0]
} else {
max = arr[1]
}
println("最大值为${max}")
// 作为表达式
//相当于java,C#的3目表达式同时Kotlin中没有3目表达式
val max1 = if (arr[0] > arr[1]) arr[0] else arr[1]
println("最大值为${max1}")
/*使用区间
使用 in 运算符来检测某个数字是否在指定区间内,区间格式为 x..y :*/
val temp:Int=2
if (temp in 1..10)
println("${temp}在区间内")
/*when的使用
相当于其他语言的switch
else相当于java的default
*/
val x=3
when (x)
{
1 -> print("x == 1")
2 -> print("x == 2")
else -> { // 注意这个块
print("x 不是 1 ,也不是 2")
}
}
//与区间表达式连用
when(x)
{
in 1..3 -> println("${x}在1到3之间")
else-> println("${x}不在1到3区间")
}
//还可以使用!in
when(x)
{
!in 1..3 -> println("${x}不在在1到3之间")
else-> println("${x}到我们这里了")
}
//还可以判断类型
val name="张三"
val temp1= when(name) {
//如果此字符串以指定的前缀开头,则返回true 。
is String -> name.startsWith("张")
else -> false
}
println("${name}是${temp1}开头的")
//当when没有参数时,也可以取代if else
// 判断集合中的元素是否存在
//定义一个集合
val items = setOf("小米", "华为", "苹果")
when {
"小米" in items -> println("我是小米呀,咯")
"华为" in items -> println("国货之光 呀")
}
}
fun 获取当前时间():String{
return SimpleDateFormat("yyyy-MM-dd' 'HH:mm:ss").format(Date()).toString()
}
}
测试代码(运行代码)在下面直接复制到上面的代码的下面即可喵
不复制的话程序是不能运行的喵
//主函数程序入口,main(args:Array
运行截图
未完待续.....
好文链接
发表评论