zoukankan      html  css  js  c++  java
  • Kotlin的快速入门

    Kotlin 快速入门:

    Kotlin 的 Hello World :

    #hellokotlin.kt 
    fun main(args:Array<String>){
         println("hello kotlin!");  
    }

    Kotlin 的 变量和常量 :

    1 // eclipse 中运行的快捷键是 ctrl + f11
    2 fun main(args:Array<String>){
    3     var i = 18;  //变量
    4     println(i);
    5 
    6     val number = "No.123456";  //Val is can't be reassigned! //不能再被修改了
    7     
    8     println(number);
    9 //    number = "No.159";  //此时不可以再被修改了

    Kotlin的 常见容器的类型:

    1 // eclipse 中运行的快捷键是 ctrl + f11
    2 fun main(args:Array<String>){
    3     
    4     var i = 18;  //这时是自动推断类型 
    5     
    6     var j:Int = 20; //显式指定j 的类型为Int 
    7 }

     常见数据类型的取值范围

     1 fun main(args:Array<String>){
     2     //Byte 的取值范围
     3     println(Byte.MAX_VALUE)
     4     println(Byte.MIN_VALUE)
     5 
     6     //Short 的取值范围
     7     println(Short.MAX_VALUE)
     8     println(Short.MIN_VALUE)
     9 
    10     //Int 的取值范围
    11     println(Int.MAX_VALUE)
    12     println(Int.MIN_VALUE)
    13 
    14     //Long 的取值范围
    15     println(Long.MAX_VALUE)
    16     println(Long.MIN_VALUE)
    17 }

    Kotlin的函数:

    一些常见的函数:

    (1)main函数:

    它是默认执行的第一个程序,

    1 fun main(args:Array<String>){
    2     /*
    3     * 代码
    4     * */
    5 }

    (2)println() 函数:

    它的作用是向控制台打印括号内的内容。

    自定义函数:

     1 fun main(args:Array<String>):Unit{
     2     var a = 10
     3     var b = 5
     4     println(plus(a,b))
     5     println(sub(a,b))
     6     println(mul(a,b))
     7     println(div(a,b))
     8 }
     9 fun plus(a:Int,b:Int):Int{
    10     return a+b
    11 }
    12 fun sub(a:Int,b:Int):Int{
    13     return a-b
    14 }
    15 fun mul(a: Int,b: Int):Int{
    16     return a*b
    17 }
    18 fun div(a: Int,b:Int):Int{
    19     return a/b
    20 }

    Kotlin的boolean:

    true 表示真, false 表示假。

    1 fun main(args:Array<String>){
    2     var num1 = Math.sqrt(5.0) -Math.sqrt(4.0)
    3     var num2 = Math.sqrt(4.0) - Math.sqrt(3.0)
    4 
    5     print(num1>num2) //false 
    6 }
    1 fun main(args:Array<String>){
    2     var num1 = Math.pow(2.0,100.0)  //注:类型要是double 
    3     var num2 = Math.pow(3.0,75.0)
    4 
    5     print(num1>num2) //false
    6 }

    Kotlin 的字符串模板:

    1 fun main() {
    2     test()
    3 }
    4 fun test(){
    5     var name = "Guido"
    6     var a = "Life is short,I learn Python! ---${name}"  //${}
    7     println(a)
    8 }

    Kotlin 的if else 流程控制:

    1 fun test(){
    2     var a = 5
    3     var b = 10
    4     if (a>b){
    5         println("a比b大")
    6     }else{
    7         println("b比a大")
    8     }
    9 }
     1 fun main() {
     2     test()
     3 }
     4 fun test(){
     5     var a = 5
     6     var b = 10
     7     if (a>b){
     8         println("a比b大")
     9     }else if(a==b){
    10         println("a与b相同")
    11     }
    12     else{
    13         println("b比a大")
    14     }
    15 }

    Kotlin 的字符串比较:

     1 fun main() {
     2     test()
     3 }
     4 fun test(){
     5     var str1 = "tom"
     6     var str2 = "tom"
     7 
     8     println(str1 == str2) //true
     9     println(str1.equals(str2))//true 
    10 
    11     var str3 = "Jack"
    12     var str4 = "jack"
    13     println(str3.equals(str4,true)) //true 表示忽略大小写
    14     println(str3.equals(str4,false)) //true 表示忽略大小写
    15  
    16 
    17 }

    Kotlin 的空值处理:

    null 也是值,它表示没有东西,没有数据。

     1 fun test(str:String):String{
     2     return "Hello "+str
     3 }
     4 
     5 fun main(){
     6     var ret = test("Python")
     7     println(ret)
     8     //上面是正常的
     9 //  var ret1 = test(null)  // 直接就报错了
    10 }
     1 fun test(str:String?):String{
     2     return "Hello "+str
     3 }
     4 
     5 fun main(){
     6     //如果一定要传null 的话
     7     //可以在形参的后面加个?
     8     var ret = test(null)
     9     println(ret)  //Hello null 
    10 }

    Kotlin 的When表达式:

    类似于c/java 中的switch 语句  

     1 fun test1(score:Int){
     2     when(score){
     3         10 -> println("满分")
     4         9 -> println("优秀")
     5         8 -> println("优秀")
     6         7 -> println("还可以")
     7         6 -> println("及格")
     8         else -> println("不及格")
     9     }
    10 }
    11 fun test(){
    12     test1(9)
    13 }
    14 
    15 fun main(){
    16     test()
    17 }

    Kotlin 的Loop 和Range :

     1 fun test1(){
     2 ////////////////////////全闭区间/////////////////////////////
     3 //    var nums = 1 .. 100  //[1-100]
     4 //    for (num in nums ){
     5 //        print("${num}, ")
     6 //    }
     7 ////////////////////////全闭区间/////////////////////////////
     8 ////////////////////////左闭右开区间/////////////////////////////
     9 //    var nums = 1 until 100  //[1-100)
    10 //    for (num in nums ){
    11 //        print("${num}, ")
    12 //    }
    13 ////////////////////////左闭右开区间/////////////////////////////
    14 ////////////////////////设置步长/////////////////////////////
    15 //    var nums = 1 ..16
    16 //    for(num in nums step 2){
    17 //        print("${num}, ")
    18 //    }
    19 ////////////////////////设置步长/////////////////////////////
    20 ////////////////////////序列常用的方法/////////////////////////////
    21 //    var nums = 1 .. 16
    22 //    var nums2 = nums.reversed()
    23 //    println(nums2)  //16 downTo 1 step 1
    24 //    for (num in nums2 ){
    25 //        print("${num}, ") //16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,
    26 //    }
    27 //    println(nums.count()) // 总数为: 16
    28 ////////////////////////序列常用的方法/////////////////////////////
    29 
    30 }
    31 fun test(){
    32     test1()
    33 }
    34 
    35 fun main(){
    36     test()
    37 }

    Kotlin 的List和Map:

    List: 类似于Python 中的列表

     1 fun test1(){
     2     var lists = listOf<String>("hello","world","python","life")
     3 //    println(lists)  [hello, world, python, life]
     4 
     5 //    for(list in lists){
     6 //        println(list)
     7 //    }
     8 
     9     for((idx,value) in lists.withIndex()){  //可以将索引也打印出来
    10         println("$idx $value")
    11 //        println("${idx} ${value}")
    12     }
    13 
    14 }
    15 fun test(){
    16     test1()
    17 }
    18 
    19 fun main(){
    20     test()
    21 }

    map  :类似Python 中的字典

     1 import java.util.TreeMap
     2 fun test1(){
     3     var map = TreeMap<String,Int>()  //要从 java.util.TreeMap
     4     map["tom"] = 10
     5     map["jane"] = 20
     6     map["jack"] = 30
     7     map["john"] = 40
     8 
     9     println(map)  //{jack=30, jane=20, john=40, tom=10}
    10     for((key,value) in map){
    11         println("Nmae: $key	Age: $value")
    12     }
    13 }
    14 fun test(){
    15     test1()
    16 }
    17 
    18 fun main(){
    19     test()
    20 }

    Kotlin 的函数式表达式:

    当函数体内只有一条return 语句的时候,可以简写:

    1 fun add(x:Int,y:Int):Int{
    2     return x+y
    3 }
    4 
    5 fun main (args:Array<String>){
    6     var res = add(5,3)
    7     println(res)
    8 }

    简写如下:

    1 fun add(x:Int,y:Int):Int = x+y
    2 
    3 fun main (args:Array<String>){
    4     var res = add(5,3)
    5     println(res)
    6 }

    它也可以采用:函数表达式来写:

    第一种函数表达式:

    1 //fun add(x:Int,y:Int):Int = x+y
    2 
    3 fun main (args:Array<String>){
    4     var i = {x:Int,y:Int -> x+y}  //这个就是函数表达式,i 就是函数名
    5     var res = i(5,9)  
    6     println(res)
    7 }

    第二种函数表达式:

     1 fun main (args:Array<String>){
     2     var i = {x:Int,y:Int -> x+y}  //这个就是函数表达式,i 就是函数名
     3     var res = i(5,9)
     4     println(res)
     5 
     6     var j:(Int,Int)->Int = {x,y -> x+y} //在声明j 的时候,就指明它的类型
     7     var res2 = j(5,8)
     8     println(res2)
     9 
    10 }

    Kotlin 函数中默认参数的使用:

    1 val Pi = 3.1415926
    2 fun getCircleCir(r:Double,PI:Double=Pi):Double{
    3     return 2* PI*r
    4 }
    5 fun main (args:Array<String>){
    6 
    7     var cir = getCircleCir(5.0)
    8     println(cir)
    9 }

    Kotlin字符串和数字之间的转换:

     1 import kotlin.reflect.typeOf
     2 
     3 fun test(){
     4     var a = "13"
     5     var b = a.toInt()
     6     
     7     var c = 13
     8     var d = c.toString()
     9 }
    10 fun main (args:Array<String>){
    11     test()
    12 }

    Kotlin使用readLine() 获取键盘输入:

     1 fun test(){
     2     println("请输入一个数字:")
     3     var a = readLine()  //readLine() 接收键盘输入
     4     println("请输入另一个数字")
     5     var b = readLine()
     6 
     7     println("${a} ${b}")
     8     var ret = a!!.toInt() + b!!.toInt()  //!! 可以避免两个null 相加
     9     println(ret)
    10     }
    11 fun main (args:Array<String>){
    12     test()
    13 }

    Kotlin 异常处理:

     1
     2 fun test() {
     3     while (true) {
     5         println("请输入一个数字:")
     6         var a = readLine()  //readLine() 接收键盘输入
     7         println("请输入另一个数字")
     8         var b = readLine()
     9 
    10         println("${a} ${b}")
    11         ////////////////////////try - catch 异常处理/////////////////////////////
    12         try {
    13             var ret = a!!.toInt() + b!!.toInt()
    14             println(ret)
    15         } catch (e: Exception) {
    16             println("请输入数字!!!")
    17         }
    18         ////////////////////////try - catch 异常处理/////////////////////////////
    19     }
    20 }
    21 fun main (args:Array<String>){
    22     test()
    23 }

    Kotlin 递归:

     1 fun test(num:Int):Int {
     2     if(num == 1){
     3         return 1
     4     }
     5     return num*test(num-1)  
     6 }
     7 fun main (args:Array<String>){
     8     var ret  = test(5)
     9     println(ret)
    10 }

    此时如果算100的阶乘 是不行的,将Int 换成Long 也是不行的,

    这时可以用下面的 BigInteger来算大的数 。

     1 import java.math.BigInteger
     2 
     3 fun test(num:BigInteger):BigInteger {
     4     if(num == BigInteger.ONE){
     5         return BigInteger.ONE
     6     }
     7     return num*test(num-BigInteger.ONE)
     8 }
     9 fun main (args:Array<String>){  //100的阶乘
    10     var ret  = test(BigInteger("100"))  
    11     println(ret)
    12 }
    13 /*
    14 * 输出:933262154439441526816992388562667004907159682643816214685929638952175999
    15 *               93229915608941463976156518286253697920827223758251185210916864000000000000000000000000
    16 *
    17 * */

    Kotlin 尾递归优化:

     1 // 用递归实现累加
     2 fun test(n:Int):Int{
     3     if (n == 1){
     4         return 1
     5     }
     6     return n+test(n-1)
     7 }
     8 
     9 fun main(args:Array<String>){
    10     var res = test(100)  //此时如果是 100000 的累加的话就会报出StackOverFlow 栈溢出错误!
    11     println(res)
    12 }

    这时可以用尾递归优化来解决这个问题:

     1 tailrec fun test(n:Int,result:Int):Int{  //tailrec 尾递归优化!
     2     if (n == 1){
     3         return result +1
     4     }
     5     return test(n-1,result+n)  //尾递归要求返回的直接是函数本身。
     6 }
     7 
     8 fun main(args:Array<String>){
     9     var res = test(100000,0)  //结果是:705082704
    10     println(res)
    11 }
  • 相关阅读:
    C语言I博客作业06
    C语言I博客作业05
    C语言I博客作业04
    C语言II博客作业04
    C语言II博客作业03
    C语言II博客作业02
    C语言II博客作业01
    期末总结
    第一次作业
    C语言I博客作业08
  • 原文地址:https://www.cnblogs.com/zach0812/p/11428871.html
Copyright © 2011-2022 走看看