Hello World
代码语言:javascript复制package com.junzerg
object HelloWorld {
def main(args: Array[String]): Unit = {
println("hello world")
}
}
编译:
代码语言:javascript复制scalac HelloWorld.scala
可以看到被编译为HelloWorld.class。就是字节码咯
执行:
代码语言:javascript复制>scala -classpath . HelloWorld
hello world
和Java整合
预加载所有java.lang
下的类,其他类需要显式引入。
例如Date
和DateFormat
import java.util.{Date, Locale}
import java.text.DateFormat._
object FrenchDate {
def main(args: Array[String]): Unit = {
val now = new Date
val df = getDateInstance(LONG,Locale.FRANCE)
println(df format now)
}
}
Scala的import的语句比Java牛逼,可以从一个包中引入多个类,方式是用大括号括起来。另一个区别是,引入包或类的所有名称时,用下划线(_)而不是星号(*)。因为星号是Scala的标识符。
第二个import语句能引入DateFormat类的所有成员,所以静态方法getDateInstance可以和静态字段LONG直接可见。
最后一行很有意思,采用一个参数的方法可与中缀语法一起使用。也就是说,表达式:
代码语言:javascript复制df format now
就是另一个,略显冗长的表达式:
代码语言:javascript复制df.format(now)
可以从Java类继承并直接在Scala中实现Java接口。
一切皆对象
Scala是一个纯面向对象语言,即一切皆对象。包括数字和功能。和Java不同,Java会区别原始类型(例如布尔和int)和引用类型。
数字是对象
既然数字是对象,那么他就有方法了。事实上。一个如下的算数表达式:
代码语言:javascript复制1 2 * 3 / x
完全由方法组成。因为它等同于下面的表达式:
代码语言:javascript复制(1). (((2).*(3))./(x))
也就是说
、*
等都是有效标识in scala。