文章目录
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).append(" ").append(this.age).append(" ").append(Student$.MODULE$.from()).toString());
}
public static String from() {
return Student$.MODULE$.from();