• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • kotlin(1)-HelloWorld

    標簽: kotlin

    新人報道–Kotlin(HelloWorld)

    本人大三,是新人,需要大神們多多指教哈!

    今天是我第一次發blog,,也是java的生日,先祝我們的CafeBaby 生日快樂。

    • Kotlin–Hello World!
    • 與Java相比
    • 運行所加載的類
    • 加載額外的類
    • 查看類的結構
    • 用java反編譯器查看

    Kotlin–Hello World!

     當單一的Java開發已經無法滿足當前軟件的復雜需求時,越來越多基于Java虛擬機的語言開發被應用到軟件項目中,Java平臺上的多語言混合編程正成為主流,每種語言都可以針對自己擅長的方面更好地解決問題。
    

    昨天剛接觸了下一門運行在jvm上的語言—kotlin,他的語法與java相比下,簡單易懂。
    所以做了個簡單測試HelloWorld,我是使用eclipse,用習慣了。

    fun main(args: Array<String>) {
        println("HelloWorld!")  
    }
    

    這個結構與public static void main(String args[]){….}有點相似。

    輸出結果必然是“HelloWorld!”。

    與Java相比

    Kotlin與java語言都是運行在jvm上的語言,既然運行在jvm之上運行,那必須符合jvm的排序規則,編譯加載.class文件(關于類加載機制過程就不詳細講解了,過段時間專門寫一個關于這樣的專題)。

    我就很好奇它的加載過程,我就做了個測試,代碼很簡單。
    Kotlin:

    fun main(args: Array<String>) {
        println("HelloWorld!")  
    }
    

    Java:

    public static void main(String[] args) {
            System.out.println("Hello World");
        }
    

    代碼很簡單

    運行所加載的類

    Kotlin:
    這里寫圖片描述
    Java:
    這里寫圖片描述
    前面加載的一模一樣,但是往后看就會發現不同。

    加載額外的類

    java:
    這里寫圖片描述
    到此加載完畢后輸出結果

    Kotlin:
    這里寫圖片描述

    這里寫圖片描述
    它加載并沒有結束,還通過sun.misc.URLClassPath$JarLoader去加載額外的jar包

    [Loaded sun.security.util.SignatureFileVerifier from C:\Program Files\Java\jre1.8.0_101\lib\rt.jar]
    [Loaded sun.security.util.ManifestEntryVerifier from C:\Program Files\Java\jre1.8.0_101\lib\rt.jar]
    [Loaded kotlin.jvm.internal.Intrinsics from file:/F:/eclipse/configuration/org.eclipse.osgi/1310/0/.cp/lib/kotlin-runtime.jar]
    [Loaded kotlin.KotlinNullPointerException from file:/F:/eclipse/configuration/org.eclipse.osgi/1310/0/.cp/lib/kotlin-runtime.jar]

    加載了kotlin.jvm.internal.Intrinsics這個類從kotlin-runtime.jar里。

    我那時候發現[Loaded kotlin.jvm.internal.Intrinsics…,這個是kotlin中的一個類,但是很好奇的是代碼中沒有出現或者說沒有去聲明。
    

    查看類的結構

    我比較好奇這個類為什么會被加載,我拿出Kotlin編譯好的class文件,看了下他的結構:

    這里寫圖片描述

    很驚奇的發現這個類確實被加載進來引用
    這里寫圖片描述

    也發現了Helloworld這個類是被final修飾的(kotlin生成類的規范, 包含類、方法、變量, 默認是final等),我還想查看個究竟,通過反編譯查看這個代碼。

    用java反編譯器查看

    這里寫圖片描述

    后來發現這個類是在運行時檢查參數是否為空值,null檢查與kotlin語法的關系生成的java類名與kotlin文件名的對應關系。
    在應用上來看,kotlin的語法的確比較簡單易用(本人目前來看),但是我相信每種語言都可以針對自己擅長的方面更好地解決問題。
    

    關于kotlin的一些知識或者我個人對他的一些看法會持續更新喔,歡迎大家來多多提意見哈!

    由于這是本人第一次寫博客,需要大家多多指教。有啥意見問題多留言哈!

    版權聲明:本文為qq_38724295原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/qq_38724295/article/details/72654476

    智能推薦

    (1)JPA - 概述,HelloWorld

    1 概述 1.1 JPS是什么? 1.2 JAP 和 Hibernate的關系 1.3 JAP的優勢 1.4 JPA包括3方面的技術 2 HelloWorld 2.1 使用JPA持久化對象的步驟 2.2 創建了導入jar包 創建lib,加入jar包。 2.3 連接數據庫的基本信息 新建數據庫:jpa 配置文件里面已經默認加載了。 2.4 配置JPA 實現產品的基本屬性,配置hibernate的基本...

    SpringMVC - (1)HelloWorld

    一.創建動態Web工程 二.導入需要的包 三.配置web.xml 使用spring提供給我們的servlet 一個servlet對應一個請求,以前的servlet都是我們自己寫的,我們知道具體是做什么的,現在springMVC為我們提供了一個servlet。 會根據你 <init-param>中的參數找到 springmvc.xml 四.配置springmvc.xml 1.namesp...

    SpringBoot系列:1、HelloWorld

    環境: maven:3.6.2 jdk:1.8 SpringBoot:2.1.9.RELEASE 開發工具:IDEA 1、SpringBoot簡介 簡化Spring應用的初始化搭建以及開發過程 整個Spring技術棧的一個大整合 J2EE開發的一站式解決方案 約定大于配置 2、微服務 英文版:https://martinfowler.com/articles/microservices.html微...

    SpringMVC -1 - 歸檔 、 HelloWorld

    文章目錄 一些整理: 正式開始: 一些整理: 官網 - http://projects.spring.io/spring-framework/ 官方文檔: Spring Framework 5.2.3.RELEASE API : https://docs.spring.io/spring/docs/current/javadoc-api/ Spring Framework Documentatio...

    SpringMVC(1) helloWorld項目

    通過SpringMVC,創建HelloWorld項目 添加依賴 配置web.xml 在resources下,創建springmvc-servlet.xml配置文件 創建Hello (com.pual.controller.Hello)類 在WEB-INF下,創建jsp/hello.jsp 6.啟動服務器測試 常見問題...

    猜你喜歡

    1、SpringBoot入門-helloWorld

    1、SpringBoot入門-helloWorld 什么是 Spring Boot 快速入門 Maven 構建項目 Idea 構建項目 引入 web 模塊 參考:http://www.ityouknow.com/spring-boot.html 這兩天在做一個springBoot的單元測試,發現不會寫了spingBoot-test的注解,尷尬了,決定把springBoot的東西梳理記錄下 什么是 ...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    requests實現全自動PPT模板

    http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

    精品国产乱码久久久久久蜜桃不卡