1.scala 變量定義 ,var val 區別。
var 定義可變變量
val 定義不可變變量,scala 推薦使用。相當於Java的final 變量.
scala中包含的基本數據類型詳情如下表所示:
| 序號 | 基本類型 | 增強類型 | 大小 | 取值范圍 |
|---|---|---|---|---|
| 1 | Byte | RichByte | 8-bit | -128 ~ 127 |
| 2 | Char | RichChar | 16-bit | 0 ~ 65535 |
| 3 | Short | RichShort | 16-bit | -32768 ~ 32767 |
| 4 | Int | RichInt | 32-bit | -2^31 ~ 2^31 -1 |
| 5 | Long | RichLong | 64-bit | -2^63 ~ 2^63 -1 |
| 6 | Float | RichFloat | 32-bit | |
| 7 | Double | RichDoube | 64-bit |
2.scala 條件控制 if else if else
3. for 增強和 yield類型推導
to ,until 遍歷集合的區別
4.scala 異常處理
try catch {case ex: Exception=> e}finally{}
5. 可變參數方法定義
參數類型* *定義多個參數
6. def 方法定義的注意
def 方法名(參數):返回值={方法體}
返回值省略,默認 Any ,Any相當於java中的Object
object Control {
def main(args:Array[String]): Unit ={
val a=5
// scala 盡量不用return,最后一個表達式的值 作為值返回
val b = if(a<7){val c=a+1;c+3} else if (a==5) 5 else 3
println(b)
//數組初始化
val c:Array[String]=Array("a","b","d")
//變量定義, 變量名:變量類型
val d:String = forAry(c)
println(d)
//求和
val result= sum(23,32,32,32,32)
println(" sum result :"+result)
// 將整個區間作為參數序列來處理 :_*
val newResult = sum(1 to 10:_*)
println("sum newResult: "+newResult)
//數組格式化輸出 toBuffer
println(yieldAry().toBuffer)
println("--------------------")
filter()
//異常
exception()
}
/**
* 遍歷數組
* @param ary
* @return
*/
def forAry(ary:Array[String]):String={
val newBuilder=new StringBuilder
// to 是 i到 區間,包含開始和結尾
for(i<-10 to ary.length-1){
newBuilder.append(ary.apply(i))
}
// unit 是 0 到 length-1 之間
for(i<-0 until ary.length){
newBuilder.append(ary.apply(i))
}
//普通遍歷
for(a<-ary) println( a)
newBuilder.toString()
}
/**
* yield 關鍵字 推導生成新的數組
* @return Array[Int]
*/
def yieldAry():Array[Int]={
val ary :Array[Int]= Array(1,32,3,31,43)
//until 從 0 到 ary.length-1 之間的下標
for(i<-0 until ary.length){
val d:Int=ary.apply(i)
val e= d.*(122);
// println(e)
}
//yield 類型推導為Array
for(arg<-ary) yield arg *2
}
/**
* 可變長參數定義 *
* @param args
* @return
*/
def sum(args:Int*):Long={
var result : Long=0
//for 循環遍歷
for(arg<-args){
result += arg
}
return result
}
/**
* 數組過濾
*/
def filter(): Unit ={
//定義一個數組
val ary =Array(12,2,12,43,2,12,1)
//去重 過濾
//保留符合條件的元素 _.%(2)==0 保留偶數,
// map(_*2) 是各個元素乘以 2
val a = ary.distinct.filter(_.%(2)==0).map(_*2)
println(a.toBuffer)
println(a.sum)//元素求和
}
/**
* 異常處理
*/
def exception():Unit={
//定義一個定長的數組
val ary = new Array[String](2)
ary(0)="1234e"
var it = -2
try{
it = ary(0).toInt
}
catch {
case ex: FileNotFoundException => it = 0
case ex: NumberFormatException => it = 12
case ex:Exception => it = -3
}finally {
println(it)
}
}
}
