4、Scala在IDEA中编写HelloWorld,伴生对象深入分析,及源码包的关联

Scala 在IDEA中编写HelloWorld

打开IDEA新建Maven项目

在IDEA中安装Scala插件

Settings->Plugins->Scala

重启IDEA即可生效

在src目录下新建Scala目录

右键项目添加Scala支持

创建HelloWord

Object:关键字,声明一个单例对象(伴生对象)

格式:
main 方法:从外部可以直接调用执行的方法               
def 方法名称(参数名称: 参数类型): 返回值类型 = { 方法体 }
在Scala中可以省略后面的分号[ ; ]
首先先创建一个包,然后右键Scala Class->选择object类型的创建

敲一个main直接自动补全

package day01

//object:关键字,声明一个单例对象(伴生对象)
object HelloWorld {
   
  def main(args: Array[String]): Unit = {
   
    println("Hello World")
  }
}
运行结果:
Hello World

这里前面带绿色三角形表示main方法可执行

在这里我们依然可以编写Java代码

package day01

//object:关键字,声明一个单例对象(伴生对象)
object HelloWorld {
   
  def main(args: Array[String]): Unit = {
   
    println("Hello World")
    System.out.println("Hello Scala")
  }
}
运行结果:
Hello World
Hello Scala

伴生对象扩展说明

在Java中新建一个Student类

public class Student {
   
    private String name;
    private Integer age;
    private static  String from = "zhongguo";

    public Student(String name, Integer age) {
   
        this.name = name;
        this.age = age;
    }

    public  void  show(){
   
        System.out.println(this.name + " " + this.age + " " + Student.from);
    }

    public static void main(String[] args) {
   
        Student lz = new Student("靓仔", 24);
        Student diaomao = new Student("diaomao", 23);
        lz.show();
        diaomao.show();
    }
}
输出结果:
靓仔 24 zhongguo
diaomao 23 zhongguo

在Scala中新建一个Student类

  • 引入伴生对象,与同名的class相伴相生,去除掉java中的static,from属性由student对象调用
  • class Student就相当于构造函数,def 自定义printInfo函数结构参照上面的结构介绍
  • main函数定义在object Student里面
package day01

class Student(name: String, age: Int) {
   
  def printerInfo(): Unit = {
   
    println(name + " " + age + " " + Student.from)
  }
}
//引入伴生对象
object Student{
   
  val from:String = "zhongguo"

  def main(args: Array[String]): Unit = {
   
    val liangzai = new Student("liangzai", 24)
    val daiomao = new Student("daiomao", 25)
    liangzai.printerInfo()
    daiomao.printerInfo()
  }
}
运行结果:
liangzai 24 zhongguo
daiomao 25 zhongguo

反编译

Student.class

package day01;

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

@ScalaSignature(bytes = "\006\001}2Aa\003\007\001\037!Aa\003\001B\001B\003%q\003\003\005#\001\t\005\t\025!\003$\021\0251\003\001\"\001(\021\025a\003\001\"\001.\017\025\tD\002#\0013\r\025YA\002#\0014\021\0251c\001\"\0015\021\035)dA1A\005\002YBaa\016\004!\002\0239\002\"\002\035\007\t\003I$aB*uk\022,g\016\036\006\002\033\005)A-Y=1c\r\0011C\001\001\021!\t\tB#D\001\023\025\005\031\022!B:dC2\f\027BA\013\023\005\031\te.\037*fM\006!a.Y7f!\tArD\004\002\032;A\021!DE\007\0027)\021ADD\001\007yI|w\016\036 \n\005y\021\022A\002)sK\022,g-\003\002!C\t11\013\036:j]\036T!A\b\n\002\007\005<W\r\005\002\022I%\021QE\005\002\004\023:$\030A\002\037j]&$h\bF\002)U-\002\"!\013\001\016\0031AQAF\002A\002]AQAI\002A\002\r\n1\002\035:j]R,'/\0238g_R\ta\006\005\002\022_%\021\001G\005\002\005+:LG/A\004TiV$WM\034;\021\005%21C\001\004\021)\005\021\024\001\0024s_6,\022aF\001\006MJ|W\016I\001\005[\006Lg\016\006\002/u!)1H\003a\001y\005!\021M]4t!\r\tRhF\005\003}I\021Q!\021:sCf\004")
public class Student {
   
  private final String name;
  
  private final int age;
  
  public Student(String name, int age) {
   }
  
  public void printerInfo() {
   
    Predef$.MODULE$.println((new StringBuilder(2)).append(this.name
  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liangzai2048

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值