zoukankan      html  css  js  c++  java
  • Scala_基本语法

    基本语法

    声明值和变量

    Scala有两种类型的变量:

    • val:是不可变的(变量的引用不可变),在声明时就必须被初始化,而且初始化以后就不能再赋值;

    • var:声明的时候需要进行初始化,初始化以还可以再对其赋值

    1. scala> val str = "hello world"
      str: String = hello world
    2. scala> val str2 : String = "hello world"
      str2: String = hello world
    3. scala> val str3:java.lang.String = "hello world"
      str3: String = hello world
    scala> import java.lang._ //导入Java.lang包里面所有的东西
    import java.lang._
    scala> println(str)
    hello world
    scala> str = "hello world"
    <console>:8: error: reassignment to val
          str = "hello world"
              ^
    scala> var price = 6.3
    price: Double = 6.3
    scala> price = 9.9
    price: Double = 9.9
    scala> 2*9+4
    res0: Int = 22

    基本数据类型和操作

    • Scala的数据类型包括:Byte、Char、Short、Int、Long、Float、Double和 Boolean

    • 和Java不同的是,在Scala中,这些类型都是“类”,并且都是包scala的 成员,比如,Int的全名是scala.Int。对于字符串,Scala用java.lang.String 类来表示字符串

    值类型描述
    Byte 8位有符号补码整数, 数值区间为 -128 到 127
    Short 16位有符号补码整数。数值区间为 -32768 到 32767
    Int 32位有符号补码整数。数值区间为 -2147483648 到 2147483647
    Long 64位有符号补码整数。数值区间为 -9223372036854775808 到 9223372036854775807
    Float 32 位, IEEE 754标准的单精度浮点数
    Double 32 位 IEEE 754标准的单精度浮点数
    Char 16位无符号Unicode字符, 区间值为 U+0000 到 U+FFFF
    String 字符序列
    Boolean true或false
    • 字面量(literal)

    scala> val i = 123
    i: Int = 123
    scala> val i = 3.12
    i: Double = 3.12
    scala> val i = 12l
    i: Long = 12
    scala> val i = 2.1f
    i: Float = 2.1
    scala> val i = 'a'
    i: Char = a
    scala> val i = "hello"
    i: String = hello
    操作符
    • 在Scala中,可以使用加(+)、减(-) 、乘(*) 、除(/) 、余数(%)等操作 符,而且,这些操作符就是方法。

    • 例如:5 + 3和(5).+(3)是等价的

    scala> val sum = 5 + 3
    sum: Int = 8
    scala> val sum = (5).+(3)
    sum: Int = 8
    • 和Java不同,在Scala中并没有提供++和--操作符,当需要递增和递减时,可以 采用如下方式表达:

    scala> var i = 8
    i: Int = 8
    scala> i += 1
    scala> print(i)
    9
    富包装类
    • 对于基本数据类型,除了以上提到的各种操作符外,Scala 还提供了许多常用运算的方法,只是这些方法不是在基本类 里面定义,还是被封装到一个对应的富包装类中

    • 每个基本类型都有一个对应的富包装类,例如Int有一个 RichInt类、String有一个RichString类,这些类位于包 scala.runtime中

    • 当对一个基本数据类型的对象调用其富包装类提供的方法, Scala会自动通过隐式转换将该对象转换为对应的富包装类 型,然后再调用相应的方法。例如:3 max 5

    Range

    • 在执行for循环时,我们经常会用到数值序列,比如,i的值 从1循环到5,这时就可以采用Range来实现

    • Range可以支持创建不同数据类型的数值序列,包括Int、 Long、Float、Double、Char、BigInt和BigDecimal等

    • 创建一个从1到5的数值序列,包含区间终点5,步长为1

    scala> 1 to 5
    res4: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5)
    scala> 1.to(5)
    res7: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5)
    • 创建一个从1到5的数值序列,不包含区间终点5,步长为1

    scala> 1 until 5
    res8: scala.collection.immutable.Range = Range(1, 2, 3, 4)
    • 创建一个从1到10的数值序列,包含区间终点10,步长为2

    scala> 1 to 10 by 2
    res9: scala.collection.immutable.Range = Range(1, 3, 5, 7, 9)
    • 创建一个Float类型的数值序列,从0.5f到5.9f,步长为0.3f

    scala> 0.5f to 5.9f by 0.8f
    res10: scala.collection.immutable.NumericRange[Float] = NumericRange(0.5, 1.3, 2.1, 2.8999999, 3.6999998, 4.5, 5.3)

    控制台输入输出语句

    • 为了从控制台读写数据,可以使用以read为前缀的方法, 包括:readInt、readDouble、readByte、readShort、 readFloat、readLong、readChar readBoolean及 readLine,分别对应9种基本数据类型,其中前8种方法没 有参数,readLine可以不提供参数,也可以带一个字符串 参数的提示

    • 所有这些函数都属于对象scala.io.StdIn的方法,使用前 必须导入,或者直接用全称进行调用

    scala> import io.StdIn._
    import io.StdIn._
    scala> var i = readInt()
    67
    i: Int = 67
    scala> var i = readFloat()
    6
    i: Float = 6.0
    scala> var i = readBoolean()
    false
    i: Boolean = false
    scala> var str = readLine("please input your name:")
    please input your name:
    please input your name:str: String = xiao bo
    • 为了向控制台输出信息,常用的两个函数是print()和println(), 可以直接输出字符串或者其它数据类型

    • Scala还带有C语言风格的格式化字符串的printf()函数

    scala> val a = 25
    a: Int = 25
    scala> val f = 53.0
    f: Double = 53.0
    scala> printf("my name is %s. I am %d years old and %.1f Kg. " , "xiao bo" , a , f)
    my name is xiao bo. I am 25 years old and 53.0 Kg.
    • print()、println()和printf() 都在对象Predef中定义,该对象默 认情况下被所有Scala程序引用,因此可以直接使用Predef 对象提供的方法,而无需使用scala.Predef.的形式。

    读写文件

    • Scala需要使用java.io.PrintWriter实现把数据写入到文件

    scala> import java.io.PrintWriter
    import java.io.PrintWriter
    scala> val out = new PrintWriter("output.txt")
    out: java.io.PrintWriter = java.io.PrintWriter@3db663d0
    scala> for (i <- 1 to 5) out.println(i)
    scala> out.close
    • 如果我们想把文件保存到一个指定的目录下,就需要给出文件路径

    val out = new PrintWriter("/usr/local/scala/output.txt")
    • 可以使用Scala.io.Source的getLines方法实现对文件中所 有行的读取

    scala> import scala.io.Source
    import scala.io.Source
    scala> val input = Source.fromFile("output.txt")
    input: scala.io.BufferedSource = non-empty iterator
    scala> val lines = input.getLines
    lines: Iterator[String] = non-empty iterator
    scala> for (line <- lines) println(line)
    1
    2
    3
    4
    5

    异常处理

    • Scala不支持Java中的“受检查异常”(checked exception), 将所有异常都当作“不受检异常”(或称为运行时异常)

    • Scala仍使用try-catch结构来捕获异常

  • 相关阅读:
    Mac上的抓包工具Charles[转载]
    js 实现自动调出键盘
    Mac下git安装(使用Xcode)
    weinre远程调试
    Css Sprite Demo
    sublime 常用快捷键
    css 盒子模型 以及 box-sizing属性
    jquery中bind,live,delegate,on的区别
    模拟实现库函数的atoi、atof和itoa
    常见排序算法
  • 原文地址:https://www.cnblogs.com/zxbdboke/p/10466215.html
Copyright © 2011-2022 走看看