scala
windows下安装Scala过程
Download | The Scala Programming Language (scala-lang.org)
下载scala-2.13.6.msi直接安装
winodws本地安装scala完成之后,在cmd中检查scala是否安装好,直接输入scala即可
可能有些时候会出现失败的情况,这时候删掉重新安装,重新安装的时候自定义路径,全英文不要有空格,windows的路径诸如 Program Files (x86) 是有空格的,会引起scala安装出错。
还有需要说明的就是早些版本需要配置环境变量,现在比较新的可以不用配环境变量。
idea创建scala程序流程
idea ->maven ->pom.xml ->scala插件 ->Project Structure ->Global Libraries ->加上本地的scala-sdk ->添加scala框架Add Framework Support ->新建scala文件object
深度认识Scala的第一个程序
与Java的编译执行过程类似,我们写好一个HelloScala程序后先scalac编译它,然后再scala执行它。
object HelloScala {
def main(args: Array[String]): Unit = {
println(“hello,spark”)
}
}
scalac HelloScala.scala
scalac之后生成了两个.class文件,涉及到Scala伴生对象的概念,这和javac有所不同。
HelloScala.class 是伴生对象的伴生类
HelloScala$.class是伴生对象的所属类
HelloScala$.class
import scala.Predef.;
public final class HelloScala$
{
public static MODULE$;
static
{
new ();
}
public void main(String[] args)
{
Predef..MODULE$.println("hello,spark");
}
private HelloScala$() { MODULE$ = this; }
}
HelloScala.class
import scala.reflect.ScalaSignature;
@ScalaSignature(bytes="\006\001%:Q\001B\003\t\002!1QAC\003\t\002-AQAE\001\005\002MAQ\001F\001\005\002U\t!\002S3mY>\0346-\0317b\025\0051\021a\002\037f[B$\030PP\002\001!\tI\021!D\001\006\005)AU\r\0347p'\016\fG.Y\n\003\0031\001\"!\004\t\016\0039Q\021aD\001\006g\016\fG.Y\005\003#9\021a!\0218z%\0264\027A\002\037j]&$h\bF\001\t\003\021i\027-\0338\025\005YI\002CA\007\030\023\tAbB\001\003V]&$\b\"\002\016\004\001\004Y\022\001B1sON\0042!\004\017\037\023\tibBA\003BeJ\f\027\020\005\002 M9\021\001\005\n\t\003C9i\021A\t\006\003G\035\ta\001\020:p_Rt\024BA\023\017\003\031\001&/\0323fM&\021q\005\013\002\007'R\024\030N\\4\013\005\025r\001")
public final class HelloScala
{
public static void main(String[] paramArrayOfString)
{
HelloScala..MODULE$.main(paramArrayOfString);
}
}
Java运行scala程序需要scala的jar包,安装之后在安装目录的lib里有(java和Scala都是运行在JVM上的)
java -cp D:\scala\lib/scala-library.jar; HelloScala
谨记:
HelloScala.class 是伴生对象的伴生类
HelloScala$.class是伴生对象的所属类
class Student(name: String, var age: Int) {
def printInfo(): Unit = {
println(name + " " + age + " " + Student.school)
}
}
//引入伴生对象
object Student{
val school: String = "ZWU"
def main(args: Array[String]): Unit = {
val alice = new Student("alice",20)
val bob = new Student("bob",23)
alice.printInfo()
bob.printInfo()
}
}