zoukankan      html  css  js  c++  java
  • Kotlin编译器使用及反编译分析

    在上一次对Kotlin进行了一个入门的介绍,并用IntelliJ IDEA来编写了一个Kotlin的HelloWorld,记得我们在最初学习J2SE的时候在编译运行都是通过javac、java命令来进行的,脱离开了IDE,这样从学习角度来说会更加的扎实,所以咱们也来通过手动编译运行的方式来学习Kotlin,也就是通过终端命令行的方式,如官网所示:

    要想使用它,则需要下载相关的工具包,下载如下:

    下载完成之后,将其解压缩,其结构如下:

    其中简单瞅下里面的文件:

    所以,先将其配置到我们的path中,如下:

    至此命令行环境已经搭建好了,接下来则手动新建一个Kotlin的文件:

    然后保存并用kotlinc来编译一下:

    这里有个小细节跟Java不一样,就是生成的字节码文件会在后面自动带上一个Kt的后缀,如下:

    接下来运行:

    第一个通过手动编译运行的Kotlin的程序就已经完成了,回到程序上来思考一个问题:

    很明显的一个区别就是貌似这个main()方法没有在class当中,这个在Java中是不可能存在的情况, 而对于Kotlin是运行在JVM之上的程序,而根据JVM的规范方法是不可能脱离类而单独存在的,所以其实我们也能猜到Kotlin在编译时肯定是对源文件自动给加上了类使之符合JVM的要求,下面来揭密一下,使用javap【这个在之前学习jvm字段码时已经大量用过了】这个命令来查看一下生成的字节码的结果是长啥样,如下:

    很明显看到的字体码就是一个标准的java程序,一切神秘面纱就已经揭晓了,其实也就是Kotlin在编译最终还是会编译成Java字节码的,通过这个简单的例子就能比较好的提示Java和Kotlin的关联关系,接下来我们可以进一步来通过javap查看字节码的更多信息,如下:

    打成Jar包运行: 

    对于Kotlin的文件也可以像Java一样打成jar包来运行,下面来演示一下:

    其中我们将这个jar文件解压缩看一下里面的文件,可以看到对于Kotlin中运行时的一些字节都被一起打进到jar当中了,如下:

    接下来则执行该jar,如下:

    通过这个小实验可以很清楚的感受到:Kotlin和Java是可以互操作的嘛,Kolin编写的代码打成jar包,最终可以用Java命令来执行。

    下面则再加到我们的IDE,来正式学习Kotlin的基础语法:

    其中可以看到main函数中的参数定义风格跟Java是相反的,变量名在前,而类型名在后,函数用fun关键字来声明,反正记住这个语法既可,没啥可说的。

    接下来咱们来定义一个两数相加的函数:

    其中还有一个小细节,所有的变量都是对象类型,也就是:

    而不能写成像Java那样的基本类型,如:

    接下来咱们来调用一下:

  • 相关阅读:
    css实现鼠标移入table时出现滚动条且table内容不移位
    SASS学习笔记
    html5--canvas学习笔记
    在iframe里调用parent.func()引出的js函数运行在它们被定义的作用域里,而不是它们被执行的作用域里
    css background-position:x% y%
    js十进制等互相转换
    jsp中的动作元素:<jsp:plugin>
    终于有时间写代码了
    OK 开始实践书上的项目一:即使标记
    我没有忘记敲代码
  • 原文地址:https://www.cnblogs.com/webor2006/p/11183077.html
Copyright © 2011-2022 走看看