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

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

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

相关文章
|
安全 区块链 数据安全/隐私保护
区块链技术在数字身份认证中的应用与展望
【2月更文挑战第3天】 随着数字化时代的到来,个人身份认证的安全性和便捷性成为了重要的议题。区块链技术作为一种去中心化、不可篡改的分布式账本技术,具有很大潜力用于解决数字身份认证领域的问题。本文将探讨区块链技术在数字身份认证中的应用现状,分析其优势和挑战,并展望未来发展方向。
654 1
|
10月前
|
存储 Java 开发者
Java 中 Set 类型的使用方法
【10月更文挑战第30天】Java中的`Set`类型提供了丰富的操作方法来处理不重复的元素集合,开发者可以根据具体的需求选择合适的`Set`实现类,并灵活运用各种方法来实现对集合的操作和处理。
586 113
30行代码实现一个带UI界面的图片背景移除工具:并附带web网页
人工智能技术正处于蓬勃发展中,移除图片背景的方法众多,涵盖了各式各样的实现途径和模型。然而,这些方法往往在安装和配置环境方面稍显复杂。今天,介绍一种极其简便的方法——大约30行代码,就能实现这一功能。虽然相比之下可能稍显简单,但对于不太苛刻的需求来说,这种方法颇为方便实用。
|
机器学习/深度学习 人工智能 算法
Machine Learning机器学习之统计分析
Machine Learning机器学习之统计分析
|
vr&ar C语言 索引
静态链接和静态库
静态链接和静态库
322 0
|
存储 移动开发 NoSQL
开源代码分析技巧之一——打印调用逻辑
在研究开源代码时,大家或许都有这样的感慨: (1)代码太庞大,少则几万行代码,多则几百万行代码,不知道如何入手; (2)相关的帮助文档有限,很难短时间内理清头绪; (3)有了代码在手,但代码之间的调用相当复杂,一层一层追踪总是理不清调用逻辑顺序。
开源代码分析技巧之一——打印调用逻辑
|
安全 Java Spring
Spring Security笔记:登录尝试次数限制
今天在前面一节的基础之上,再增加一点新内容,默认情况下Spring Security不会对登录错误的尝试次数做限制,也就是说允许暴力尝试,这显然不够安全,下面的内容将带着大家一起学习如何限制登录尝试次数。
1768 0
|
4天前
|
人工智能 运维 安全