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

第四章数据类型与操作符

作者: 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" );
   }
}

相关文章

  • JavaScript数据类型

    说到数据类型,首先要说一下与数据类型相关的一个特殊操作符 typeof 。鉴于ECMAScript 是松散类型...

  • JavaScript学习使用

    弱类型的特性# 数据类型 类型转换 typeof 操作符 constructor 操作符 instanceof 操...

  • 第四章数据类型与操作符

    1.数据类型 数据类型描述Byte8位有符号补码整数。数值区间为 -128 到 127Short16位有符号补码整...

  • 深入理解Java的==和equals

    关系操作符== 关系操作符== ,适用于所有的基本数据类型,同时也适用于对象。 == 用于基本数据类型,比较的是数...

  • ES5知识点整理

    基本语法 基本语法包括数据类型,操作符,语句,函数 数据类型 5种简单数据类型(基本数据类型)Undefined、...

  • 高性能MySql

    第四章 schema与数据类型优化 数据类型:1、varchar,字符串列的最大长度比平均长度大和诺,适合用var...

  • Rx转换操作符

    map操作符 被观察者数据源泛型,当发射器的数据类型和观察者数据类型不同时,通过map操作符转换,可以将上游发射的...

  • 从instanceof操作符看懂JavaScript原型链

    instanceof 操作符简介 对于检测基本数据类型,我们会想到用typeof操作符检测;对于引用类型,我们会想...

  • 关于javascript的数据类型和typeof操作符

    关于javascript的数据类型和typeof操作符 1.ECMAScript中有五种简单的数据类型:undef...

  • JavaScript数据类型转换方法总结

    0 查看数据类型 0.1 Typeof() 0.2 instanceof() 可通过 instanceof 操作符...

网友评论

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

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