- 1.Scala的数据类型:
Byte 8位有符号补码整数。数值区间为 -128 到 127
Short 16位有符号补码整数。数值区间为 -32768 到 32767
Int 32位有符号补码整数。数值区间为 -2147483648 到 2147483647
Long 64位有符号补码整数。数值区间为 -9223372036854775808
到 9223372036854775807
Float 32位IEEE754单精度浮点数
Double 64位IEEE754单精度浮点数
Char 16位无符号Unicode字符, 区间值为 U+0000 到 U+FFFF
String 字符序列
Boolean true或false
Unit 表示无值,和其他语言中void等同。用作不返回任何结果的方法的结果类型。
Unit只有一个实例值,写成()。
Null null 或空引用
Nothing Nothing类型在Scala的类层级的最低端;它是任何其他类型的子类型。
Any Any是所有其他类的超类
AnyRef AnyRef类是Scala里所有引用类(reference class)的基类
- 2.变量的定义
scala有变量类型推断机制,所以我们声明变量直接用类似javascript的var就行
//普通变量声明:
var a = 10
var b = "lijie"
//常量声明:
val a = 10
//多变量声明
var a,b = 10
- 3.scala的分支
3.1 if类型
if(布尔表达式)
{
// TRUE TODO
}
3.2 if…else…类型
if(布尔表达式){
// TRUE TODO
}else{
// FALSE TODO
}
3.3 if…else if…else…类型
if(布尔表达式 1){
// TRUE TODO
}else if(布尔表达式 2){
// TRUE TODO
}else if(布尔表达式 3){
// TRUE TODO
}else {
// FALSE TODO
}
例子:
if (a < 0) {
println("小于0")
} else if (a > 0) {
println("大于0")
} else {
println("等于0")
}
- 4.scala的循环
4.1 while 循环
while(condition){
//TODO
}
//例子:
while(true){
print("lijie")
}
4.2 do…while 循环
do {
//TODO
} while( condition )
//例子:
do{
print("lijie")
} while(true)
4.3 for循环
for( var x <- Range ){
//TODO
}
//例子1:
for(a <- 1 to 10){
println("number is :"+a)
}
//例子2(添加)筛选条件:
for(a <- 1 to 10;if a != 5;if a <= 8){
println("number is :"+a)
}
//例子3(for的推导式):
var tmp = for (i <- 1 to 10) yield {i+1}
//例子4(for推倒式的9*9乘法表):
var tem1 = for (a <- 1 until 10) yield {
var tem2 = for (b <- 1 to a) yield {
b + " * " + a + " = " + a * b + "\t"
}
tem2
}
for (a <- tem1) {
for (b <- a) {
print(b)
}
println()
}
//例子5(循环的中断,在java中可以用break,scala中需要先定义一个对象):
var brk = new Breaks
brk.breakable(
for (a <- 1 to 10) {
if (a == 5) {
//当a为5时中断循环
brk.break
}
//这里只会出处1234
print(a)
})
- 5. scala的函数
5.1函数定义:
def functionName ([参数列表]) : [return type] = {
function body
return [expr]
}
例子:
def add(a:Int,b:Int) : Int = {
return a+b
}
5.2 函数传递可变参数:
例子:
def show(arr: String*) = {
for (a <- arr) {
println(a)
}
}
show("hello","lijie")
5.3 函数的递归(例如阶乘)
def factorial(n: BigInt): BigInt = {
if (n <= 1)
1
else
n * factorial(n - 1)
}
//结果为120
print(factorial(5))
5.4 函数设置默认参数值
def show(a: Int = 1, b: Int = 1) = {
print(a+b)
}
5.5 匿名函数和函数简写
var inc = (a: Int) => a + 1
5.6 偏应用函数
var show = (a: String, b: String) => { println(a + "\t" + b) }
var a = "hello"
var showNew = show(a, _: String)
showNew("lijie")
5.7 函数柯里化
def add(x:Int,y:Int)=x+y
//变成下面的
def add(x:Int)(y:Int) = x + y
- 6.scala的闭包
含义:闭包是一个函数,返回值依赖于声明在函数外部的一个或多个变量。
var a = 10
var addN = (n: Int) => a + n
//输出12
print(addN(2))
- 7.scala的数组
//第一种
var arr = new Array[String](2)
arr(0) = "hello"
arr(1) = "lijie"
//第二种
var arr = Array(1,2,3,"hello","lijie")