美文网首页
第四章数据类型与操作符

第四章数据类型与操作符

作者: spark打酱油 | 来源:发表于2022-07-20 09:35 被阅读0次

    1.数据类型

    数据类型 描述
    Byte 8位有符号补码整数。数值区间为 -128 到 127
    Short 16位有符号补码整数。数值区间为 -32768 到 32767
    Int 32位有符号补码整数。数值区间为 -2147483648 到 2147483647
    Long 64位有符号补码整数。数值区间为 -9223372036854775808 到 9223372036854775807
    Float 32 位, IEEE 754 标准的单精度浮点数
    Double 64 位 IEEE 754 标准的双精度浮点数
    Char 16位无符号Unicode字符, 区间值为 U+0000 到 U+FFFF
    String 字符序列
    Boolean true或false
    Unit 表示无值,和其他语言中void等同。用作不返回任何结果的方法的结果类型。Unit只有一个实例值,写成()。
    Null null 或空引用
    Nothing Nothing类型在Scala的类层级的最底端;它是任何其他类型的子类型。
    Any Any是所有其他类的超类
    AnyRef AnyRef类是Scala里所有引用类(reference class)的基类
    AnyVal 所有数值类型的父类

    scala类型层次结构:所有的类型都是从Any继承了, 也就是我们Scala是一种单根继承体系。


    scala中的类型以及操作符绝大多数和Java一样,我们主要来学习

    • 与Java不一样的一些用法
    • scala类型的继承体系
    • 注意下 scala类型与Java的区别
        1. scala中所有的类型都使用大写字母开头
        1. 整形使用 Int 而不是Integer
        1. scala中定义变量可以不写类型,让scala编译器自动推断

    1.1.Scala 基础字面量

    Scala 非常简单且直观。接下来我们会详细介绍 Scala 字面量。

    1.1.1.整型字面量

    整型字面量用于 Int 类型,如果表示 Long,可以在数字后面添加 L 或者小写 l 作为后缀。:
    0
    035
    21
    0xFFFFFFFF
    0777L

    1.1.2.浮点型字面量

    如果浮点数后面有f或者F后缀时,表示这是一个Float类型,否则就是一个Double类型的。实例如下:
    0.0
    1e30f
    3.14159f
    1.0e100
    .1

    1.1.3.布尔型字面量

    布尔型字面量有 true 和 false。

    1.1.4.字符字面量

    在 Scala 字符变量使用单引号 ' '来定义,如下:
    'a'
    '\u0041'
    '\n'
    '\t'
    其中 \ 表示转义字符,其后可以跟 u0041 数字或者 \r\n 等固定的转义字符。

    1.1.5.字符串字面量

    在 Scala 字符串字面量使用双引号 " " 来定义,如下:
    "Hello,World!"

    1.1.6.多行字符串的表示方法

    多行字符串用三个双引号来表示分隔符,格式为:""" ... """。
    实例如下:
    val str= """
    第一章Scala简介
    第二章Scala安装和环境配置
    第三章Scala 基础语法
    第四章数据类型与操作符
    """

    1.1.7.Null 值

    空值是 scala.Null 类型。
    Scala.Null和scala.Nothing是用统一的方式处理Scala面向对象类型系统的某些"边界情况"的特殊类型。
    Null类是null引用对象的类型,它是每个引用类(继承自AnyRef的类)的子类。Null不兼容值类型。

    1.1.8.nothing

    def main(args: Array[String]): Unit = {
    val c = m3(1,0)
    }
    def m3(x:Int, y:Int):Int = {
    if(y == 0) throw new Exception("这是一个异常")
    x / y
    }
    

    问题
    以下代码是否有问题?
    val b:Int = null
    scala会解释报错:
    Null类型并不能转换为Int类型,说明Null类型并不是Int类型的子类, 也就是不是数值
    类型AnyVal的子类

    2.数据类型

    2.1.算数运算符

    类别 操作符
    算术运算符 +、-、*、/、%(加减乘除和取模)
    关系运算符 >、<、==、!=、>=、<=
    逻辑运算符 &&、||、!
    位运算符 &、 || 、^、<<、>>

    Scala 中的运算符, 基本上和Java一样, 除了:

    • scala中没有,++、--运算符
    • 与Java不一样,在scala中,可以直接使用 == 、 != 进行比较,它们与 equals 方法表示一致。而比较两个对象的引用值,使用 eq

    引用官方解释

    final def (arg0: Any): Boolean The expression x  that is
    equivalent to if (x eq null) that eq null else x.equals(that).
    
    final def eq(arg0: AnyRef): Boolean Tests whether the argument
    (that) is a reference to the receiver object (this).
    
    def equals(arg0: Any): Boolean The equality method for reference
    types.
    

    意思就是:
    在对象是null的时候 调用eq, 对象非null 的时候调用equals
    equals 比较值
    eq 比较引用地址
    也就是如果想要判断两个对象的值是否相等的时候, 推荐使用方法, 因
    为如果比较对象为null的时候,用equals会报错的.

    2.2.Scala 转义字符

    下表列出了常见的转义字符:



    0 到 255 间的 Unicode 字符可以用一个八进制转义序列来表示,即反斜线‟\‟后跟 最多三个八进制。
    在字符或字符串中,反斜线和后面的字符序列不能构成一个合法的转义序列将会导致 编译错误。
    以下实例演示了一些转义字符的使用:
    实例

    object Test {
       def main(args: Array[String]) {
          println("Hello\tWorld\n\n" );
       }
    }
    

    相关文章

      网友评论

          本文标题:第四章数据类型与操作符

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