JAVA数据类型的转换及数据的原反补三码

一、自动类型转换/隐式转换

规律一:小的类型自动转化为大的类型
short s = 7;
long l = s;

long l = 500; // 500是一个整数,整数默认为int,int的范围比long小,所以可以自动转换

float f = 56.71F;
double d = f;

int i = 300;
double d = i;
规律二:整数类型可以自动转化为浮点类型,可能会产生舍入误差
int i = 500;
float f = i; // i是int类型,int的取值范围比float小,所以int可以自动转化为float

long l = 259L;
float f = l;

float f = -25; // -25是整数

规律三:字符可以自动提升为整数
char c = ‘a’;
int i = c;
在这里插入图片描述

二、强制类型转换/显式转换规律

规律一:当把大的类型转化为小的类型的时候,因为补码的换算问题,所以可能会产生一些想不到数据
double d = 6.4;
int i = (int)d;
规律二:小数在转化为整数的时候是舍弃小数位

三、数据的原反补三码

1.数据类型的最高位是符号位 — 如果最高位是0,则表示一个正数;如果最高位是1,则表示一个负数。
2. 计算机中存储的是数据的补码,计算的也是数据的补码,直接计算出来的二进制数字是数据的原码。
如果是正数,那么原反补三码一致
int i = 7;
00000000 00000000 00000000 00000111 原码
00000000 00000000 00000000 00000111 反码
00000000 00000000 00000000 00000111 补码
如果是负数,那么反码是在原码的基础上,最高位不变,其余位0和1互换;补码是在反码的基础上+1
int j = -9;
10000000 00000000 00000000 00001001 原码
11111111 11111111 11111111 11110110 反码
11111111 11111111 11111111 11110111 补码
注意:规定用-0表示当前类型的最小值

  1. byte/short/char在运算的时候自动提升为int
  2. 整型在运算的时候保持类型不变
  3. 小类型和大类型运算,结果一定是大类型
  4. 任意整数/0 - ArithmeticException - 算术异常
    任意非零数字/0.0 任意非零小数/0 - Infinity - 无穷大
    0/0.0 0.0/0.0 0.0/0 - NaN - Not a Number - 非数字

四、综合的看一下,在类型转换的时候需要遵循哪些规则?

第一条:八种基本数据类型中,除 boolean 类型不能转换,剩下七种类型之间都可以进行转换;

第二条:如果整数型字面量没有超出 byte,short,char 的取值范围,可以直接将其赋值给byte,short,char 类型的变量;

第三条:小容量向大容量转换称为自动类型转换,容量从小到大的排序为:
byte < short(char) < int < long < float < double,其中 short和 char都占用两个字节,但是char 可以表示更大的正整数;

第四条:大容量转换成小容量,称为强制类型转换,编写时必须添加“强制类型转换符”,但运行时可能出现精度损失,谨慎使用;

第五条:byte,short,char 类型混合运算时,先各自转换成 int 类型再做运算;

第六条:多种数据类型混合运算,各自先转换成容量最大的那一种再做运算;

所有的笔试题都超不出以上的6条规则。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值