Chapter 05 《Basic Types and Oper

作者: liqing151 | 来源:发表于2018-06-12 16:29 被阅读0次
    基础类型

    Byte,Int,Long,Short,Char成为整数类型,加上Double,Float称为数值类型。Scala在编译的时候可以将Scala中的值类型转换为Java中的基本类型。


    字面量
      1. 字符串字面量:Scala使用"""来表示原生字符串。可以包含任意的特殊字符。
      1. 符号字面量:语法为'identident是标识符,会被映射称为scala.Symbol的实例,Symbo("ident")。经常被用在动态类型的语言中用来当做标识符的场合。

    字符串插值
      1. 在字符串字面量中插入表达式,是编译器通过重写代码实现的。
      1. 有常见的s插值器,会对内嵌的每个表达式求值,对结果使用toString方法。使用$开始表示一个表达式。
    val s="This is ${7+8}" 
    

    还有raw插值器和f插值器。raw类似于s,但不识别转义字符。f可以使用printf的风格来进行格式化的输出数据。

    scala> f"${math.Pi}%.5f"
    res1: String = 3.14159
    

    将格式化的指令放在表达式之后,使用java.util.Formatter中给出的语法。


    操作符表示法
      1. Scala中,任何方法都可以是操作符。操作符的表示方法为object method para或者object method (para1,para2),这种表示方法也成为中缀操作符。这里的前中后指的是操作符的位置。
      1. -7是前缀表达式,调用的方法名称为unary_加上操作符,前者的调用方法就是(7).unary_-,可用于前缀表达式中的前缀操作符也是有限的,只有+,-,!,~,别的符号都不可以的。
      1. 7 toLong是后缀表达式,后缀表达符指的是不接受参数而且在调用的时候没有圆括号的方法。

    对象相等性

    ==在大部分场合都能返回所需要的相等性比较结果。先检测左侧是否为null,如果不是,则调用equals方法,目前的实现是基于内容的情况下进行实现。不检测右侧对象是否为null


    操作符优先级和结合性

    优先级决定了计算表达式的顺序

    • Scala中并不存在真正的操作符,仅仅是使用方法的一种表现形式。Scala中使用方法名的首字母来判断优先级。
    Name
    * / %
    + -
    :
    = !
    < >
    &
    ^
    |
    (all letters)
    (all assignment operators)
    • 赋值操作符以=(*=)结尾,而且不是比较操作符<=, >=, ==, or !=,它们的优先级和=一样。*=的优先级就比+要更低。

    结合性确定了操作符的分组。

    • 结合性由操作符的最有一个字符决定。以:结尾的在右侧操作元上调用方法,其余的则在左侧操作元上调用。a ::: b ::: c = a ::: (b ::: c)但是操作元都是从左到右被求值的。
    a ::: b = { val x = a; b.:::(x) }
    

      a计算出来之后传给b当做参数。


    富包装类
    • 本章的所有基础类型,在隐式转换的辅助下,都对应着一个富包装类。Byte => scala.runtime.RichByte

    相关文章

      网友评论

        本文标题:Chapter 05 《Basic Types and Oper

        本文链接:https://www.haomeiwen.com/subject/mjaleftx.html