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

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

开发者学堂课程【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。

相关文章
|
6月前
|
存储 Kotlin
Kotlin中布尔类型、字符类型、字符串类型和数组类型
Kotlin中布尔类型、字符类型、字符串类型和数组类型
|
3月前
|
前端开发 JavaScript
前端基础(四)_数据类型的强制转换
本文探讨了JavaScript中数据类型的强制转换方法,包括将其他类型转换为Number类型(使用`Number`函数)、转换为String类型(使用`toString`方法或`String`函数)、以及转换为Boolean类型(使用`Boolean`函数)。同时,文章还讨论了`parseInt`和`parseFloat`函数用于从字符串中解析出整数或浮点数,以及`isNaN`函数用于检测一个值是否是非数字。
29 2
前端基础(四)_数据类型的强制转换
|
4月前
|
JavaScript 前端开发
值类型(基本类型)
【8月更文挑战第26天】
31 4
|
存储 Go
Go 语言的基础数据类型:整数类型、浮点数类型、布尔类型、字符串类型等
Go 语言的基础数据类型:整数类型、浮点数类型、布尔类型、字符串类型等
72 0
Go 语言的基础数据类型:整数类型、浮点数类型、布尔类型、字符串类型等
|
7月前
|
前端开发 Java Spring
基本数据类型,特殊数据类型-和字符串自动转换
基本数据类型,特殊数据类型-和字符串自动转换
70 0
|
Python
Python编程 数值类型 布尔类型
Python编程 数值类型 布尔类型
298 0
3、类型转换(强制转换、自动转换、与或非)
3、类型转换(强制转换、自动转换、与或非)
141 0
3、类型转换(强制转换、自动转换、与或非)
|
Java 编译器 Scala
值类型的强制转换|学习笔记
快速学习值类型的强制转换。
值类型的强制转换|学习笔记
|
存储 Java Go
值类型和引用类型|学习笔记
快速学习值类型和引用类型。
111 0
值类型和引用类型|学习笔记
|
SQL 关系型数据库 MySQL
类型隐式转换导致的?No,并不是
类型隐式转换导致的?No,并不是
122 0
类型隐式转换导致的?No,并不是