第四章数据类型与操作符

1.数据类型

数据类型描述
Byte8位有符号补码整数。数值区间为 -128 到 127
Short16位有符号补码整数。数值区间为 -32768 到 32767
Int32位有符号补码整数。数值区间为 -2147483648 到 2147483647
Long64位有符号补码整数。数值区间为 -9223372036854775808 到 9223372036854775807
Float32 位, IEEE 754 标准的单精度浮点数
Double64 位 IEEE 754 标准的双精度浮点数
Char16位无符号Unicode字符, 区间值为 U+0000 到 U+FFFF
String字符序列
Booleantrue或false
Unit表示无值,和其他语言中void等同。用作不返回任何结果的方法的结果类型。Unit只有一个实例值,写成()。
Nullnull 或空引用
NothingNothing类型在Scala的类层级的最底端;它是任何其他类型的子类型。
AnyAny是所有其他类的超类
AnyRefAnyRef类是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" );
   }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值