學習scala: Hello World


最近在學習scala編程語言,看了幾章確實很好用,尤其是函數式編程,之前曾了解過haskell函數式編程語言,就深深地喜歡上了,不過在實際應用中,確實很少。scala不一樣,兼容java字節碼,可以理解為Java的一種語法糖,Java的類庫可以無縫使用,工作中更多的用的時Java,這樣學習了scala,就可以在工作中大顯身手。

先來一段hello world程序

object HelloWorld{
    def main(args : Array[String]){
        println("HelloWorld")
    }
}

按照scala編程的說法,該對象稱之為孤立對象,如果定義了object,又定義class,那么對象叫伴生對象,class稱之為伴生類。

Scala的程序最終是由scalac編譯成java字節碼,由JVM加載執行,所以說學習scala的同時,對比着編譯后的字節碼,就很容易學習,當然我們不會去看字節碼,而是通過反編譯工具查看反編譯后的代碼,這里推薦jd-gui。下載地址:http://jd.benow.ca/

scalac HelloWorld.scala

編譯后會生成兩個scala文件

通過jd-gui反編譯class后,查看文件

//-------------------------------HelloWorld$.class-------------------------
import scala.Predef.;

public final class HelloWorld$
{
  public static final  MODULE$;
  
  static
  {
    //創建對象,調用HelloWorld$()構造函數
    new ();
  }
  
  public void main(String[] args)
  {
    //MODULE$在構造函數中已經指向對象本身
    Predef..MODULE$.println("HelloWorld");
  }
  
  private HelloWorld$()
  {
    MODULE$ = this;
  }
}
//-------------------------------HelloWorld.class-------------------------
import scala.reflect.ScalaSignature;

public final class HelloWorld
{
  public static void main(String[] paramArrayOfString)
  {
    // 實際調用HelloWorld$下的println方法
    HelloWorld..MODULE$.main(paramArrayOfString);
  }
}

可以看到,最終執行還是java的類和對象組合。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM