<强>芬兰湾的科特林教程之基本数据类型的学习强>
<>强基本类型强>
我们知道java的基本类型分为基本数据类型:
-
<李> int普通整型李>
<李>浮浮点型李>
<李>字符字符型李>
<李>短短整型李>
<李>字节字节型李>
<李>长长整型李>
<李>双双精度李>
<李>布尔布尔型
李>
和引用数据类型:
-
<李>类类型类类型李>
<李>接口类型接口类型李>
<李>数组类型数组类型李>
<李>空类型空类型李>
在芬兰湾的科特林中,所有变量的成员方法和属性都是一个对象。一些类型是内建的,因为它们的实现是优化过的,但对用户来说它们就像普通的类一样。在这篇中,我们将会讲到大多数的类型:数值,字符,布尔,以及数组。
<强>芬兰湾的科特林的数值类型强>
芬兰湾的科特林处理数值的方法和java很相似,比如,不存在隐式转换数值的宽度,并且在字面上有一些小小的不同。
芬兰湾的科特林提供了如下内建数值类型(和java很相似):
不知道你注意了没有:<强>字符在芬兰湾的科特林中不是数值类型
强>
芬兰湾的科特林的数值类型的使用
数值类型的声明
1。变量定义
var & lt;标识符比;:& lt;类型比;=& lt;初始化值比;
常量定义
val & lt;标识符比;:& lt;类型比;=& lt;初始化值在
可变变量,使用var修饰;不可变的变量(类似于Java中最后的),使用val修饰。而在变量类型后使用了问号,表示这个变量是空指针安全的
2。类型推导
你可能在其他语言中看到过类型推导。在Java里,我们需要自己声明类型,变量名,以及数值。在芬兰湾的科特林里,顺序有些不一样,你先声明变量名,然后是类型,然后是分配值。很多情况下,你不需要声明类型。一个字符串字面量足以指明这是个字符串类型。字符,整形,长整形,单浮点数,双浮点数、布尔值都是可以无需显性声明类型的。
var字符串:字符串=" " 字符串var=" " var char=' ' var int=1 var=0 l var=0 f浮动 var双=0.0 >之前只要芬兰湾的科特林可以推导,这个规则同样适用与其他一些类型。通常,如果是局部变量,当你在声明一个值或者变量的时候你不需要指明类型。在一些无法推导的场景里,你才需要用完整的声明变量语法指明变量类型。
看到var你是否联想到了我们在js开发中的变量声明,是不是感觉又从陌生回到了熟悉的面孔,那还在等什么赶快加入到学习的行列吧。
代码中使用声明:
瓦尔:int # 63;=10000 val b:长# 63;=一个 var f:浮动# 63;=0 f var d:双# 63;=0.0 >之前<强>使用中转型注意:强>
显式转换
由于不同的表示,短类型不是长类型的子类型。如果是的话我们就会碰到下面这样的麻烦了
//这是些伪代码,不能编译的 瓦尔:int # 63;=1//一个装箱过的Int (java.lang.Integer) val b:长# 63;=//一个隐式装箱的长(java.lang.Long) pritn (a==b)//很惊讶吧这次打印出的是“假的” >之前因此特性甚至值都会悄悄丢失掉
所以,短类型是不会隐式转换为长类型的。这意味着我们必须显式转换才能把字节赋值给整数
val b:字节=1//好吧,文字静态检查 val我:Int=b//错误//我们可以通过显式转换把数值类型提升 val我:Int=b.toInt()//显式转换 >之前每个数值类型都支持下面的转换:
toByte():字节 toShort():短 toInt (): Int toLong():长 toFloat():浮动 toDouble():增加一倍 toChar (): Char >之前隐式转换的缺席是很少提及,因为我们可以使用上下文推断出类型,并且算术运算会为合适的转换进行重载,比如1
芬兰湾的科特林教程之基本数据类型