scala基础语法(二)

1.标识符

大体上与Java一致。

特殊点:

1.Scala标识符中不允许出现$ 
2.反引号`` 可以将关键字等一些特殊字符使用反引号引起来,这样就变成了一个合法的标识符。

eg:

return class val there is="jthbh"

2.关键字

Scala中的关键字基本上与Java一致。但存在个别Java关键字在Scala中不是关键字的特例。

eg:

break

第一天学习过程中认识到的关键字:


class val var object def trait  type return this  super private protected
Byte Short Int Long Char Float Double Boolean Unit Array  extends with abstract

3.操作符

算数运算符 逻辑运算符 位运算符 ....等 与Java使用一致。

注意:

1.scala中本质上没有操作符,都是方法的调用。   
2. Scala中 == 与 equals 一致,都是比较值
   eq与ne比较的是地址。

stu1.eq(stu2)
  1 + 2
  1.+(2)
  1 to 10  
  1.to(10)

4.注释

//单行注释
/*多行注释 */ 
/**文档注释  */

5.控制结构(重点讲解)

5.1 块语句/表达式

val info={
  val b=0;
  val a=9;
  val sum=a+b;
  println(sum);
}

5.2 if表达式

val info=if(3>5){
  1.3
}else{
  0 
} 
val info=if(3<5){0.8}

5.3 输入输出

注意:一个scala源码中默认导入3个包

Console.println
print
printf 

scala.io.StdIn.readLine
readInt

5.4 循环

while  do  for

for推导

格式:

for(发生器){循环体}

eg:

for(elem <- 1 to 10){...}

if守卫

格式:

for(发生器 if守卫){循环体}

eg:

for(elem <- 1 to 10 if i%2==0 if i%3==0){...}
      for(elem <- 1 to 10 if i%2==0&&i%3==0){...}

for嵌套

格式:

for(发生器1;发生器2;...){...}

eg:

for(i <- 1 to 9;j <- 1 to 9){....}

for嵌套+if守卫

格式:

for(发生器1 if守卫;发生器2;... if守卫 if守卫 if守卫){...}

eg:

for(i <- 1 to 10;j<- 1 to 9; if i%2==0 if j%3==0){...}
      for(i <- 1 to 10 if i%2==0;j<- 1 to 9 if j%3==0){...}

for yield 返回新的集合

格式:

for(发生器) yield {循环体}

eg:

val newCollection=for(i < 1 to 10) yield {i+2}

注意:

除了for yield之外的其他for循环都是一个过程,即没有返回值。

5.5 函数:

现阶段不具体区分方法和函数,因此与day1方法讲解的一致。

5.6 异常

Scala中的异常有三种处理办法:

1.try catch finally

格式:

try{}catch{}
      try{}catch{}finally{}
      try{}finally{}

注意:

1.支持上边这三种格式,注意最后一种在Java中是不支持的。
      2.catch代码块中没有了所谓了参数列表。
      3.catch代码块中使用case语句去匹配异常信息。

eg:

try{
        //可能会发生异常的代码
      }catch{
        // e,x 只是一个变量,被val修饰的变量。因此,可以自己设置成符合Scala标识符规范的变量名即可。
        case e:IOException => 
          println(e.getMessage)
        case x:NullPointerException =>
          //...........
          //...........
      }

2.Option None Some (后期文章中分享)

3.Try Success Failure (后期文章中分享)

5.7 其他语句

scala不推荐使用return语句。
  
  break/continue在C++中非常常见的控制结构语句,但在Scala中是不必要的,可以使用布尔值类型的量通过IF语句进行控制

注意:

scala中没有break关键字,如果想要结束多层循环,可以使用如下代码:

import  scala.util.control.Breaks._
    breakable{
      for (i<- 1 to 10){
        if (i==5)
          break
      }
    }

包与引用

1.包对象

每个包都可以有一个包对象,你需要在父包中定义它,且名称与子包一样。

格式:

package object 包名{
  }

在其他地方,这个常量可以用com.horstmann.impatient.people.defaultName访问到。
包对象被编译成带有静态方法和字段的JVM类,名为package.class,位于相应的包下。
对源文件使用相同的命名规则是好习惯,可以把包对象放到文件com/horstmann/impatient/people/package.scala。这样一来,任何想要对包增加函数或变量的话,都可以很容易地找到对应的包对象。

2.默认导包

import java.lang._
import scala._
import scala.Predef._
//注意:区分先后顺序

3.包引入重命名

//全部导入
import scala.collection.mutable._ 
//重命名
import java.util.{ HashMap => JavaHashMap } 
//将HashMap之外全部导入
import java.util.{ HashMap => _,_}

4.包的作用范围

与变量的作用范围一致,不可以在引用范围之外使用该包内的类,对象。

相关推荐