学习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的类和对象组合。

posted @ 2016-08-17 10:53  jeffrey.chu  阅读(2761)  评论(1编辑  收藏  举报

99code棋牌网