8、基本数据类型转换(自动转换和强制转换)

基本类型转换

  • 1、自动类型转换
  • 2、强制类型转换

1、自动类型转换

定义:当Java程序在进行赋值或者运算时,精度小的类型会自动转换成精度大的数据类型,这个就是自动类型转换。(自动小转大)
背多芬:
在这里插入图片描述

这里要明确一个概念:高司令当初创建Java的时候规定char 和 byte、short是不能自动转换,所以这是Java语言的规则,我们记住就可以了。
另外,Boolean在Java中只有true和false,没有0/1,所以不参与类型转换。
在long(8字节)可以转换成float(4字节)中,我其实查了一些资料,就我个人理解:应该是因为float采用科学计数法,本身精度就大,所以能自动转换。(感兴趣的可以自己去查一下哈,我不太感兴趣,所以直接背喽😁)

使用细节:
①有多种类型数据一起进行混合运算时,系统首先自动将所有数据转换成容量最大的数据类型,然后再进行计算。

int n1 = 10;
float f1 = n1 + 1.1F;		 //float
System.out.println("f1 = "+f1);    
double d1 = n1 + 1.1;		//double
System.out.println("d1 = "+d1);

结果:
在这里插入图片描述
分析一下: 第二条语句中参与运算的有int 和 float,所以 int类型 先转换成 float类型,再进行运算(注意:此处 1.1 一定要加 ‘ F ’,不然系统会默认为double,然后报错,所以变量最终的类型精度要大于或等于运算结果的精度),第四条语句同上。

 
②当我们把精度(容量)大的数据类型赋值给精度(容量)小的数据类型时,就会报错,反之就会进行自动类型转换。
小  ----自动类型转换---->   大
大  ----强制类型转换---->   小

③、(byte,short)和char之间不会自动转换。
在这里插入图片描述

 
④byte,short,char三者任意可以进行计算,在计算时首先转换为int类型。

char c1 = 1;
byte b1 = 1;
byte b2 = 2;
short s1 = 1;int x = c1 + b1;
System.out.println("c1 + b1 = " + x);int y = b1 + b2;
System.out.println("b1 + b2 = " + y);long z = c1 + b1 + s1;
System.out.println("c1 + b1 + s1 = " + z);

结果:
在这里插入图片描述
我们可以从溢出角度理解,假设两个byte类型、赋值为127的变量相加,那么结果是254,而byte是一个字节,范围是(-128~127),如果仍然存进byte类型,就会溢出。同理,这三者任意搭配都有可能出现溢出的情况,因此直接拿精度(容量)较大的int类型去装它们,可以避免这种情况的发生。

⑤Boolean类型不参与转换。
前面提过了,Java中Boolean只有true和false的取值,没有0/1,所以不能自动转换。
在这里插入图片描述

2、强制类型转换

定义:自动类型转换的逆过程,将容量大的数据类型转换成容量小的数据类型。使用时要加上强制转换符(),eg:(int),(float)…但可能造成精度降低或溢出,格外要注意。

上代码:
在这里插入图片描述
结果:
在这里插入图片描述

分析一下:
Ⅰ、(int)1.9很明显损失了精度,不赘述了。
Ⅱ、用(byte)把 int类型进行强制转换,系统首先会判断这个将要存进的数的大小,若在byte精度范围里面,则可以存进去;若超出了精度范围,就会出现第三种情况,造成数据溢出。(其他强制转换也是如此。)

使用细节:
①强制符号()只针对最近的操作数有效,往往会使用小括号提升优先级。
在这里插入图片描述

 
来练习一下吧:

short s = 12;		//ok
s = s - 9;			//错误,int -> shortbyte b = 10;		//ok
b = b + 11;			//错误,int -> bytechar c = 'a';		//ok
int i = 16;			//ok
float d = .314F;	//ok
double result = c + i + d;		//ok, float -> double

本人正在B站跟着韩顺平老师学Java(非广告),所以做个笔记仅供学习,文章虽标为原创,但大体思路是韩顺平老师的授课思路,在此基础上加上了自己的理解,不喜勿喷哦。
大家一起学,一起进步!!
各位宝子们如果觉滴还不错的话,可以点个赞 or 收个藏 or 打个赏哦,佛系博主一个。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/834365.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【二维数组】

目录 作业 对比&#xff1a; 结果&#xff1a; 二维数组 二维数组的初始化 作业 作业 #define max(a,b)(a>b)?a:b #include<stdio.h> int main() {int x, y,c;scanf("%d %d", &x,&y);cmax(x, y);printf("%d", c);return 0; } 对比…

深入理解Django:中间件与信号处理的艺术

title: 深入理解Django&#xff1a;中间件与信号处理的艺术 date: 2024/5/9 18:41:21 updated: 2024/5/9 18:41:21 categories: 后端开发 tags: Django中间件信号异步性能缓存多语言 引言 在当今的Web开发领域&#xff0c;Django以其强大的功能、简洁的代码结构和高度的可扩…

数据大小端格式

数据大小端格式描述了存储在计算机内存中多字节数据的字节顺序。在小端&#xff08;Little Endian&#xff09;格式中&#xff0c;低位字节存储在起始地址&#xff0c;高位字节存储在后续地址&#xff1b;而在大端&#xff08;Big Endian&#xff09;格式中&#xff0c;高位字节…

刘润-如何高效学习

摘自刘润老师的如何高效学习 概念–搭建认知之树 搭建认知之树&#xff1a;通过普遍性知识的目录和初步阅读&#xff0c;总结一个框架&#xff0c;首先实现基本认知。丰富认知之树&#xff1a;根据基本认知&#xff0c;逐渐丰满这棵树&#xff0c;把知识挂到树上。就比如像须鲸…

小丑的身份证和复印件 (BFS + Floyd)

本题链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 题目&#xff1a; 样例&#xff1a; 输入 2 10 (JOKERjoke #####asdr) 输出 12 思路&#xff1a; 根据题意&#xff0c;要求最短时间&#xff0c;实际上也可以理解为最短距离。 所以应该联想到有关最短距离的算法&…

开源项目介绍-02 Aubio【1】环境配置和使用 @ Ubuntu + Pycharm + Python

前言&#xff1a; aubio 是一组算法和工具&#xff0c;用于标记和变换音乐和声音。它扫描或监听音频信号&#xff0c;并尝试识别音乐事件。例如&#xff0c;当鼓被击打时&#xff0c;它能检测到音符的频率&#xff0c;或者一个有节奏的旋律的节拍是多少。 aubio 的功能包括&a…

面向过程的思想

传统的面向过程的编程思想总结起来就八个字——自顶向下&#xff0c;逐步细化&#xff01; → 将要实现的功能描述为一个从开始到结束按部就班的连续的“步骤” → 依次逐步完成这些步骤&#xff0c;如果某一个步骤的难度较大&#xff0c;又可以将该步骤再次细化为若干个子步…

华纳云:怎么在宝塔面板中配置ssl证书?

在宝塔面板中配置SSL证书相对简单&#xff0c;以下是一般的步骤&#xff1a; 1.登录宝塔面板&#xff1a;使用您的用户名和密码登录到您的宝塔面板。 2.选择网站&#xff1a;在宝塔面板的首页&#xff0c;找到您要配置SSL证书的网站&#xff0c;并点击进入该网站的管理界面。 3…

GPT问答SAP BW

以下回答由GPT-3.5回答,仅供参考. 这个AI工具超好用&#xff0c;每天都有免费额度&#xff0c;写文章、总结长视频、画图等&#xff0c;都几秒搞定&#xff01;快去下载Sider Chrome或Edge插件&#xff0c;薅羊毛&#xff01; https://sider.ai/invited?c43b289bf2616575daecf…

力扣数据库题库学习(5.7日)--1757. 可回收且低脂的产品

1757. 可回收且低脂的产品 问题链接&#x1f4a6; 思路分析 编写解决方案找出既是低脂又是可回收的产品编号。 返回结果 无顺序要求 。看示例&#xff1a; 输入&#xff1a; Products 表&#xff1a; ----------------------------------- | product_id | low_fats | recy…

C++面向对象学习笔记一

本文阅读下述文章&#xff0c;顺手记录学习《C面向对象程序设计》✍千处细节、万字总结&#xff08;建议收藏&#xff09;_c面向对象程序设计千处细节-CSDN博客 目录 前言 正文 浅拷贝和深拷贝 向函数传递对象 静态数据成员和静态成员函数 友元 友元函数 1、将非成员函数声明…

基于stm32的spi从机实验HAL库编程

目录 基于stm32的spi从机实验HAL库编程前言业务场景硬件设计接线配置swd接口配置spi配置DMA配置中断配置系统时钟配置工程生成代码写点从机代码上机现象后记本文使用的测试工程 基于stm32的spi从机实验HAL库编程 前言 在微控制器的世界中&#xff0c;串行外设接口(SPI)是一种…

ICode国际青少年编程竞赛- Python-2级训练场-for循环练习2

ICode国际青少年编程竞赛- Python-2级训练场-for循环练习2 1、 for i in range(5):Dev.step(9 - i * 2)Dev.turnLeft()2、 for i in range(3):Spaceship.step(i 1)Spaceship.turnRight()Spaceship.step(i 1)Spaceship.turnLeft()3、 for i in range(4):Dev.step(10 - i…

nuxt2配置代理,解决跨域问题

nuxt配置代理 安装nuxtjs/axios, /nuxtjs/proxy 插件 npm i nuxtjs/axios /nuxtjs/proxy -S在nuxt.config.js中进行配置 modules: ["nuxtjs/axios","nuxtjs/proxy",],// 使用proxyaxios: {proxy: true,},proxy: {"/api": {target: "http:…

接口测试必备技能

接口测试&#xff0c;其实并没有那么可怕&#xff0c;但是作为测试人员也是必不可少的技能。 接口分为&#xff1a;内部接口和外部接口。 内部接口&#xff1a;是浏览器与服务器的接口。这个很容易理解&#xff0c;web开发一般分前端和后端&#xff0c;前端开发人员用html/css…

问题:qt中QSqlQuery::exec: database not open

参考博客&#xff1a;解决QSqlQuery::exec: database not open-CSDN博客 参考博客&#xff1a;QSqlQuery 如何与数据库 QSqlDatabase 关联 保持连接-3YL的博客 发现问题来源于&#xff1a; 当&#xff1a; QSqlDatabase::addDatabase("QSQLITE","自定义连接名…

vue管理系统导航中添加新的iconfont的图标

1.在官网上将需要的图标&#xff0c;加入项目中&#xff0c;下载 2.下载的压缩包中&#xff0c;可以选择这两个&#xff0c;复制到项目目录中 3.如果和之前的iconfont有重复&#xff0c;那么就重新命名 4.将这里的.ttf文件&#xff0c;也重命名为自己的 5.在main文件中导入 6.在…

【Linux 系统】多线程(线程控制、线程互斥与同步、互斥量与条件变量)-- 详解

一、线程概念 线程是进程的一个执行分支&#xff0c;是在进程内部运行的一个执行流。下面将从是什么、为什么、怎么办三个角度来解释线程。 1、什么是线程 上面是一张用户级页表&#xff0c;我们都知道可执行程序在磁盘中无非就是代码或数据&#xff0c;更准确点表述&#xff0…

常见C语言基础说明六:向函数参数传值与取数组元素

一. 简介 前面几篇学习了 C语言中基础问题&#xff0c;文章如下&#xff1a; 常见C语言基础题说明一-CSDN博客 常见C语言基础说明二&#xff1a;位运算问题-CSDN博客 常见C语言基础说明三&#xff1a;static修饰的函数或变量-CSDN博客 常见C语言基础说明四&#xff1a;#…