值类型的自动转换|学习笔记

简介: 快速学习值类型的自动转换。

开发者学堂课程【Scala 核心编程-基础:值类型的自动转换】学习笔记,与课程紧密联系,让用户快速学习知识。

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


值类型的自动转换

 

目录

一、介绍

二、数据类型按精度(容量)大小排序为

三、案例演示

四、自动类型转换细节说明

 

本节课讲解值类型隐式转换。

 

一、 介绍

当 Scala 程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型,这个就是自动类型转换(隐式转换)。

//自动类型的转换在 java 中也含有,Scala 中自动类型的转换基本与 java 是一致的。

二、 数据类型按精度(容量)大小排序为

image.png

//注意:short 和 byte 与 char 之间没有自动转换关系

三、 案例演示

演示一下基本数据类型转换的基本情况。

例子:

image.png

var a : Int = ‘c’  //将低精度的 char 赋予一个 int

var d : Double = 80  //int 赋予 Double

四、 自动类型转换细节说明

1. 有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据共型,然后再进行计算。

//举例:5.6 + 10 =》double

2. 当把精度(容量)大的数据类型赋值给精度(容量小)的数据类型时,就会报错,反之就会进行自动类型转换。

//精度大的数据类型不会自动转换为精度小的数据类型,而精度小的数据类型可以自动转化为精度大的数据类型

新建 chapter02.detaconvert,新建 Demo01Kind 选择 Object,代码如下:

packge com.atguigu.chapter02.dataconvert

3. object Demo01{

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

var 01 = 10

var 02 = 1.1

var n3 = n1+n2

当 n1+n2完毕后,可以发现 n3的数据类型已经变为了 double 类型

image.png

如果给 n2加上 f,就可以看到 n3变为了 float 类型

image.png

4. (byte,short)和 char 之间不会相互自动转换。

//如果把一个 byte 给一个 char,那么它们之间会报错的

例子:

var b : Byte = 10

var c : Char = b

//(byte,short)和 char 之间不会自动的转换类型

var n4: Byte = 10  //给 n4赋予类型为 Byte,值为10

var char1: Char = n4  //错误:因为 byte 不能自动转换 char

//如果将 char 赋予给 n4,那么就会报错

image.png

如果必须转换类型,则需要明确指示:

var char1 : Char = n4.toChar  //不会报错

5. byte,short,char 他们三者可以计算,在计算时首先转换为 int类型。

举例:

var b : Byte = 10  //将10赋予 Byte,正确

var c : Char = 90  //将90赋予 Char,正确

var s : Short = b+c  //报错,不能把 int 给 Short

var s2 : Short = 10 + 90  //报错,因为10+90是 int 类型且参与运算了,就会生成输出类型。原因为 int 不能给 short

var s3 : Short = 100  //正确,可以把100直接给 short

6. 自动提升原则,表达式结果的类型自动提升为操作数中最大的类型。

//注意:第四点与第一点容易造成冲突,如 byte 和 short 相加,由于 short 精度高,理论上应该转换为 short,但是第四点应该当做是个特例,可以认为运算最低的精度是 int。

相关文章
|
5天前
|
存储 Kotlin
Kotlin中布尔类型、字符类型、字符串类型和数组类型
Kotlin中布尔类型、字符类型、字符串类型和数组类型
9 1
|
15天前
|
存储 JSON 关系型数据库
|
2月前
|
存储 C语言
初识数据类型
本文介绍了编程中的几种基本数据类型,包括`char`、`int`、`float`、`double`和`_Bool`。`char`用于存储单个字符,如`'a'`;`int`用于整数,如`10`;`float`和`double`分别代表单精度和双精度浮点数;`_Bool`是布尔类型,表示真假,值为`true`或`false`。在C语言中,0被视为假,非0视为真。示例代码展示了这些数据类型的使用方法。
23 3
|
2月前
|
存储 C#
深入C#数据类型
深入C#数据类型
|
2月前
|
存储
C数据类型
C数据类型。
18 1
|
12月前
|
C#
【C#视频】数据类型
【C#视频】数据类型
|
2月前
|
前端开发 Java Spring
基本数据类型,特殊数据类型-和字符串自动转换
基本数据类型,特殊数据类型-和字符串自动转换
52 0
|
Python
Python编程 数值类型 布尔类型
Python编程 数值类型 布尔类型
275 0
3、类型转换(强制转换、自动转换、与或非)
3、类型转换(强制转换、自动转换、与或非)
113 0
3、类型转换(强制转换、自动转换、与或非)
|
Java 编译器 Scala
值类型的强制转换|学习笔记
快速学习值类型的强制转换。
72 0
值类型的强制转换|学习笔记