目录

安装

数据类型

变量,常量

字符串

操作符

条件表达式 

while用法

for循环

for yield 表达式

声明map(key->value)

异常处理机制

break 和continue


安装

1.window安装,一路下一步

2.cmd   窗口输入  >scal

数据类型

Any ->
         AnyVal -> 7 数据类型(Byte、Char、Short、Int、Long、Float 和 Double), Boolean 、Unit(void) = ()
         AnyRef

注意:Unit 表示无值,和其他语言中 void 等同。用作不返回任何结果的方法的结果类型。Unit只有一个实例值,写成()。

变量,常量

格式:var|val 变量的名称(:变量的类型) = 值

1. var 修饰的变量是可变的
2. val 修饰的变量是不可变的, 相当于java中的final关键字修饰的变量

3.scala是行语言,不需要加;  但是如果要在一行中写多条语句,需要用;隔开

   //三种变量赋值方式

    var var1=100;       //scala可以根据结果自动推断出类型, 不需要显示的声明,但也可以显示的指定数据类型

    var var2:Int=100;

    var var3:java.lang.String="hello";

字符串

1.scala的通用的化简规则:如果在调用方法时,方法的参数列表只有一个,则方法的()可以省略

val s1="hello,world"

val r1=s1.split(",")

val r2=s1.take(5)   //--取出前n个数据

val r21=s1 take 5

val r3=s1.takeRight(5)     //--取出后n个数据

val r31=s1 takeRight 5

val r4=s1.drop(5)        //--删除前n个元素,并返回剩余元素

val r5=s1.dropRight(5)           //--删除后n个元素,并返回剩余元素

val r6=s1*2       //--将字符串重复n次

val r7=s1.distinct        //--去重

val i1=1               // i1  : Int = 1
val r1=i1.to(5)      //--to方法用于生成一个区间,一般用于for循环时生成遍历的范围,(1, 2, 3, 4, 5)
val r2=i1.to(5,2)   //--生成区间,并指定 步长为2   ,(1, 3, 5)
val r3=1.to(5)       //(1, 2, 3, 4, 5)
val r4=1 to 5        //(1, 2, 3, 4, 5)
val r5=1 to 5 by 2    //(1, 3, 5)
val r6=1.until(5)   //--生成区间,不包含尾元素,(1, 2, 3, 4)
val r7=1.until(5,2)     //(1, 3)

操作符

scala有4种前缀操作符,分别是 +(正数) -(负数) !(布尔取反) ~(进制取反),需要注意:前缀操作符前面必须加空格。

val r8=1.0                                      //> r8  : Double = 1.0
val r9=1+2*3                                    //> r9  : Int = 7
val r10=1.+(2).*(3)        //--以方法的调用顺序来运算                       //> r10  : Int = 9
val r11= +2     //--表示正数2 , r11  : Int = 2
val r12= -2        //--表示负数2,r12  : Int = -2
val r13= !true   //--布尔取反,r13  : Boolean = false
val r14= ~0XFF    //--进制取反, r14  : Int = -256
val r15=2.unary_+   //> r15  : Int = 2
val r16=2.unary_-       //> r16  : Int = -2
val r17=true.unary_!     //> r17  : Boolean = false
val r18=0xFF.unary_~    //> r18  : Int = -256

条件表达式 if ..else if ... else

1.scala的通用的规则:scala会将方法体{}最后的一行代码当做返回值返回,不需要加return关键字

2..scala的Unit类型类比于Java的void,空类型

3.scala的Any类似java的Object类型

4.如果if else返回值类型不一致,返回的就是Any、

5.if else 是有返回值的,可以接

//根据scala函数式编程风格,建议做如下更改
    //尽量使用常量
    val val1=10;
    //if……else最后一行的值是返回值,可省略return
    val result=
         if(val1<100){
           "小了";
         }else{
           "大了";
         }
    print(result)

    //也可以简化成下面的形式
val val2=10;  println ( if( val2 < 100 ) " 小了"  else "大了" );
val r = if(i >8) i // 编译器会默认认为else部分没有返回值,即Unit = ()
val r1: Any = if Any else Any
while用法

scala通过下标操作集合类型时,是用(index)来操作的,不同于java的[index]

//一个简单的例子
val val1=List(1,2,3,4);
var index=0;
while(index<val1.size){
      println(val1(index));
      index+=1;
 }

for循环

for(变量 <- 表达式/集合/数组; if 守卫)
for(i <- 0 to 3; j <- 0 to 3 if i!=j)

for(i<-1 to 10 by 2){  println(i)  }

for(i<-1 to 10;if i>5;if i%2==0) println(i)

 for(a<-1 to 9;b<-1 to a; val sep=if(a==b)"\r\n" else "\t"){  print(b+"*"+a+"="+a*b+sep) } /-注意赋值时,只能用常量val来接,不能用变量var接)

for yield 表达式

for yield的作用:遍历一个集合,返回一个新集合。遍历的是什么集合类型,返回的就是对应的集合类型

val a2=Array(1,2,3,4)                     //> a2  : Array[Int] = Array(1, 2, 3, 4)

val a3=for(i<-a2)yield{i*2}               //> a3  : Array[Int] = Array(2, 4, 6, 8)

val l1=List(1,2,3,4)                      //> l1  : List[Int] = List(1, 2, 3, 4)

val l2=for(i<-l1)yield{i*3}               //> l2  : List[Int] = List(3, 6, 9, 12)

声明map(key->value)

val m1=Map("tom"->23,"rose"->30,"jim"->35)  //> m1 Map(tom -> 23, rose -> 30, jim -> 35)

 //--遍历map的第一种方式

for(i<-m1){

     println(i)              

  }

//--遍历map的第二种方式,掌握

for((k,v)<-m1){

    println(v)                      

}

异常处理机制

try{
    throw new RuntimeException
  }catch{
    case t:NullPointerException=>{
           println("null error")
     }
     case t:Exception=>{
            println("other error")
      }
  }finally{
     println("end")
  }               > other error    end

val s1="world"                             
val r1=s1 match{
     case "hello"=>{
           println("1")
           100
      }
    case "world"=>{
           println("2")
           200
     }
}        //   r1  : Int = 200

break 和continue

1.scala使用break需要导包

2.breakable在for循环外,是break效果。在for循环内,是 continue效果

breakable

breakable(
  for(i<-1 to 10){      
      if(i==8){
        break
      }else{
        println(i)
    }
  }
)    //> 1 2 3 4 5 6 7

continue

for(i<-1 to 10){
   breakable(
    if(i==8){
      break
    }else{
      println(i)
    }
  )                                       
}    //> 1  2  3 4  5  6 7 9 10