Scala:一个入门的HelloWorld的demo的思考

1.声明

当前内容主要用于本人学习和复习,当前内容主要为一个HelloWorld的demo的思考

2.配置环境变量scala

1.直接在当前的官方下载scala的解压包,本人使用:scala-2.11.7.zip

2.当前的scala是基于java的,所以必须要有JAVA_HOME,直接配置环境变量即可

3.在Path中加入即可

在这里插入图片描述

3.编写一个HelloWorld

创建一个hello.scala并写入一下内容

object HelloWorld{
	def main(args:Array[String]){
		println("hello world!");
	}
}

使用编译salac hello.scala
在这里插入图片描述
说明,scala编译后就是class文件

执行scala HelloWorld

在这里插入图片描述

执行成功!

4.使用jd-gui查看编译后的class文件

HelloWorld.class

import scala.reflect.ScalaSignature;

@ScalaSignature(bytes = "\006\001\025:Q!\001\002\t\002\025\t!\002S3mY><vN\0357e\025\005\031\021a\002\037f[B$\030PP\002\001!\t1q!D\001\003\r\025A!\001#\001\n\005)AU\r\0347p/>\024H\016Z\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 E9\0211\002I\005\003C1\ta\001\025:fI\0264\027BA\022%\005\031\031FO]5oO*\021\021\005\004")
public final class HelloWorld {
  public static void main(String[] paramArrayOfString) {
    HelloWorld$.MODULE$.main(paramArrayOfString);
  }
}

HelloWorld$.class

import scala.Predef$;

public final class HelloWorld$ {
  public static final HelloWorld$ MODULE$;
  
  public void main(String[] args) {
    Predef$.MODULE$.println("hello world!");
  }
  
  private HelloWorld$() {
    MODULE$ = this;
  }
}

结果很明显,HelloWorld通过调用HelloWorld 来 实 现 输 出 h e l l o w o r l d , 使 用 静 态 方 式 调 用 , 通 过 创 建 H e l l o W o r l d 来实现输出helloworld,使用静态方式调用,通过创建HelloWorld helloworld,使HelloWorld类实例来进行调用,并且HelloWorld具有静态的main方法,而HelloWorld$具有非静态的方法

5.使用class方式创建HelloWorld2

创建HelloWorld2.scala

class HelloWorld2{
	def main(args:Array[String]){
		println("hello world!");
	}
}

编译后:scalac HelloWorld2.scala

import scala.Predef$;
import scala.reflect.ScalaSignature;

@ScalaSignature(bytes = "\006\001\r2A!\001\002\001\013\tY\001*\0327m_^{'\017\03433\025\005\031\021a\002\037f[B$\030PP\002\001'\t\001a\001\005\002\b\0255\t\001BC\001\n\003\025\0318-\0317b\023\tY\001B\001\004B]f\024VM\032\005\006\033\001!\tAD\001\007y%t\027\016\036 \025\003=\001\"\001\005\001\016\003\tAQA\005\001\005\002M\tA!\\1j]R\021Ac\006\t\003\017UI!A\006\005\003\tUs\027\016\036\005\0061E\001\r!G\001\005CJ<7\017E\002\b5qI!a\007\005\003\013\005\023(/Y=\021\005u\001cBA\004\037\023\ty\002\"\001\004Qe\026$WMZ\005\003C\t\022aa\025;sS:<'BA\020\t\001")
public class HelloWorld2 {
  public void main(String[] args) {
    Predef$.MODULE$.println("hello world!");
  }
}

结果发现当前的HelloWorld2创建了一个非静态的main函数,所以这个HelloWorld2是无法直接执行的

6.总结

1.使用object方式创建时,会创建一个对应的类$的类,并具有非静态的main,和一个类以及一个静态的main方法;而class方式直接创建的就是一个非静态的main方法

2.object方式定义的类,可以直接执行,class方式的不能直接执行

3.使用println可以实现System.out.println

4.使用def方式定义函数,例如:def 函数名称(参数:参数类型){方法体...}

以上纯属个人见解,如有问题请联系本人!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值