package fenglei.demo.datatype
//Boolean类型
var aBoolean:Boolean=true
var anotherBoolean:Boolean=false
//Number类型
/*
分类 类型 位宽
浮点型 Double 64
Float 32
整型 Long 64
Int 32
Short 16
字节 Byte 8位
*/
var anInt:Int=8
var anotherInt:Int=0xFF //16进制 255
var moreInt:Int=0b00000011 //2进制 3
var maxInt:Int=Int.MAX_VALUE
var minInt:Int=Int.MIN_VALUE
//
var aLong:Long=123213123213213212
var anotherLong:Long=123L
var minLong:Long=Long.MIN_VALUE
var maxLong:Long=Long.MAX_VALUE
//浮点型有精度问题,不要用Float表示钱
var aFloat:Float=2.0f
var anotherFloat=1E3f
var minFloat:Float=Float.MIN_VALUE
//var MaxFloat:Float=Float.MAX_VALUE //最小的正数
var MaxFloat:Float=-Float.MIN_VALUE
var anotNum=Float.NaN//不是数,不能比较相等,没有意义
//
var aDouble:Double=3.0 //不加f表示双精度浮点数
//基本用不到
var aShort:Short=123
var minShort:Short=Short.MIN_VALUE
var maxShort:Short=Short.MAX_VALUE //Ctrl+D 复制一行
//一般当作数据流,而不是用作数字
var byte:Byte=127
//Char类型
//对应Java的Character类型。
//占两个字节,表示一个16位的Unicode字符。
//字符用单引号''引起来,例如:‘a','0','\n'
var aChar:Char='0'
var bChar:Char='中'
var cChar:Char='\u000f' //\u表示Unicode编码
var dChar:Char='\n' //换行符
/*转义字符
\t 制表符
\b 光标后退一个字符
\n 回车
\r 光标回到行道
\' 单引号
\" 双引号
\\ 反斜杠
\$ 美元符号,Kotlin支持美元符号形状的字符串模板
*/
/*
基本类型的转换:不可隐式转换
*/
var int1:Int=5;
var long1:Long= int1.toLong()
/*
字符串就是一串Char
用""号引起来
*/
var string:String="hello"
var fromChars:String=String(charArrayOf('h','e','l','l','o'))
fun main(args: Array<String>) {
print(string == fromChars) //相当于equalse
print(string === fromChars)//比较地址,相当于Java的==
println("接下来輸出:"+ string)//字符串拼接
var arg1:Int=0
var arg2:Int=1
println("$arg1+$arg2=${arg1+arg2}") //字符串模版
var sayHello:String="Hello\"Tom\""
println(sayHello)
var salary:Int=1000
println("\$$salary") //println("$$salary")
println("\$salary")
//原始字符串,无法使用转义符, 字符串模版仍有效
var rawString:String="""
\t
$salary
\$salary
"""
println(rawString)
}