Kotlin系统入门与进阶(一)
来源:互联网 发布:雾炮机 知乎 编辑:程序博客网 时间:2024/06/07 03:20
Kotlin中文文档:http://www.kotlindoc.cn/GettingStarted/Basic-Syntax.html
https://www.kotlincn.net/docs/reference/basic-types.html
一、什么是Kotlin?
Kotlin就是一门可以运行在Java虚拟机、Android、浏览器上的静态语言,他与Java 100%兼容,如果对Java熟悉,可以发现Kotlin拥有自己的标准库之外,大都仍然使用经典的Java集合框架。
2016.2发布正式版1.0
2016.9发布1.0.4,支持apt
二、创建工程
先下载Intellij IDEA
file—>new—project:
三、Kotlin的数据类型
在Kotlin中已经不再区分装箱和拆箱
val aBoolean: Boolean = trueval anotherBoolean: Boolean = falseval anInt: Int = 8val anotherInt: Int = 0xFFval moreInt: Int = 0b00000011val maxInt: Int = Int.MAX_VALUEval minInt: Int = Int.MIN_VALUEval aLong: Long = 12368172397127391val another: Long = 123val maxLong: Long = Long.MAX_VALUEval minLong: Long = Long.MIN_VALUEval aFloat: Float = 2.0Fval anotherFloat: Float = 1E3fval maxFloat: Float = Float.MAX_VALUEval minFloat: Float = -Float.MAX_VALUEval aDouble: Double = 3.0val anotherDouble: Double = 3.1415926val maxDouble: Double= Double.MAX_VALUEval minDouble: Double= -Double.MAX_VALUEval aShort: Short = 127val maxShort: Short = Short.MAX_VALUEval minShort: Short = Short.MIN_VALUEval maxByte: Byte = Byte.MAX_VALUEval minByte: Byte = Byte.MIN_VALUEfun main(args: Array<String>) { println(anotherInt) println(moreInt) println(maxInt) println(Math.pow(2.0, 31.0) - 1) println(minInt) println( - Math.pow(2.0, 31.0)) println(maxLong) println(Math.pow(2.0, 63.0) - 1) println(minLong) println(- Math.pow(2.0, 63.0)) println(aFloat) println(anotherFloat) println(maxFloat) println(minFloat) println(maxDouble) println(minDouble) println(maxShort) println(minShort) println(maxByte) println(minByte)}
Char类型:
对应java中的Character
val aChar: Char = '0'val bChar: Char = '中'val cChar: Char = '\u000f'fun main(args: Array<String>) { println(aChar) println(bChar) println(cChar)}
String类型:
val arg1: Int = 0val arg2: Int = 1println("" + arg1 + " + " + arg2 + " = " + (arg1 + arg2))println("$arg1 + $arg2 = ${arg1 + arg2}")
类与对象:
可以支持中文
class 妹子(性格: String, 长相: String, 声音: String): 人(性格, 长相, 声音)class 帅哥(性格: String, 长相: String, 声音: String): 人(性格, 长相, 声音)open class 人(var 性格: String, var 长相: String, var 声音: String){ //构造方法的方法体 init { println("new 了一个${this.javaClass.simpleName}, ta性格:$性格, 长相:$长相, 声音:$声音") }}fun main(args: Array<String>) { val 我喜欢的妹子: 妹子 = 妹子("温柔", "甜美", "动人") val 我膜拜的帅哥: 帅哥 = 帅哥("彪悍", "帅气", "浑厚") println(我喜欢的妹子 is 人)}
在Kotlin中,所有类的父类是Any这个类
空类型和智能类型转换:
在用Java时,我们需要判断值是否为空
public class NullUnSafe { public static void main(String... args) { String name = getName(); if(name == null){ System.out.println("name is invalid!!"); }else{ System.out.println(name.length()); } } public static String getName(){ return ""; }}
但是在Kotlin时:
fun getName(): String?{ return null}fun main(args: Array<String>) {//当getName()返回null的时候执行return,使用?:符号// val name: String = getName() ?: return// println(name.length) //当我们已经知道value的值不为空,但是打印长度的时候,编译器会报错,原因是因为String后面加了?表示的是可空类型,解决办法是在调用length方法时加两个!!,告诉编译器,此值肯定不为空 val value: String? = "HelloWorld" println(value!!.length)}
Child继承Parent:
java的写法:
public class TypeCast { public static void main(String... args) { Parent parent = new Child(); System.out.println(((Child)parent).getName()); }}
Kotlin写法:
fun main(args: Array<String>) { val parent: Parent = Parent() //如果parent能转成Child则返回child,否则返回null val child: Child? = parent as? Child println(child) val string: String? = "Hello" if(string != null) println(string.length)}
区间(Range)
val range: IntRange = 0..1024 // [0, 1024]val range_exclusive: IntRange = 0 until 1024 // [0, 1024) = [0, 1023]val emptyRange: IntRange = 0..-1fun main(args: Array<String>) { println(emptyRange.isEmpty()) println(range.contains(50)) println(50 in range) for(i in range_exclusive){ print("$i, ") }}
数组(Array)
val arrayOfInt: IntArray = intArrayOf(1,3,5,7)val arrayOfChar: CharArray = charArrayOf('H', 'e','l','l','o','W','o','r','l','d')val arrayOfString: Array<String> = arrayOf("我", "是", "码农")val arrayOf书记: Array<市委书记> = arrayOf(市委书记("章"), 市委书记("赵"), 市委书记("黄"))fun main(args: Array<String>) { println(arrayOfInt.size) for(int in arrayOfInt){ println(int) } println(arrayOf书记[1]) arrayOf书记[1] = 市委书记("方") println(arrayOf书记[1]) println(arrayOfChar.joinToString()) println(arrayOfInt.slice(1..2))}
阅读全文
0 0
- Kotlin系统入门与进阶(一)
- Kotlin 系统入门到进阶
- Kotlin基础入门(一)
- Android Kotlin(一)—— Kotlin 入门与 HttpURLConnection 网络请求
- Android kotlin入门与基础语法一
- python3入门与进阶(一)
- Kotlin Reference(一)-入门指南
- Kotlin入门____基础语法(一)
- Kotlin从入门到“放弃”(一)
- Kotlin 从入门到实战(一)
- Android中Kotlin简单入门(一)
- kotlin零基础入门(一)
- 一周入门Kotlin(一)
- kotlin入门学习(一)
- 一周入门Kotlin(一)
- kotlin入门(一)helloworld
- 【YDKJS笔记】一、入门与进阶
- 与Kotlin的第一次接触(Kotlin一)
- HQL多表查询
- 在Eclipse 中设置JVM 内存
- leetcode[Third Maximum Number]
- 9265:取数游戏
- SpringAOP动态拦截方法并重写
- Kotlin系统入门与进阶(一)
- Java中使用TCP协议的简单连接
- 利用ES6中的模板字符串轻松实现多行和字符串值的插入
- maven exclude 排除文件夹
- cross entropy
- intell IDEA 代码自动提示功能没有LE ---File >Power Save Mode 被勾选了 去掉勾选就可以了
- 简单排序——选择排序
- equals与"==" 同时判断时前后位置不同的后果
- git log统计每个作者的代码量