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!")
}
}