02 Scala和Java的main方法的比较

比较scala的main方法和Java的main方法的编译文件

创建maven项目 并且把Java和Scala的依赖导入项目。

创建Java对象,实现main方法

Java类的代码

    package com.example.demo.test;
    
    public class Java01_HelloWorld {
  	  public static void main(String[] args) {
  		  System.out.println("Hello World!");
  	  }
    }

java 编译的class文件

   package com.example.demo.test;
   
   import java.io.PrintStream;
   
   public class Java01_HelloWorld
   {
     public static void main(String[] args)
     {
  	 System.out.println("Hello World!");
     }
   }

创建scala对象,实现main方法

    package com.zt.demo.chapter01

  /**
    * 包名和路径名可以不一样
    */
  object Hello {
    def main(args: Array[String]): Unit = {
  	
  	println("Hello World")
    }
}

scala 编译的文件

 //Hello.class文件

	  package com.zt.demo.chapter01;
	  
	  import scala.reflect.ScalaSignature;
	  
	  @ScalaSignature(bytes="\006\001-:Q!\001\002\t\002-\tQ\001S3mY>T!a\001\003\002\023\rD\027\r\035;feB\n$BA\003\007\003\021!W-\\8\013\005\035A\021A\001>u\025\005I\021aA2p[\016\001\001C\001\007\016\033\005\021a!\002\b\003\021\003y!!\002%fY2|7CA\007\021!\t\tB#D\001\023\025\005\031\022!B:dC2\f\027BA\013\023\005\031\te.\037*fM\")q#\004C\0011\0051A(\0338jiz\"\022a\003\005\00655!\taG\001\005[\006Lg\016\006\002\035?A\021\021#H\005\003=I\021A!\0268ji\")\001%\007a\001C\005!\021M]4t!\r\t\"\005J\005\003GI\021Q!\021:sCf\004\"!\n\025\017\005E1\023BA\024\023\003\031\001&/\0323fM&\021\021F\013\002\007'R\024\030N\\4\013\005\035\022\002")
	  public final class Hello
	  {
	    public static void main(String[] paramArrayOfString)
	    {
	      Hello..MODULE$.main(paramArrayOfString);
	    }
	  }

  ```
	 
	 
	//Hello$.class文件
	
	
	package com.zt.demo.chapter01;
	
	import scala.Predef.;
	
	public final class Hello$
	{
	  public static final  MODULE$;
	
	  static
	  {
	    new ();
	  }
	
	  public void main(String[] args)
	  {
	    Predef..MODULE$.println("Hello World");
	  }
	  private Hello$() {
	    MODULE$ = this;
	  }
	}
	

总结

//  scala  源码包含了main方法,在编译后自动形成了  public  static void  main
//  Scala  在编译源码时,会生成两个字节码文件,静态main方法会执行名一个字节码文件中的成员main的方法
//  Scala 是完全面向对象的语言,那么没有静态方法 的语法,只能同负一模拟生成静态方法。
//  编译时会将当前的生成的一个特殊的类==》 Hello$ ,然后创建对象来调用运来这个对象的main方法
//一般情况下,会将$的类的对象,会称呼为“版本伴生对象”
// 伴生对象中的时内容,都是可以通过类名访问。来模拟java中的静态方法
//  半生对象的时语法规则,使用Object生命

//  public  static  void main (String[] arrys){ 方法体}
//  scala中没有public关键字   scala默认所有权限都是公共的。
//  scala中没有viod关键字 ,采用特殊的对象模拟: Unit
//  scala中声明方法采用关键字def

//方法后面的小括号  时方法的参数列表
//  scala  中参数列表的声明方式和Java的是不一样的
//Java  :String 参数名
//Scala :参数名:类型
//   Java中的方法声明和方法体直接连接
//   scala中的方法的声明和方法体  时通过等号链接的
//  scala中将方法的返回值类型放置在方法的声明的后面使用冒号连接
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值