代码实例

分别使用 Scala 和 Java 语言编写一个小程序

Scala

  1. object HelloWorld {
  2. def main(args: Array[String]): Unit = {
  3. println("Hello Scala!")
  4. }
  5. }

👉 名词解释

  • object 表示一个伴生对象,简单理解就是一个对象
  • main 是一个方法,是程序调用的入口函数
  • println 是打印输出语句

👉 代码解析

  • 程序编译后产生 2 个字节码文件:HelloWorld$.class 和 HelloWorld.class
  • HelloWorld.scala 的 HelloWorld 是对象名字,底层真正对应的类名是 HelloWorld$
  • HelloWorld$ 类型的一个静态对象是 MODULE$

👉 运行流程

  • 先从 HelloWorld 的 main 方法开始执行
  • 再调用 HelloWorld$ 的类方法 HelloWorld$.MODULE$.main
  • 最后在 HelloWorld$ 的主方法中执行打印语句的代码

📚 小知识:可以使用反编译工具查看 .class 文件 链接

Java

  1. /**
  2. * fileName: HelloWorld.java
  3. */
  4. public class HelloWorld {
  5. public static void main(String[] args) {
  6. System.out.println("Hello Java");
  7. }
  8. }

模拟实现

使用 Java 模拟 Scala 底层的运行原理

  1. public class TestScala {
  2. public static void main(String[] paramArrayOfString) {
  3. TestScala$.MODULE$.main(paramArrayOfString);
  4. }
  5. }
  6. final class TestScala$ {
  7. public static final TestScala$ MODULE$;
  8. static {
  9. MODULE$ = new TestScala$();
  10. }
  11. public void main(String[] args) {
  12. System.out.println("Test Scala!");
  13. }
  14. }