发表时间:2022-03-25来源:网络
Java基本数据类型的转换
今天我们来讨论一下java中6种基本数据类型的转换。它们分别是:byte,short,int,long,double,float。
记住一点,数据范围小的类型转换成范围大的类型,是不会出现问题的。但是如果是范围大的数据类型往范围小的类型去转换,就可能会出现问题了。我将6种类型的互转分成30种类型,下面我们将这30种类型都实践一下。每种类型的转换,我这里分4种情况,正数的转换,负数的转换,临界值(最大值和最小值)的转换,边界外的转换,边界内的转换。
byte -> short
// 正数
byte a = 1;
// 负数
byte b = -1;
// 最大值
byte c = 127;
// 最小值
byte d = -128;
System.out.println((short)a); // 1
System.out.println((short)b); // -1
System.out.println((short)c); // 127
System.out.println((short)d); // -128
System.out.println((short)(c+a)); // 128
System.out.println((short)(d+b)); // -129
我们首先看上面的代码块。发现这五种情况的转换,结果都是正确的。这是因为short类型能够表示的范围大于byte类型,所以是不会出现问题。
short -> byte
short a = 1;
short b = -1;
short c = Short.MAX_VALUE; // 32767
short d = Short.MIN_VALUE; // -32768
short f = 128;
short g = -129;
System.out.println((byte)a); // 1
System.out.println((byte)b); // -1
System.out.println((byte)c); // -1
System.out.println((byte)d); // 0
System.out.println((byte)(c+a)); // 0
System.out.println((byte)(d+b)); // -1
System.out.println((byte)f); // -128
System.out.println((byte)g); // 127
我们会发现只有前面两个输出是对的 其他都是错误的。下面我们就来分析一下 为什么会出现这样的情况。
首先来看c(32767)在计算机是怎么存储的。我们都知道计算机存储数据都是按二进制来存储的,因此将c的值转换成二进制就是如图下:

如果是范围大类型转换成范围小的类型,计算机就会采取截取的方式,注意截取是从高位开始的。因为short是2个字节,byte是1个字节,因此被截取之后的结果如下:

提示
截取的时候,计算机是不知道哪一位是用来表示符号位的,因此,截取之后有可能符号位跟截取之前不一致。
截取之后符号位是1。说明截取之后,该数变成了一个负数。在以前的文章里面说过,对于负数,计算机是采用补码的形式进行存储的。那么我们就来推算一下该种数据对应的原码是多少:

最下面的一行就是其对应的原码。所以c的值被强行转换成short之后变成了-1。
下面我们来看一下d(-32768)为什么转成short之后是0?首先我们来看一下计算机是怎么存储这个数的。
-32768转换成二进制是:

从最高位截取,因此就只剩下了8个0,因此转换成10进制就是0。
计支宝app下载v3.1.29 安卓版
142.27MB |商务办公
小小优酷最新版下载v5.4.6 安卓官方版
68.11MB |影音播放
艺图语app下载v3.3.4 安卓免费版
34.33MB |系统工具
爱鸽者手机版下载v3.2.9 安卓版
243.57MB |商务办公
一品威客网接单app(一品众包)下载v2.7.1 安卓最新版
55.01MB |商务办公
诸葛找房网官方版下载v4.8.1.1 安卓最新版
66.6MB |生活服务
皓盘云建最新版下载v9.0 安卓版
53.38MB |商务办公
ris云客移动销售系统最新版下载v1.1.25 安卓手机版
42.71M |商务办公
葫芦侠三楼最新破解版下载v4.4.0.6 安卓版
其它手游葫芦侠7楼破解版免费下载v4.4.0.6安卓最新版
其它手游葫芦侠八楼免费版下载v4.4.0.6安卓版
其它手游葫芦侠3楼破解版免费下载v4.4.0.6安卓手机版
其它手游像素漫斗抱歉,“八神庵”是特指游戏角色的专有名词,不存在符合要求的常用同义词近义词。下载v1.00安卓版
其它手游葫芦侠4楼破解版游戏修改器下载v4.4.0.6安卓免费版
其它手游末日餐厅安卓版下载v1.35安卓版
其它手游葫芦侠十楼免费破解版下载v4.4.0.6安卓版
其它手游葫芦侠8楼最新破解版下载v4.4.0.6安卓版
其它手游