1.Boolean数据类型
true,false
var loading:Boolean=true
var upload:Boolean=false
2.Number数据类型
var maxDouble: Double= Double.MAX_VALUE
var maxFloat: Float = Float.MAX_VALUE
var minLong: Long = Long.MIN_VALUE
var maxInt: Int = Int.MAX_VALUE
var maxShort: Short = Short.MAX_VALUE
var maxByte: Byte = Byte.MAX_VALUE
3.Char数据类型与String数据类型
var aChar: Char = '0'
var string: String = "HelloWorld"
kotlin中==相当于java中equal
kotlin中===相当于java中的==
kotlin支持字符串模板
var append:String="append$string"
kotlin支持"""""",此字符串支持换行
var text="""ceshi"""
4.拆箱装箱
kotlin中Int相当于java中的基本数据类型int跟装箱类型Interger的合体,当需要的时候自动帮我们选择。类似Double,Float等
kotlin不再区分装箱跟非装箱类型
5.基础类型转换
java代码
int anInt=8;
long aLong=anInt;
kotlin代码
val anInt: Int = 8
val aLong: Long = anInt.toLong()
kotlin不可隐式转换
6.类和对象
class 对象(性别:String,长相:String,性格:String)
var 女朋友=对象(性别="女",长相 = "甜美",性格 = "温柔")
kotlin不需要new
open class 人(var 性格: String, var 长相: String, var 声音: String)
open字段修饰class 意味该类可以被其他类继承
kotlin中Any是所有类的父类
7.空类型
任何类型都有可空和不可空两种
val textNull: String ?= null
var testNotNull:String=""
空类型跟智能类型转换是kotlin所特有的
下面的代码在kotlin中报错
fun getName(): String{
return null
}
这样写不报错
fun getName(): String?{
return null
}
kotlin在对象以及方法声明的时候就要确定是否可为空类型
var person:Person?=null
在调用可空对象的属性以及方法时候可用以下两种方法
person?.age
如果person为空返回null,不会报错。如果person不为空返回age
此种情况适合不确定该对象是否为空
person!!.age
如果person为空,报错kotlin.KotlinNullPointerException
此种方法适合知道该对象肯定不为空
8.智能类型转换
java中类型转换
Parent parent=new Parent();
if(parent instanceof Child){
((Child)parent).getName().length();
}
if 里面已经判断过类型了,为什么调用的时候还需要再次强转
kotlin类型转换就显得比较智能了
val parent= Parent()
if(parent is Child){
parent.name.length
}
kotlin中的强转操作符 as
val child: Child? = parent as? Child
当类型不对的时候,child返回null,不会像java那样报类型转换异常
9.包
kotlin支持 import …… as ……
场景 当一个类中引入一个以上相同类名的外部类
java代码
Child child=new Child();
com.xdja.jwt.myapplication.datatype.helloworld.Child child=newcom.xdja.jwt.myapplication.datatype.helloworld.Child();
kotlin代码
import com.xdja.jwt.myapplication.datatype.helloworld.Child as ChildTwo
var child=Child()
var child2=ChildTwo()
10.区间
区间是数学上的一个概念,表示范围
CharRange,ComparableRange,IntRange,LongRange 他们实现的共同接口ClosedRange
基本写法
0..100表示[0,100]
0 until 100 表示[0,100)
i in 0..100 判断i是否在区间[0,100]中
初始化区间
val range: IntRange = 0..1024 // [0, 1024]
val range_exclusive: IntRange = 0 until 1024 // [0, 1024) = [0, 1023]
区间的遍历
for(i in range){
print("$i, ")
}
11.数组
kotlin内置ByteArray,CharArray,ShortArray,IntArray,LongArray,FloatArray,DoubleArray,BooleanArray
初始化
val arrayOfInt: IntArray = intArrayOf(1,3,5,7)//intArray
val arrayOfChar: CharArray = charArrayOf('H', 'e','l','l','o','W','o','r','l','d')
val arrayOfString: Array = arrayOf("hello", "world")
赋值
arrayOfInt[1]=3
遍历
for(int in arrayOfInt){
println(int)
}
kotlin还对数组扩展了一些方法,如
arrayOfChar.joinToString()
arrayOfInt.slice(1..2)