跟着姜少学Java基础编程之二:类型转换
来源:互联网 发布:中科院软件所 编辑:程序博客网 时间:2024/05/21 09:31
本篇主要介绍Java语言中的数据类型转换。
数据类型转换,主要是指不同类型的数据在变量赋值、传递和计算过程中,需要从一种数据类型转变为另外一种数据类型。
主要分为两类:基本数据类型转换和引用数据类型的转换。其中基本数据类型转换,主要是上一篇讲的8种基本数据类型之间的类型转换;引用数据类型的转换,主要是指数组、类对象和接口,此处暂不探讨引用数据类型的转换。基本数据类型转换又分为隐式转换和强制转换。
2.1 隐式转换
隐式类型转换也叫自动类型转换,该类型转换按照如下的方向自动发生转换:byte ->char(short) ->int ->long ->float ->double
注意:
1)整数之间的自动类型转换不会发生精度丢失,但整数自动转换为浮点数,有可能发生精度的丢失。
2)Java的表达式具有提升规则,比如表达式中有一个double型的数据参与运算,最终表达式的值就是double型。
3)byte、char与short参与运算时,各自先转为int型再参与运算。
4)int的直接量可以直接赋值给byte、char和short类型变量,只要不超过其范围即可。
long num1 = 100;//int型数据100自动转为long型赋值给num1 long num2 = 1234567890L; float num3 = num2;//long型数据num2自动转为float System.out.println(num3);//输出结果为1.23456794E9,发生精度丢失 byte num4 = 10; char c1 = 'A'; System.out.println(num4+c1);//输出75,字符A自动转为int型65再参与运算 //byte范围为-128~127,int数值100直接赋给num5不发生错误 byte num5 = 100; byte num6 = 200;//int数值200超出了byte范围,发生编译错误
2.2 强制类型转换
当我们想把double类型转换为int类型时,自动类型转换不能满足我们的要求,此时,我们需要强制类型转换。强制类型转换的语法:
(目的类型)原数据
注意:
1)强制数据类型转换有可能发生精度的丢失。
2)强制转换的数据类型要兼容,并不是任何数据类型之间都可以强制转换
int num7 = (int)10.5;//double型数据10.5强制转为int型,舍弃小数 System.out.println(num7);//输出10 byte num8 = (byte)100L;//该强制类型转换没有精度丢失,因为100未超btye范围 byte num9 = (byte)200L;//输出-56,因为200L强制转为byte丢失精度 int num10 = (int)true;//编译出错,boolean数据与int等数据类型不兼容,不能强制转换
不管是自动类型转换,还是强制类型转换,如果可能发生类型转换,就要考虑到丢失精度的可能性,以防止更改了期望的运算结果,造成不必要的损失。
下一篇我们介绍变量相关的知识。
- 跟着姜少学Java基础编程之二:类型转换
- 跟着姜少学Java基础编程之三:变量
- 跟着姜少学Java基础编程之四:运算符
- 跟着姜少学Java基础编程之五:Scanner、Random、String
- 跟着姜少学Java基础编程之八:循环结构
- 跟着姜少学Java基础编程之九:数组
- 跟着姜少学Java基础编程之十:方法
- 跟着姜少学Java基础编程之一:数据类型
- 跟着老毕学Java之基础篇(二)
- 跟着姜少学Java基础编程之六:选择结构之if分支
- 跟着姜少学Java基础编程之七:选择结构之switch
- java基础之类型转换
- Java基础之类型转换
- java基础之类型转换
- 跟着姜少学Java基础编程之十一:面向对象-类与对象
- 跟着姜少学Java基础编程之十二:面向对象-构造方法
- 跟着姜少学Java基础编程之十三:面向对象-成员方法
- Java基础之switch类型转换
- 170907_Spring英文文档阅读(三)_2.2 Data Access/Integration_spring-oxm
- eclipse js jsp 卡怎么办,解决办法
- 设计模式之模板方法
- 阿里大鱼短信平台错误解决
- 数字加密(PAT-1048)
- 跟着姜少学Java基础编程之二:类型转换
- Java 并发 详解
- vue 项目打包时样式及背景图片路径找不到
- WinForm AutoComplete 输入提示、自动补全
- ajax相关
- 透明度渐变
- c3p0(数据库连接池)私人学习笔记
- iOS 项目中SDK的开发
- 析测结Trimble TILOS v9.0 1CD