【Java学习】基本数据类型变量间的运算规则

1、可以做运算的的基本数据类型有7种,不包含boolean类型。

2、运算规则包括:

自动类型提升

强制类型转换

自动类型提升

规则:当容量小的的变量与容量大的变量做运算时,结果自动转换为容量大的数据类型。

byte\short\char ---> int ---> long ---> float ---> double

说明:此时的容量小或大,并非指占用的内存空间的大小,而是指表示数据的范围的大小。

特殊:

byte、short、char类型的变量之间做运算,结果为int型。

byte b1 = 10;
byte b2 = 11;
short s1 = 12;
short s2 = 13;
//byte、short、char类型的变量之间做运算,结果为int型
//编译不通过
//byet b3 = b1 + b2;
//short s3 = s1 + s2;
//short s3 = s1 + b1;
int i1 = s1 + b1;
char c1 = 'a';
//编译不通过
//char c2 = c1 + b1;
int i2 = c1 + b1;

long型赋值不加后缀L默认为int型

long l1 = 123L;//占用8字节空间
long l2 = 123;//占用4字节空间,不报错,因为把123理解为int型,自动类型提升。

long l3 = 123123123123;//报错,因为把123123123123理解为int型,超出int范围
long l4 = 123123123123L;//不报错,此时的123123123123就是使用8字节空间的long型的值

float型赋值不加后缀F默认为double型 

float f1 = 12.3f;//不报错
float f2 = 12.3;//报错,因为不加F默认double型,不满足自动类型提升(float<double)

整型常量,规定为int型

//整型常量,规定为int型
byte b1 = 10;
byte b2 = b1 + 1;//报错,因为整型常量,规定为int型
int i1 = b1 + 1;

浮点型常量,规定为double型

byte b1 = 10;
double b1 = b1 + 12.3;//浮点型常量,规定为double型

 为什么标识符不能以数字开头? 为了防止硬性规则相互矛盾

//为什么标识符不能以数字开头?
int 123L = 10;
long l1 = 123L;
//为了“自洽”

强制类型转换

 规则:

        1、如果需要将容量大的变量的类型转换为容量小的变量类型,需要使用强制转换。

        2、强制类型转换需要使用强转符()。在()内指明要转换为的数据类型。 

        3、强制类型转换过程中,可能导致精度损失。

double d1 = 12;
int i1 = (int)d1;
//打印结果为12
int i1 = 12;
float f1 = i1;//自动类型提升
System.out.println(f1);//打印结果为12.0

 精度损失类型1:

double d1 = 12.3;
int i1 = (int)d1;
//打印结果为12,截断小数点后的所有

 精度损失类型2:

int i1 = 128;
byte b1 = (byte)i1;
//打印结果为-128

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值