- kotlin - HelloWorld
fun main(args: Array<String>) {
println("hello world")
}
- kotlin - 基本数据类型:
var 定义变量
fun main(args: Array<String>) {
//定义Boolean类型变量
var b:Boolean = false
var byte:Byte = 10
var int:Int = 20
var long:Long = 40
var char:Char = 'a'
var double:Double = 1.1234567
var float:Float = 1.1234567f
var short:Short = 10
println(b)
}
- kotlin - 与Java数据类型的对比:
hashCode()
fun main(args: Array<String>) {
var a:Int = 10
//基本数据类型
var b:Int = a+10
//调用hashcode
val hashCode:Int = a.hashCode()
println(hashCode)
}
- kotlin - 基本数据类型的取值范围:
MAX_VALUE MIN_VALUE
fun main(args: Array<String>) {
//Short类型取值范围
var maxShort:Short = Short.MAX_VALUE
var minShort:Short = Short.MIN_VALUE
var maxByte:Byte = Byte.MAX_VALUE
var minByte:Byte = Byte.MIN_VALUE
var maxInt:Int = Int.MAX_VALUE
var minInt:Int = Int.MIN_VALUE
var maxLong:Long = Long.MAX_VALUE
var minLong:Long = Long.MIN_VALUE
var maxFloat:Float = Float.MAX_VALUE
var minFloat:Float = -Float.MAX_VALUE//最小值
var maxDouble:Double = Double.MAX_VALUE
var minDouble:Double = -Double.MAX_VALUE//最小值
}
- kotlin - 调用Java:
BigDecimal
类调用
fun main(args: Array<String>) {
//1.123456789123456789
//存钱
var money:Double = 1.123456789123456789
//取钱
println(money)
//银行存钱
var bigDe:BigDecimal = BigDecimal("1.123456789123456789")//省略new关键字
//取钱
println(bigDe)
}
- kotlin - 智能类型推断和类型转换:
var b = 10
fun main(args: Array<String>) {
var a: Int = 10
/*---------------------------- kotlin智能类型推断 ----------------------------*/
//类型安全的语言:类型一但确定,不再改变了
//kotlin编译器推断出Int类型
var b = 10
// var g
// var c:Byte = 10
var e = 10L//long
// b = 20
// b = "a"
var c = "张三"
var d = 'a'
/*---------------------------- 类型转换 ----------------------------*/
// 10 "10"
/*---------------------------- String和int类型转换 ----------------------------*/
//to转换基本数据类型
var m = 10
var s = "10"
println(s.toInt())
s.toByte()
/*---------------------------- int类型和long类型转换 ----------------------------*/
//不同的数据类型不能相互赋值
//kotlin数据类型可以通过to方法进行相互转换
var u = 10
var v = 10L
v = u.toLong()//Int赋值给Long类型
u = v.toInt()//Long赋值给Int类型
//kotlin java js
//最严格的类型检查 只能小的赋值给大的 最宽松
}
- kotlin - 可变变量和不可变变量:
var val
/**
* 项目开发中尽量使用val 实在不能使用val再使用var
*/
//可以通过反射修改里面的值
const val b:Int = 20
fun main(args: Array<String>) {
//可变变量
var a:Int = 10
a = 20
//不可变变量
val d = 20
// b = 30
}
- kotlin - 字符串:
“广东省” “““广东省””” .trimIndent()
/**
* 广东省
* 深圳市
* 宝安区
*/
//模板性
fun main(args: Array<String>) {
/*---------------------------- 普通字符串 ----------------------------*/
// val place1 = "广东省深圳市宝安区"
//// println(place1)
// //换行
// val place2 = "广东省\n深圳市\n宝安区"
//// println(place2)
// val place3 = "广东省" +
// "深圳市" +
// "宝安区"
//// println(place3)
// //怎样写怎样输出?
/*---------------------------- 原样输出字符串 ----------------------------*/
val place4 = """
广东省
深圳市
宝安区
""".trimIndent()
println(place4)
}
- kotlin - 字符串删除空格:
trim()、trimMargin()
fun main(args: Array<String>) {
/*---------------------------- 普通字符串删除空格 ----------------------------*/
val str = " 张三 "
val newStr = str.trim()
// println(newStr)
/*---------------------------- 原样输出字符串 ----------------------------*/
val str2 = """
/张三
/李四
/王五
""".trimMargin("/")
println(str2)
}
-
kotlin - 字符串的比较:
== 、 equals 、 ===
fun main(args: Array<String>) { val str1 = "abc" val str2 = String(charArrayOf('a','b','c')) //equals 比较值 true println(str1.equals(str2)) //== 比较的也是值 println(str1 == str2) //=== 比较地址值 false println(str1 === str2) }
-
kotlin - 字符串切割:
split(a,b)
多条件切割fun main(args: Array<String>) { val str = "张三.李四-王五" //多条件切割 val result = str.split(".","-") println(result) }
-
kotlin - 字符串截取:
substring()
以及重载方法fun main(args: Array<String>) { val path = "/Users/yole/kotlin-book/chapter.adoc" //获取前6个字符 // println(path.substring(0, 6)) println(path.substring(0..5))//0到5 //把第一个r之前的字符截取 println(path.substringBefore("r")) //把最后一个r之前的字符截取 println(path.substringBeforeLast("r")) //把第一个r之后的字符截取 println(path.substringAfter("r")) //把最后一个r之后的字符截取 println(path.substringAfterLast("r")) }
-
kotlin - 二元元组:
pair 、 triple
fun main(args: Array<String>) { //定义二元元组 姓名 年纪 // val pair = Pair<String,Int>("张三",20) val pair = "张三" to 20 // println(pair.first) // println(pair.second) //三元元组 val triple = Triple<String,Int,String>("李四",20,"15456678") println(triple.first) println(triple.second) println(triple.third) // 1/0 }
-
kotlin - 空值处理:
?. ? !! ?:
/** * val str:String 非空类型 不能赋值为null * val str: String? 可空类型 可以赋值为null * * 空安全调用符:?. * 空值处理的运算符 * 可空类型 Int? * 关闭空检查 a!! * 空安全调用符 a?.toInt * Elvis操作符 ?: */ //swift fun main(args: Array<String>) { //10 "10" 可空类型 val str: String? = null //转换为Int类型 //告诉编译器 不要检查了 我一定不为空 还是可能为空 不建议使用 // str!!.toInt() //空安全调用符 返回的值其实就是可空类型 // str?.toInt() // Int? // if(str!=null){ // return str.toInt() // }else{ // return -1; // } // Int? val b:Int = str?.toInt()?:-1 // if(str!=null){ // return str.toInt() // }else{ // return -1 // } println(b) }
-
kotlin - 人机交互:
readLine()
fun main(args: Array<String>) { //输出数据 val a = 10 // println(a) //m+n var m:Int var n:Int //从控制台输入m和n m = readLine()?.toInt()?:-1 n = readLine()?.toInt()?:-1 println("m+n=" + (m + n)) }
-
kotlin - 自定义函数:
有无参数和返回值
fun main(args: Array<String>) { // sayHello("张三") println(getLength("张三")) } //无参无返回值 fun sayHello(){//返回值 println("hello") } //有参无返回值 fun sayHello(name:String){ println("hello "+name) } //有参有返回值 fun getLength(name:String):Int{ return name.length } //无参有返回值 fun get():String{ return "hello" }
-
kotlin - 顶层函数和嵌套函数:
一等公民、独立于对象单独存在
//函数式编程 函数式一等公民 函数可以独立于对象单独存在 //顶层函数 fun main(args: Array<String>) { //嵌套函数 fun sayHello(){ println("hello") } sayHello() } //顶层函数 fun haha(){ }
-
kotlin - 字符串模板:
${ place }
fun main(args: Array<String>) { val result = createDiary("天安门") println(result) } //生成日记模板 fun createDiary(place:String):String{ // val result = "今天天气晴朗,万里无云,我们去"+place+"游玩,首先映入眼帘的是,"+place+place.length+"个镏金大字" val result = "今天天气晴朗,万里无云,我们去${sayHello1()} 游玩,首先映入眼帘的是,${place}${place.length}个镏金大字" return result } fun sayHello1():String{ return "halleo" }
-
kotlin - 条件控制语句if:
if语句有返回值,没有三元运算符
/** * kotlin的if语句有返回值的 java if语句是没有返回值的 * switch when表达式 * kotlin一般都有返回值(函数式编程 闭包) */ fun main(args: Array<String>) { val a = 10 val b = 20 //找到a和b中最大值 val max = max(a, b)//Ctrl+Alt+L println(max) } //求最大值 //kotlin没有三元运算符 fun max(a: Int, b: Int): Int { return if (a > b) { a } else { b } } //如果只有一行 可以去掉{} //fun max(a: Int, b: Int): Int { // if (a > b) // return a // else // return b //} //最终精简 //fun max(a: Int, b: Int): Int { // return if (a > b) a else b //}