Scala 整型|学习笔记

简介: 快速学习 Scala 整型。

开发者学堂课程【Scala 核心编程-基础Scala 整型】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/609/detail/8892


Scala 整型

 

目录:

一、Scala 数据类型列表

二、整型的类型

三、整型的使用细节

 

一、Scala 数据类型列表

数据类型

描述

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到UFFFF

String

字符序列

Boolean

true或false

Unit

表示无值,和其他语言中void等同。用作不返回任何结果的方法的结果类型。Unit只有一个实例值,写成()。

Null

null

Nothing

Nothing类型在Scala的类层级的最低端;它是任何其他类型的子类型。

Any

Any是所有其他类的超类

AnyRef

AnyRef类是Scala里所有引用类(reference class)的基类

表格中这些数据类型是最常用的。

比如,Byte,表示一个整数,是八位有符号位的整数,范围是-128到127。

特别需要注意的是 Unit。

Unit 类型,在 Scala 中表示是没有返回值,它等同于 void,所以 unit 只有一个实例值,就是(),这个小括号等价于以前的 void,看到小括号就代表是 Unit 只有一个值。

Nothing 是 Scala 类层级的最低端,是任何其他类型的子类型。

如果需要构建一种数据能够交给任何变量或函数,可以把它做成 Nothing 数据类型。如:为了让异常可以不停的往上抛,就把异常做成 Nothing 类型。

Any 是所有其他类的超类。可以回想数据类型图。

AnyRef 是所有引用类型。

 

二、整型的类型

Scala 的整数类型就是用于存放整数值的,比如12,30,3456等等

1、整型的数据类型有:

数据类型

描述

Byte[1]

8位有符号补码整数。数值区间为-128到127

Short[2]

16位有符号补码整数。数值区间为-32768到32767

Int[4]

32位有符号补码整数。数值区间为-2147483648到2147483647

Long[8]

64位有符号补码整数。数值区间为-9223372036854775808到9223372036854775807=2 的(64-1)次方-1

整型的数据类型有 Byte/Short/Int/Long 这四个。

在 Long[8]中,为什么是数值区间为-9223372036854775808到9223372036854775807=2 的(64-1)次方-1 的范围?

在 Int[4]中,是四个字节表示一个 int,它的范围,为什么是-2147483648到2147483647?

建议再去学习老师讲的二进制,要把一个数的原码、补码、反码学明白,再复习一次。整体理解计算机的运行原理。

在计算机里面有没有减法?没有。因为加一个负数,就代表减去一个数。所以,这里的负数要比正数多一个。

2、二进制实例说明

32位有符号补码整数。数值区间为-2147483648 到2147483647

[符号位 01位]

比如,有个32位,第一位是符号位,后面就是值,01位。

0表示正数。1表示负数。

最大的正数是:01111111 11111111 11111111 11111111

=> 2的31次方-1 = 2147483647

最小的负数是:11111111 11111111 11111111 11111111

=> -(2的31次方-1) = -2147483647

理论上是 -2147483647这个值。

实际上为什么负数要多一个,是-2147483648这个值呢?假如:

00000000 00000000 00000000 00000000 => +0

10000000 00000000 00000000 00000000 => -0

这里的+0和-0都是0,在二进制里把-0借过来作为补码转换成更大的一个数。所以,

-(2的31次方-1)= -2147483648

在计算机的二进制里把-0当作一个更大的数记录。

3、案例演示

"min ="+ Byte. MinValue

"max ="+ Long. MinValue

在 Scala 里,提供了一个方法,Byte. MinValue 和 maxValue 可以算出最大值和最小值。

新建 Create New Scala Class,Name 为 TyepDemo03,Kind 为 Object

打开编辑 long 的最大值,

package com.atguigu.chapter02.datatype

object TyepDemo03{

def main(args: Array[String]): Unit = {

println("long的最大值"+Long.MaxValue +"~"+ Long .MinValue )

}

执行结果为:

long 的最大值9223372036854775807~-9223372036854775808

看到最大值和最小值。

对于大数据来说,这个数值根本就不够用。大数据远超这个值。若超过这个数值怎么办?后边会学习专门处理大数据的类。就是用一个数转成一个字符串,然后再进行运算。运算时仍然参考加减乘除的运算规则来处理。

 

三、整型的使用细节

1、Scala 各整数类型有固定的表数范围和字段长度,不受具体 OS 的影响,以保证 Scala 程序的可移植性。

2、Scala 的整型常量/字面量默认为 Int 型,声明 Long 型常量/字面量须后加‘l’或'L'[反编译看]

3、Scala 程序中变量常声明为 Int 型,除非不足以表示大数,才使用 Long

4、案例

var c = 11  //c 就是 Int 类型

println("c=" + c)

var d= 12l  //d 就是 Long 类型或者 var d = 12L

println("d=" + d)

var e = 9223372036854775807

 //正确吗?如何解决

var c = 11 c 等于11的整型。println("c=" + c) 输出11

var d= 12l  把12l 赋值给 d,d 是 long 类型。println("d=" + d)输出为12

9223372036854775807这个数交给 e 类型,行吗?

首先,这个数值肯定大于 Int 的值范围。这里会报错。

var e = 9223372036854775807

这里给值的时候,字面量也是有类型的,默认为 Int 类型。超过范围就会报错。报错的原因并不是 e 的问题,会提示Integer number is out of range for type Int。说明这个数值超过了 Int。可以加一个 L 解决。

打开 object TyepDemo03,继续编辑,给 i、j 赋值

var i = 10  //i 为 Int 类型

var j = 10l  //j 为 Long 长整型

var e = 9223372036854775807l // 9223372036854775807超过 int

……

在数值后面加上 l,即为一个长整型。

相关文章
|
分布式计算 Java 大数据
|
Java Scala 开发者
Scala 下界介绍和应用实例 | 学习笔记
快速学习 Scala 下界介绍和应用实例
Scala 下界介绍和应用实例 | 学习笔记
|
Scala 开发者
Scala 上界介绍和应用实例2 | 学习笔记
快速学习Scala上界介绍和应用实例2
Scala 上界介绍和应用实例2 | 学习笔记
|
Java Scala 开发者
Scala 泛型介绍和应用实例2 | 学习笔记
快速学习 Scala 泛型介绍和应用实例2
Scala 泛型介绍和应用实例2 | 学习笔记
|
Java Scala 开发者
Windows 搭建S cala 开发环境|学习笔记
快速学习 Windows 搭建 Scala 开发环境。
199 0
Windows 搭建S cala 开发环境|学习笔记
|
小程序 Java 编译器
Scala 快速入门|学习笔记
快速学习 Scala 快速入门。
120 0
Scala 快速入门|学习笔记
|
Java Scala 开发者
Scala 接口基本介绍|学习笔记
快速学习 Scala 接口基本介绍。
245 0
Scala 接口基本介绍|学习笔记
|
Scala 开发者
Scala 的继承注意事项|学习笔记
快速学习 Scala 的继承注意事项。
102 0
Scala 的继承注意事项|学习笔记
|
Java Scala 开发者
Scala 的继承快速入门|学习笔记
快速学习 Scala 的继承快速入门。
Scala 的继承快速入门|学习笔记
|
IDE Java 大数据
Scala 插件安装|学习笔记
快速学习 Scala 插件安装。
332 0
Scala 插件安装|学习笔记