kotlin(1):基本类型+包

基本类型

kotlin,所有的东西都是对象(没有类似于java的基本数据类型),因此可以在任何变量上调用成员函数或者属性.

 

1.数字

java不同的是,对于数字没有隐式拓宽转换(javaint可以隐式的转换为long)

提供了六种内置的类型:Double,Float,Long,Int,Short,Byte  (不包括Char类型)

 

2.字面常量

十进制:123

Long类型用大写的L标记:123L

十六进制:0x0F

二进制:0b0001101

不支持8进制

支持浮点数的常规表示方法:

默认:Double 123.5  科学计数法

Floatf或者F标记:123.5f

 

3.表示方式

数值相同的两个数字  具有相等性,但不具备同一性

 

 

4.显式转换

 

每个数字类型都支持如下的转换:

toByte():Byte  toShort(): Short  toInt(): Int  toLong(): Long   toFloat(): Float  

toDouble(): Double  toChar(): Char

备注:在运算的时候 小类型会遵从大类型进行运算

 

 

5.运算

运算同样被定义为了类成员(但编译器会将函数调用优化为相应的指令)

//    sh1 有符号左移  java的<<
//    shr 有符号右移  java的>>
//    ushr 无符号右移 java的>>>
//    别问我为啥没有ushl 无符号左移和shl没区别...
//    and  位与
//    or    位或
//    xor   位异或
//    inv   位非

 

6.字符

字符用Char类型来表示,但是不能直接当做是数字,字面值用单引号括起来,特殊字符用反斜杠转义\  : \t \b \n \r \’ \” \\ \$

可以显示的把字符转换为Int数字(借用’0’.toInt())

 

7.布尔

java一样

 

8.数组

数组在Kotlin中使用Array类来表示,定义了getset函数(按照运算符重载约定会转变为[])size属性,迭代器

可以使用库函数arrayOf()来创建一个数组并传递元素值arrayOf(1,2,3)或者库函数arrayOfNulls()可以创建一个指定大小,元素都为空的数组

或者可以通过工厂函数来给索引的每个元素初始值

// 创建⼀. Array<String> 初始化为["0", "1", "4", "9", "16"]
val asc = Array(5, { i -> (i * i).toString() })


 

java不同的是,kotlin中数组是不型变的(invariant),意味着kotlin不让我们把Array<String>赋值给Array<Any>.以防止可能的运行时失败

Kotlin也有无装箱开销的专门的类来表示原声类型数组:ByteArray,IntArray等等,这些类和Array并没有继承关系,但是它们又同样的方法属性集,也都有相应的工厂方法

 

9.字符串

Kotlin有两种类型的字符串字面值:转移字符串可以有转义字符,以及原声字符串可以包含换行和任意文本,转义字符很想java字符串

val s = “hello \n”


原生字符串使用三个引号””” 分界符括起来,内部没有转义并且可以在包含换行和任何其他字符

val text = “””sadfs”sdf”sdf “””


可以通过trimMargin()函数去除前导空格

默认使用|用作边界前缀

字符串可以包含模板表达式

val i = 10
val s = "i = $i" // 求值.果为"i = 10"


或者用花括号括起来的任意表达式

val s = "abc"
val str = "$s.length is ${s.length}" // 求值结果为 "abc.length is 3"


原生字符串和转义字符串内部都支持模板。如果你需要在原⽣字符串中表示字面值$字符(它不支持反斜杠转义),你可以用以下列语法:

val price = """
${'$'}9.99
"""

源文件通常以包声明开头:

package com.bubblelab.kotlindemo

fun demo(){}

class Demo{}


源文件所有的内容(,函数)都包含在声明的包内,如果没有指明包,该文件的内容属于无名字的默认包

1.默认导入

有多个包会默认导入到每个Kotlin文件中:

Kotlin.*     包含kotlin核心的类和函数以及属性

Kotlin.annotation.*     注解包

Kotlin.comparisons.*     包含有很多可以用于产生Comparator比较器的函数

Kotlin.io.*     io

Kotlin.ranges.*     核心的拓展功能

Kotlin.sequences.*     对象之间的逻辑处理

Kotlin.text.*     正则表达式,可变字符串等东西

根据平台的不同还会导入额外的包

Jvm: java.lang.* kotlin.jvm.*

2.导入

java类似

3.没有import static 静态导入没有



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值