Kotlin

1、kotlin(肯棱鳞)  开发区块链 基于jvm的开发语言
2、kotlin 语言特点
  集合各种语言的优点:java scala c# groovy python c c++
  简介 ---主要针对java
  安全   ---通过编译可以规避空指针安全
  互操作  ---可以配合java
  oop+FP  ---支持面向对象和函数编程
  协程   ---和异步操作相同,相当于线程,但比java结束空间
  DSL(领域特定语言)
3、kotlin的前景
kotlin script(gradle)
java 虚拟机应用
   web kotlinee
   javafx
前端开发  kotlinjs
android开发
ios开发
kotlin Native程序(完全抛弃jvm虚拟机)
全栈工程师
4、基本语法:HelloWrold
  fun main(args : Array<String>):Unit{  //函数 Unit 相当与void 无返回值
  println("HelloWorld");
  }
   (1)基本数据类型 8中基本类型,都是大写 ---类似于java
  var a:Boolean =true
  var b:Byte=10
  var c:Short=20
  var d:Char='a'
  var e:int=10
  var f:Float =10.1234567
  var g :Double=1.1234567
  var h:Long =10L
    (2)智能类型推断
   var a=true ---如果有赋值,可以不用写数据类型,可以自己判断出他是Boolean类型
   var b=10
   (3)原样输出字符串
Java
   String s="中国\n广东省\n深圳市"
Kotlin 也可以同上写法
   var s="""
     中国
     广东省
     深圳市
     """.trimIndent()
    (4) 区间
  定义1到100
 var range=1..100
  定义‘a’到‘Z’
  val charRange1=‘a’..'z'
    (5)空安全处理
    Java
    string s=null;
    s.length(); ---空指针异常
   Kotlin
   var s:String=null  ---错误
   var  s:String?=null
   s?.length ---空安全调用  当s!=null时,才会调用。length
    (6)常见Exception有哪些
    JAVA 
   if(data!=null&&data.value!=null){
   data.value.toString();
    }
   Kotlin
   data?.value?.toString()
  (7)apply表达式
Java
  List<String> list=null;
   if(list!=null){
    list.add("张三");
    list.add("李四");
    list.add("王五");
   }
Kotlin
   list?.add("张三");
   list?.add("李四");
   list?.add("王五");
  或 apply函数
   list?.apply{
   add("张三");
   add("李四");
   add("王五");
    }
  (8)标签处返回
  loop@for (c1 in s1){
   for(c2 in s3){
     if(c1=='b1'&& c2=='2'){
      break@loop  ---直接可以跳出外层for 跳出打标签出
   }
   }
   }
  (9) statement & Exception
 java 声明式语法:
  声明 no return value
  public int max(int a,int b){
     if(a>b){
    return a;
   }else{
    return b;
   }
  }
  kotlin 表达式语法
  表达式 return value
  fun max(a:Int,b:Int):Int{---函数 函数名 参数 返回值
    return if(a>b){
    a
   } else{
    b
   }
   }
   只有一个时
   fun max(a:Int,b:Int){
      return if(a>b) a else b
     }
  Java
 public String todo(){
   if(age>=1|| age<=6){
      return "没有上学";
   }else if(age==7){
   return "开始上学";
   }else if (age==12){
   return "开始上中学";
    } else if(age==15){
   return "开始上高中";
   }else{
    return "开始上社会大学";
    }
   }
Kotlin
   fun rodo():String{
    return when(age){ ---相当于switch
     in 1..6->"没有上学"  --in 相当于in
      7->"开始上小学"
     12->"开始上中学"
     15->"开始上高中"
      18->"开始上大学"
    else->"在上社会大学"
   }
   }
   (10)默认参数和具名参数
  Java
  public void send(String path,String method){
    //网络请求
   }
 public void send(String path){//默认method是GET
 //GET网络请求
  }
  Kotlin
 fun send(path:String,method:String="GET"){
  }
调用
  send(path,method)
  send(path,"www.baidu.com")
  智能类型转换
 Java
 Animal animal =new Dao();
 if(animal istanceof Dog){
   Dog dog=(Dog) animal;
   dog.wangwang();
 }
 Kotlin 
  if(animal is Dog){---is 相当于instanceof
   animal.wangwang()
  }
 (11)by lazy
  class  person{
   val  name byLazy{"张三"} ---惰性加载,线程安全  val只能初始化一次
   }
(12)扩展函数
  Java
public class StringUtils{
   public static boolean isEmpty(String str){
    return str==null||str.length()==0;
  }
}
Kotlin
 fun String.isEmpty():Boolean{
  return this=null || this.length==0
}
  fun main(args:Array<String>):Unit{
  val str="张三"
  str.isEmpty()
 }
(13)Object 单例
Java
  public class NetManager{
    private static NetManager netManager=new Netmanager();
  private Netmanager();
  public static NetManager getInstance(){
   return netManager;
   }
   }
Kotlin
  object NetManager{ ---前面加Object就是单例模式,以后不能在new出来
  }
(14)data class
java 的bean类
  Kotlin数据类
  data class Person(var name:String,var age:Int);
(15)函数式编程
 高级函数  可以作为参数或返回值
   fun test():()->Unit{--返回值是函数 没有返回值
   var a=10
  return {
   println(a++)
   }
  }
   fun cacl(a:Int,b:Int,block:(Int,Int)->Int):Int{
   return block(a,b)
  }
Lambda表达式
sum =cacl(a,b,{a,b->   ---匿名函数
a+b
})
(16)接口回调和函数回调
   Java 接口回调
   Kotlin 函数回调
  private  Lateinit var callBack:(String)->Unit   ----Lateinit 延迟初始化
   fun setCallBack(callBack:(String)->Unit){
  this.callBack=callBack
 }
  fun execute(){
  //业务逻辑满足回调
  callback("张三");
   }
(17)DSL  领域特定语言
    html{
    head{
         title{+"XML encoding with Rotlin"}
        }
     body{
       h1{+"XML encoding with Rotlin"}
    }
   }
(18)用于android
(19)js应用  编写kotlin代码 js自动生成
      1、获取canvas  画布
     val canvas =document.getElementById("canvas") as HTMLcanvsElement
      2、代码中不能直接操作canvas 需要通过context
      val ctx=canvas.getContext("2d") as canvasRenderingContext2D
     //宽度和高度
   val width=window.innerwidth
   val  heigth=window.innerHeight 
(20)java fx 
阅读更多

没有更多推荐了,返回首页