疯狂kotlin-----第一章、第二章

第一章主要讲环境配置。

第二章 kotlin的基本类型

2.1注释

单行注释: “//” 多行注释:“/*......*/”(多行注释可嵌套)

文档注释:“/**.......*/” dokka工具来生成API文档(github下载)

2.2变量

变量与常量的区别:变量可重新赋值,常量只能赋值一次

2.2.1分隔符:“;” 一行一条语句结尾可省略分号,一行多条语句在每天语句结尾用分号分开,建议一行一条语句方便阅读。一条语句可以跨多行,一个字符串一个变量不能跨行。

花括号“{”  和 “}” 方括号“[]” 圆括号“()” 空格“ ” 圆点 “.”

2.2.2 标识符规则

  • 区分大小写:Myname 与 myname 是两个不同的标识符。
  • 首字符:可以是下划线(_)或字母,但不能是数字。
  • 除首字符外其他字符,可以是下划线(_)、字母和数字。(字符不仅包含26个字母还可以是中文、日文等等)
  • 硬关键字(Hard Keywords)不能作为标识符,软关键字(Soft Keywords)、修饰符关键字(Modifier Keywords)在它们的适用场景之外可以作为标识符使用。
  • 特定标识符 field 和 it。在 Kotlin 语言中有两个由编译器定义的特定标识符,它们只能在特定场景中使用有特定的作用,而在其他的场景中可以做标识符使用。

2.2.3 kotlin关键字

2.2.4 kotlin声明变量

  • 变量先声明后使用,声明时需显示或隐式指定变量类型
  • 表达式 var | val 变量名 [ :变量类型]   [ =初始值 ]
  • var 变量值可变  val 变量值不可变
  • 局部类常量 在使用前赋值即可,类常量需初始化赋值或者构造赋值

2.3 整型

  • Byte(8位),Short(16位),Int(32位),Long(64位)都继承了Number类,兼容java的基本数据类型和引用类型
  • kotlin没指定类型时,整数型默认为Int类型
  • kotlin是空安全语言,因此不接收null类型,若想存null值需使用Byte?,Short?,Int?,Long?
  • 不带?会映射成java的基本类型,带?的会映射成java的引用数据类型
  • 三个等号 === 表示比较对象地址,两个 == 表示比较两个值大小,基本数据类型比较的是数值(===比较只要值相等也是true),引用数据类型比较的是地址值(带?与不带?的区别)
  • 进制:支持十进制、二进制(0b或0B)、十六进制(0x或0X),不支持八进制
  • 为提高可读性,用“_”下划线做分隔符,也可在数值前添加0,例:val price = 001_234_321_333(包含浮点型)
  • 字符串模板:${变量或表达式}

2.4浮点型

  • Float(32位)与Double(64位双精度浮点型)类型,浮点数必须包含一个小数点,没指定类型默认为Double
  • 表现形式:十进制形式5.12,51.2,512.0,科学计数形式5.12e2(5.12*10^2),5.12E2(5.12*10^2),512E2(51200是Int类型)也是浮点型的值
  • 正无穷大(正数除以0.0),负无穷大(负数除以0.0),非数(0.0除以0.0或对负数开方)(不等于任何数包括自己)

2.5 字符型

  • 三种表现形式:1.单个字符来指定字符型值—'A'、'0'、'9',2.转义字符表示表示特殊字符型值'\n'、'\t'  ,  3.Unicode值表示'u\XXXX',xxxx代表一个十六进制的整数
  • 与java不同kotlin的Char类型不能当成整数值使用,例如:var a : Char = 'a',var b : Int = a (会报错),但在java中char a = 'a',int b = a 则 b 会被赋值为97;

2.6 数值之间的类型转换 

  • kotlin不会自动类型提升即不支持隐式转换,所有不同类型的变量不能直接赋值,需要通过方法toByte(), toShort(), toInt(), toLong(), toFloat(), toDouble(), toChar(), 例子:var price : Byte = 10;  var day : Short = 12; price = day(错误),price = day.toByte()  (正确)。注意大范围的值转小范围的值可能发生溢出。
  • kotlin表达式中可以自动转换,例如:var price :Byte = 10;var day : Short = 12;  var total = price + day ——》 会自动提升为Int类型,若有比Int更大的类型例如Long 则会自动提升为Long类型
  • kotlin中Char类型不允许被当成整数值使用,但是允许整数值转换成Char类型,例如 var price : Int = 97, var c = price.toChar();这个转换是成立的,Char类型的可以加减一个整型值,也可以两个Char类型值进行加减
  • 浮点型与整型的数值进行转换也需要用显示转换
  • 表达式类型自动提升:所有Byte,Short类型将自动被提升到Int类型,类型等级Byte——》Short——》Int——》Long——》Float ——》Double

2.7 Boolean类型 

  • Boolean类型只有两种值true 和 flase 不能接受null,若要接受null 则需声明Boolean?
  • 一般用做条件判断,如if语句,when语句,do   while语句

2.8 Null 安全

  •  也就加不加?类型,加了?代表可接收null类,没加代表不可接收,例如:var str = "A",var num : Int = str.toIntOrNull()报错,var num : Int ?= str.toIntOrNull() 正确
  • 可空类型的变量不允许直接调用方法或属性,需先判断非空,也可用安全调用方法,即变量后加 ‘?’再调用方法或属性
  • Elvis运算 “?:” 例子 var str : String? = "haha",var len1 =  if (str!=null) str.length else -1; 用Elvis表达式 var len2 = str?.length ?:  -1;
  • 强制调用 “!!.” 例子:var str : String ? = "hahah", var len3 = str!!.length. 强制调用当变量为空时报NPE异常。

2.9 字符串 

  • kotlin字符串的每一个字符都是独立的Unicode字符串组成,可通过索引访问
  • 分为转义字符串(与java字符串类似)、原始字符串(用"""    """引起来 我的理解是带格式的字符串)
  • 字符串的常用方法:toInt,toDouble...返回字符串前缀后缀方法commonPrefixWith/commonSuffixWith,contains支持正则表达式

2.10 类的别名

  • typealias  类型别名 = 已有类名

猜你喜欢

转载自blog.csdn.net/qq_34207101/article/details/87966843