2020-02-17

HelloScala.scala

object HelloScala{
    def main(args:Array[String]):Unit={
        print("hello,scala!")
    }
}

HelloScala.class

import scala.reflect.ScalaSignature;

@ScalaSignature(bytes="\006\001%:Q!\001\002\t\002\025\t!\002S3mY>\0346-\0317b\025\005\031\021a\002\037f[B$\030PP\002\001!\t1q!D\001\003\r\025A!\001#\001\n\005)AU\r\0347p'\016\fG.Y\n\003\017)\001\"a\003\b\016\0031Q\021!D\001\006g\016\fG.Y\005\003\0371\021a!\0218z%\0264\007\"B\t\b\t\003\021\022A\002\037j]&$h\bF\001\006\021\025!r\001\"\001\026\003\021i\027-\0338\025\005YI\002CA\006\030\023\tABB\001\003V]&$\b\"\002\016\024\001\004Y\022\001B1sON\0042a\003\017\037\023\tiBBA\003BeJ\f\027\020\005\002 M9\021\001\005\n\t\003C1i\021A\t\006\003G\021\ta\001\020:p_Rt\024BA\023\r\003\031\001&/\0323fM&\021q\005\013\002\007'R\024\030N\\4\013\005\025b\001")
public final class HelloScala
{
  public static void main(String[] paramArrayOfString)
  {
    HelloScala..MODULE$.main(paramArrayOfString);
  }
}

HelloScala$.class

import scala.Predef.;

public final class HelloScala$
{
  public static  MODULE$;

  static
  {
    new ();
  }

  public void main(String[] args)
  {
    Predef..MODULE$.print("hello,scala!");
  }
  private HelloScala$() { MODULE$ = this; }

}
//说明
//1.object表示一个伴生对象,这里我们可以简答的理解就是一个对象
//2.HelloScala就是对象名字,它底层真正对应的类名是HelloScala$
//对象是HelloScala$类型的一个静态对象MODULE$
//3.当我们编写一个object HelloScala底层会生成两个.class文件,分别是HelloScala和HelloScala$
//4.scala在运行时,的流程如下
//(1)先从HelloScala的main开始执行
//public static void main(String[] paramArrayOfString)
//  {
//    HelloScala..MODULE$.main(paramArrayOfString);
//  }
//(2)然后调用HelloScala$类的方法 HelloScala$.MODULE$.main
//(3)即执行了下面的代码
//public void main(String[] args)
//  {
//    Predef..MODULE$.print("hello,scala!");
//  }
object HelloScala{
    //说明
    //1.def 表示一个方法,这是个关键字
    //2.main表示方法名字,表示程序入口
    //3.args:Array[String]表示形参,scala的特点时将参数名在前,类在后
    //4.Array[String]表示类型数组
    //5. :Unit= 表示该函数的返回值为空(void)
    //6.print("hello,scala!")输出一句话
    def main(args:Array[String]):Unit={
        print("hello,scala!")
    }
}

用scalac可能能执行java字节码文件,但是javac不能执行scala字节码文件,因为scala比java的范围大

你可能感兴趣的:(2020-02-17)