Kotlin
1.介绍
Android开发的一级编程语言(Google官方认证) 由JetBrains公司在2010年推出 & 开源,与Java语言互通 & 具备多种Java尚不支持的新特性 Android Studio3.0后的版本支持Kotlin。
2.Android Studio3.0后的版本已经完美支持Kotlin,只需安装Kotlin插件即可
注:区别于Java,在Kotlin中字符(char)不属于数值类型,是一个独立的数据类型。
3.转换数据类型
toByte():Byte
toShort():Short
toInt():Int
toLong():Long
toFloat(): Float
toDouble():Double
toChar():Char
4. 声明与初始化变量,var为变量,val为常量
//定义常量
val a = 222
//定义变量
var b=8
String类型
val variableName="variablename";
fun main() {
val upperCaseName=variableName.toUpperCase();
print(upperCaseName);
}
输出结果:VARIABLENAME
5.Helloworld
fun main(args:Array<String>){
print("hello word");
}
fun:声明方法
main:方法名称
参数书写方式:名称 :变量类型
也可以直接指定数据类型:
var a : int=2
val b : String ="迪迪"
还可以赋值
//定义变量
var dd = 88
//重新给变量赋值
dd = 177
6、函数声明
编写规则
fun 函数名(参数名:参数类型):返回值类型{
//函数体
}
返回值类型可以不写
无参无返回值
fun nHave(){
}
无参有返回值
fun oHave():String{
return "abc";
}
有参无返回值
fun oHave( a:Int,b:String){
}
有参有返回值
fun dHave(a:Int):String{
return "迪迪"
}
//调方法
fun mai(a: Int, b: Int): Int {
return a + b
}
//打印调方法 方法里赋值
println(mai(38, 100))
表达式
fun maxOf(a:Int,b:Int):Int{
if (a>b){
return a
}else{
return b
}
}
fun maxOf(a: Int, b: Int) = if (a > b) a else b
fun sum(a: Int, b: Int) = a * b
var max=a
if (a<b)max=b
var maxs:Int
if (a>b){
max=a
}else{
max=b
}
//表达式
val maxa=if (a>b)a else b
返回无意义的值
fun nofun(a: Int, b: Int): Unit {
println("sum of$a and $b is ${a + b}")
}
返回int值
fun resfun(a: Int, b: Int): Int {
println("sum of$a and $b is ${a + b}")
return a + b
}
查看数据类型最大值最小值
val adob: Double = Double.MAX_VALUE
val aboub: Double = Double.MIN_VALUE
println(aboub)
println(adob)
val i: Int = Int.MAX_VALUE
val i2: Int = Int.MIN_VALUE
println(i)
println(i2)
val lo: Long = Long.MAX_VALUE
val lmn: Long = Long.MIN_VALUE
println(lo)
println(lmn)
val by: Byte = Byte.MAX_VALUE
val byt: Byte = Byte.MIN_VALUE
println(by)
println(byt)
val s: Short = Short.MAX_VALUE
val st: Short = Short.MIN_VALUE
println(s)
println(st)
val f: Float = Float.MAX_VALUE
val ft: Float = Float.MIN_VALUE
println(f)
println(ft)
美元符拼接
val d = "poity"
var am = 8
println("${d + am}")//$美元符是拼接 结果为:posity8
7、空值处理
当在编译期赋值为 null 时,会造成编译不通过,编译期进行提示
a: Int?
类型转换 Int?和int是两种类型
int?:包含null值,更多类型
int只是数据数字类型
fun getStringLength(Obj:Any):Int?{//用了空安全 保证了不为空,或者当空返回null值
if (Obj is String){
return Obj.length//int转为string类型 可以调string的length方法
}
return null//返回的是int?值
}
空安全:在Java中,NullPointerException异常十分常见,而Kotlin的优点则是可以尽可能避免执行代码时出现的空指针异常/**
* 1. 可空类型与非空类型
* 在Kotlin中,有两种情况最可能导致出现NullPointerException
**/
// 情况1:显式调用 throw NullPointerException()
// 情况2:使用!! 操作符
// 说明:!!操作符将任何值转换为非空类型,若该值为空则抛出异常
var a = null
a!!
// 抛出KotlinNullPointerException
// 情况3:数据类型不能为null
// 在 Kotlin 中,类型系统区分一个引用可以容纳 null (可空引用) 和 不能容纳(非空引用)
// 如:String类型变量不能容纳null
// 若要允许为空,可声明一个变量为可空字符串:在字符串类型后面加一个问号?
对于String,则是写作:String?
var b: String? = "b"
b = null
/**
* 2. 安全调用操作符
* 作用:表示如果若不为null才继续调用
**/
b?.length
// 表示:若b不为null,才调用b.length
// 注:安全调用符还可以链式调用
a?.b?.c?.d
// 假设a不为null,才继续往下调用,以此类推
// 若该链式调用中任何一个属性为null,整个表达式都会返回null。
// 若只对非空值执行某个操作,可与let一起使用
a?.b?.let { println(it) }
8.区间
//区间 2个点
for (x in 1..12) {
println(x)//结果打印1-12的数123456789101112
}
结果为加等于
var x = 88
x += 2
println(x)//88+2=90
范围使用
主要用于表示范围,主要包括:in、downTo、step、until
/**
* 1. in
* 作用:在...范围内
**/
// 表示:若i在1-5范围内,则执行下面代码
// 注:闭区间,[1,5]
if (i in 1..5) {
println("i 在 1-5 内")
}
// 表示:若i不在1-5范围内,则执行下面代码
// !in表示不在...范围内
if (i !in 1..5) {
println("i 不在 1-5 内")
}
/**
* 2. until
* 作用:表示开区间
**/
// 输出1234
for (i in 1 until 5) {
println(i)
}
/**
* 3. downTo
* 作用:倒序判断
**/
for (i in 5 downTo 1) {
println(i)
}
/**
* 4. step
* 作用:调整步长
**/
// 设置步长为2,顺序输出1、3、5
for (i in 1..5 step 2) println(i)
// 设置步长为2,倒序输出5、3、1
for (i in 1 downTo 5 step 2) println(i)
10、list 与 map 了解
创建 List
var names= listOf("小明","小红","小韩","小呆")
创建map
var map: HashMap<Int, String> = HashMap()
map[1] = "小明"
map[2] = "小红"
map[3] = "小迪"
map[4] = "小于"
println(map[1])
for (item in map) {
print("$item ,")
}
}
20.类使用
类 有参赋值
class Animal(name:String,age:Int) {}
var animas=Animals("cat",1)
class Dog{
var age=2
var name="拉布拉多"
main方法里程序入口调用
Dog().age
Dog().name
类的声明 & 实例化
// 格式
class 类名(参数名1:参数类型,参数名2:参数类型...){}
// 示例
class User(userName: String, age: Int){}
// Kotlin支持默认参数,即在调用函数时可不指定参数,则使用默认函数
class User(userName: String = "hjc", age: Int = 26){
}
// 在实例化类时不传入参数,userName默认 = hjc,age默认 = 26
var user = User()
// 在设置默认值后,若不想用默认值可在创建实例时传入参数
var user = User("ABC" , 123)
// 命名参数:若一个默认参数在一个无默认值的参数前,那么该默认值只能通过使用命名参数调用该函数来使用
class User(userName: String = "hjc", age: Int)
var user = User(age = 26)
// Kotlin没有new关键字,所以直接创建类的实例:
User()
用open关键字标识该类允许被继承
open class Food
// 类Fruits继承类Food
class Fruits : Food()