Kotlin从入门到放弃之基础篇(一)——基本数据类型
来源:互联网 发布:单片机c51简易数字钟 编辑:程序博客网 时间:2024/06/10 20:11
Koglin从入门到放弃之基础篇(一)
写在前面的乱七八糟的话:该文章是本菜鸟一边学习一边完成的,所以有很多疏漏的地方欢迎各位大神前来指正。不胜感激!
基本数据类型
Kotlin中,所有变量的成员方法和属性都是对象。一些类型是内建的。Kotlin的基本数据类型包括:数值,字符,布尔,以及数组等。
数值
Kotlin提供了如下数值类型(在Kotlin中,字符:’charactors’不是数值类型)
字符
字符类型用Char表示,不能直接被用作数值类型。
字符是由单引号包裹的,特殊字符通过反斜杠\转义。以下字符序列支持转义:\t,\b,\n,\r,\’,\”,\和$。其他字符需要Unicode转义语法:\uFF00。
fun charToInt(a :Char) :Int{ if(a !in '0'..'9' ) throw IllegalArgumentException("Out of range") return a.toInt() - '0'.toInt() //字符显示转换为数值类型 }
字符可以通过显示转换为数值类型,在这个过程中,字符会被装箱。特性不会被装箱保留
布尔值
布尔值用Boolean表示,并且有两个值true和false。
如果有空引用,则布尔值将会被装箱
布尔值的内置操作有:
♣ 懒分离 ||
♣ 懒结合 &&
♣ 否定 !
数组
Kotlin中的数组由Array表示,它有get和set方法(通过运算符重载可以由[]调用),以及size方法和其他一些常用的函数。
class Array<T> private constructor() { fun size(): Int fun get(index: Int): T fun set(index: Int, value: T): Unit fun iterator(): Iterator<T> // ... }
如若创建一个数组,可以由arrayOf()方法,传递每一项的值来完成。也可以用库函数arrayOfNulls()创建一个指定大小的空Array。或者通过指定Array的大小并提供一个迭代器。
val a : Array<Int> = arrayOf(1,2,3)//通过arrayOf()创建 val b = arrayOfNulls<Int>(4)//通过arrayOfNulls()创建 val c = Array(5,{i -> (i*i).toString()})//通过迭代器创建一个内容为"0" "1" "4" "9" "16"的数组
Kotlin中有专门的类来表示原始类型的数组从而避免过度装箱,:ByteArray,IntArray,ShortArray等。这些类与Array不存在从属关系。但他们有一样的方法属性。并且每个都有相对应的库函数。
val a : IntArray = intArrayOf(1,2,3)
字符串
字符串由关键字String表示,并且字符串是不可变的。字符串中的元素可以通过索引操作str[i]来读取,也可以通过for来循环迭代。
fun printStr(s :String){ for(a in s){ print(a) } }
Kotlin中有两种类型的String,其中一种和Java中的string相似。可以包含分隔符,即:
val s:Stirng = "Hello World"
整行的String通过”“”将内容包裹起来,不可以包含分隔符但是可以包含其他的字符。
val s:String =""" fun printStr(s :String){ for(a in s){ print(a) } } """
模版
Kotlin中的字符串可以包含模版。模版表达式由$开始并包含另一个简单的名称:
val a = 1 print("a = $a")//输出为a = 1
$包含的内容也可以用大括号{}包裹起来
val s = "1234" print("s.length is ${s.length}")//输出为s.length is 4
字面常量
下面是所有类型的字面常量:
♣小数(Dicimals):123
♣长整型以大写的L结尾: 123L
♣十六进制以0x开头:0x0F
♣二进制以0b开头:0b11010011
传统的浮点数表示
♣Double:123.5, 123.5e10
♣Floats:123.5f或者123.5F
*不支持八进制
装箱
Kotlin在Java平台上运行,数值被JVM虚拟机以字节码的形式存储,除非我们做可控标识符(使用字符?)或者泛型。后者数值是装箱的。
*经过装箱的数值是不保留特征的,但他们的值是相等的(ps:纯属废话)。
val a:Int =1 print(a===a) //打印为true val b : Int? = a val c : Int? =a print(b===c)//打印为false print(b==c)//打印为true
显示转换
由于数值在Kotlin中不同的表示,短类型不是长类型的自类型,因此Kotlin中不支持隐式转换。因此我们需要对数值进行显示转换。
val a : Byte =1//允许 val b : Int =a //不允许 val b:Int = a.toInt()//允许
所有的数值类型都支持以下转换:
♣ toByte(): Byte
♣ toInt(): Int
♣ toShort(): Short
♣ toLong(): Long
♣ toFloat(): Float
♣ toDouble(): Double
♣ toChar(): Char
发生隐式转换时一般不容易被察觉,所以我们需要根据上下文进行推断,同时算术运算符也可以为合适的转换进行重载
val a = 1.toLong() + 1 //Long+Int=>Long
运算符
Kotlin支持标准的算术运算符,这些运算符会被声明为相应的类成员。(Kotlin中没有三目运算符)
在Kotlin中基础运算符包括:
♣ 赋值运算符:等于’=’
♣ 算术运算符:加’+’,减’-‘,乘’*’,除’/’,取余’%’,自增’++’,自减’–’,
♣ 字符串链接符:’+’
♣ 关系运算符: 相等’==’,不等’!=’,大于’>’,小于’<’,小于等于’<=’,大于等于’>’
♣ 闭区间运算符:’..’(例:’1..10’表示从1到10的区间,包括1和10),半闭区间运算符’until’(例:’1 until 10’表示从1到10,包括1但是不包括10)
♣ 逻辑运算符: 逻辑与’&&’,逻辑或’||’,逻辑非’!’
♣ 空安全操作符:’?’,’!!’
♣ Elvis操作符: ‘?:’ <结果> = <表达式1> ?: <表达式2> 如果表达式1为null则返回表达式2的内容,否则返回表达式1,注意:当只有当表达式1为null时才会对表达式2求值
♣ 位运算符: 带符号左移’shl(bits)’,带符号右移’shr(bits)’,无符号右移’ushr(bits)’,按位与’and(bits)’,按位或’or(bits)’,按位异或’xor(‘bits’)’,按位翻转’inv(bits)’
运算符优先级
- / %
- Kotlin从入门到放弃之基础篇(一)——基本数据类型
- Kotlin从入门到放弃之准备篇——基本语法
- Kotlin从入门到放弃之基础篇(二)——包和控制流
- Kotlin从入门到放弃之基础篇(三)——类和继承
- Kotlin从入门到放弃之基础篇(四)——属性、字段、接口
- Kotlin从入门到放弃之基础篇(五)——修饰词、扩展、数据类
- kotlin——从入门到放弃
- Kotlin从入门到放弃之基础篇(六)——泛型、嵌套类、枚举类、对象表达式
- Kotlin从入门到“放弃”(一)
- Kotlin从入门到放弃(三)——协程
- 4、Redis从入门到放弃 之 常用命令和基本数据类型操作
- js从入门到放弃之入门(一)
- 【Kotlin从入门到深坑】之基础类型
- Kotlin从入门到『放弃』系列 视频教程
- Kotlin从入门到『放弃』系列 视频教程
- Git从入门到放弃——Git命令篇
- Swift3.0从入门到放弃(四)-基础最终篇
- React-Native从入门到放弃(一)准备篇
- 前端限制上传文件的大小
- 开通博客
- 【demo】新建一个springboot项目最简单的方法
- WEB工具
- 根据前序遍历序列和中序遍历序列构造二叉树算法
- Kotlin从入门到放弃之基础篇(一)——基本数据类型
- Navicat for MySQL定时备份数据库及数据恢复
- hdu1317 XYZZY(floyd、bellman_ford判环)(spfa)
- 64 位软件和 32 位有什么具体区别?
- UVA 12661Funny Car Racing
- iOS UIAlertController代替代替UIAlertView与UIActionSheet
- 集合
- 字体合并工具 FontCreator.exe
- java中的可变参数