Kotlin day01-数据类型

目录

基本数据类型

变量和常量

var 声明变量

非空类型和可空类型

数据类型转换

字符串


  • 基本数据类型

在java中,有8中基本数据类型(byte,short,int,long,float,double,boolean,char)

kotlin中的整型是引用类型,不是基本类型,相当于Java的包装类,继承于Number类,均可以调方法

整型Byte1字节 8位-128-127
Short2字节 16位-2的15次方-2的15次方-1
Int 4字节 32位-2的31次方-2的31次方-1
Long8字节 64位-2的63次方-2的63次方-1
浮点型Float4字节32位--
Double8字节64位--
字符型Char2字节16位--
布尔类型Boolean1字节8位--
  • 变量和常量

var 声明变量

    //显示声明变量,可以不用赋值,且x1不可以为null
    var x1:Int
    //显示声明变量,可以不用赋值,且x2可以为null
    var x2:Int?
    x2=null
    //隐式声明变量,不指定数据类型,必须赋值
    var y=100 

    var c1:Char='a'

⚠️这里需要注意:带?和不带的区别:

不带?的原理是变量声明之后,会被映射成java的基本数据类型,基本类型的话不可以为null;

带?的变量声明,会被映射出java的包装类型,因为可以为null

⚠️在java中,用==来比较两个对象的地址是否相等。在kotlin中用===来比较两个对象的地址是否相等

JVM会自动维护八种基本类型的常量池,int常量池中初始化-128~127的范围,所以当为Integer i=127时,在自动装箱过程中是取自常量池中的数值,而当Integer i=128时,128不在常量池范围内,所以在自动装箱过程中需new 128,所以地址不一样,kotlin也是这个原理。

所有上面的x1和x2不在这个范围的话,那么println(x1===x2),打印出来会是false

⚠️在java中,输出‘a’,可以这样定义,char c=97;

     在kotlin中,Char只能赋值字符,只能通过var c1:Char=‘a’,不能用整型或者整型表达式赋值,但是可以做运算

println(c1+4)会打印出‘e’
  • 非空类型和可空类型

通过?区分,例如var b:Boolean?=null和var b:Boolean,本质上是两种不同的数据类型,这里一定要注意,而且,如果是可空类型的数据,不能直接调用属性和方法,会报错

那上面的问题就不能解决吗,当然不是,kotlin要求先用if判空,在条件语句里面进行操作,如图:

或者通过安全调用的方式

或者通过Elvis方式

  • 数据类型转换

这里举几个简单的例子,写法都是一样的

x2.toFloat()
x2.toString()
x2.toDouble()
x2.toByte()
var x:Int?=str.toIntOrNull()//字符串转其他类型,这里前面必须加问号,否则无法编译
  • 字符串

kotlin中的String和Java中的String并不是一个,在kotlin中,String的方法更多

  • """""",在kotlin中允许三个引号,定义的字符串可以换行,输出的结果也是换行的

  • ${},字符串拼接
println("str4字符串的长度是:${str4.length}")
  • kotlin 中String的方法有很多,这里做个总结
方法描述
str[index]取String的指定下标的元素
 str.first() 取第一个元素
str.last()取最后一个元素
str.indexOf("")如果包含查找元素,则返回字符位置,不包含,则返回-1
str.indexLastOf("")如果包含查找元素,则返回字符串从右向左的第一个位置,不包含,返回-1
String plus(text)和“+”效果一样,字符串拼接
Boolean equals(text[,ignoreCase])第二个参数不写,相当于之前说的“==”比较内容,第二个参数为true,则忽略内容大小写就行比较
String substring(startIndex[,endIndex])如果只填必填参数,保留从start到末尾的字符,如果end填写了,则保留从start到end之间的字符串
String substringBefore()截取第一个出现的字符串前面的字符串内容
String substringAfter()截取第一个出现的字符串后面的字符串内容
String substringBeforeLast()截取最后一个出现的字符串前面面的字符串内容
String substringAfterLast()截取最后一个出现的字符串后面的字符串内容
replace()替换
replaceFirst()替换第一个出现的字符串
replaceBefore()替换第一个出现的字符串前面的内容
replaceAfter()替换第一个出现的字符串后面的内容
replaceBeforeLast()替换最后一个出现的字符串前面的内容
replaceAfterLast()替换最后一个出现的字符串后面的内容
str.spilt("")根据“”中的内容,把字符串分隔成一段一段的
Boolean isBlank()字符串是否全是空格
Boolean isEmpty()字符串长度是否为0,为0返回true
String reversed()字符串反转
String startsWith()检测字符串是否是根据特定字符串开始
String endsWith()检测字符串是否是根据特定字符串结束
String trim()清除空格
String drop(int)删除头部的几个元素并返回
String dropLast(int)删除末尾的几个元素并返回

方法很多,一时间就整理这么多吧,待续//

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小苏的小小苏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值