最近在学习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的类和对象组合。
时间: 2024-12-13 12:50:38