本文的目标在于帮助熟悉Java的同学可以快速掌握Scala的特殊语法
HelloWorld
package chapter01
object HelloWorld {
def main(args: Array[String]): Unit = {
println("HelloWorld")
}
}
- object关键字用于定义Scala的伴生对象,伴生对象类似于java的静态类,用于定义静态方法和静态变量
- 语句完结不用加分号
变量
object Main {
val school:String = "aaa"
def main(args: Array[String]): Unit = {
var bb = 22
}
}
- var定义变量,val定义常量,val类似java里的final
- 变量类型支持自动推导
def main(args: Array[String]): Unit = {
def getName():Unit = {
println("aaa")
}
val name = getName()
println(name)
val obj:String = null
def m2():Nothing = {
throw new NullPointerException
}
m2()
}
- Unit类似Void
- null兼容java null,表示对象的空值
- Nothing 是所有类的子类,用于兼容抛出Exception
def main(args: Array[String]): Unit = {
val name = "tom"
val age = 10
val num = 2.121221
println(name + " age: " + age)
printf("%s age: %d \n",name,age)
println(name * 3)
println(s"$name age: $age")
println(f"num:${num}%2.2f")
println(raw"num:${num}")
println(
s"""
|select
| *
|from
| ${name}
|where
| a = 1
|""".stripMargin)
}
- +号连接,同java一样
- s“”模板字符串嵌入变量
- printf c++方式
- %进行format
- s""" + |的方式连接多行字符串
- *号可以复制字符串
def main(args: Array[String]): Unit = {
val a1:Byte = 1
val a2:Long = 2
val r:Int = (a1+a2).toInt
val s1 = "aaa"
val s2 = "aaa"
if (s1 == s2) {
println("true")
}
if (!(s1 eq s2)){
println("false")
}
}
- toInt 强制转换为Int 其他类型类似
- 字符串可以直接 == ,类似java的equal
- eq类似java的 == ,对比地址
def main(args: Array[String]): Unit = {
val +=- = "+=-"
println(+=-)
val `if` = "if"
println(`if`)
}
- 纯符号可以当变量
- 反引号可以把关键字设为变量
条件&循环
def main(args: Array[String]): Unit = {
val a = if(true) {
17
}else {
18
}
}
- if可以直接赋值
def main(args: Array[String]): Unit = {
for(i <- 1 to 3) {
println(i)
}
println("=================")
for(i <- Range(1,3)) {
println(i)
}
println("=================")
for(i <- 1 until 3){
println(i)
}
println("=================")
for(i <- Array(2,2,3,4) if i != 2) {
println(i)
}
println("=================")
for(i <- 1 to 8 by 2) {
println(i)
}
println("=================")
for(i <- 1 to 8 by 2 reverse) {
println(i)
}
println("=================")
for(i <- 1 to 8;j <- 1 to 8) {
println(s"$i:$j")
}
}
- to 是闭区间
- until是左闭右开
- scala没有continue语法,使用嵌套if跳过
- by表示步长
- reverse表示倒序
- 多个for循环可以合并
def main(args: Array[String]): Unit = {
Breaks.breakable(
for(i <- 1 to 10) {
println(s"i=$i")
if(i == 3){
Breaks.break()
}
}
)
}
- scala没有break关键字,需要用以上方式break