基本数据类型之间的转换

基本数据类型之间的转换

1 基本数据类型的自动转换
规则

Java 在进行赋值或运算时,精度(容量)小的类型自动转换为精度(容量)大的类型

char` > `int `> `long` > `float` > `double
byte` > `short` > `int `> `long` > `float` > `double
注意事项

​ 1有多种类型数据混合运算时,系统会将所有数据转换成容量最大的那种,再进行运算

		int n1 = 10; //ok
		float d1 = n1 + 1.1;//错误 n1 + 1.1 => 结果 double
		double d1 = n1 + 1.1;//正确 n1 + 1.1 => 结果 double 
		float d1 = n1 + 1.1F;//正确 1.1F => 结果  float

​ 2 如若把大精度(容量)数据赋值给小精度(容量)类型,就会报错(小数由于精度原 因,大赋小会丢失精度,必不可用。
​ 但整数大赋小时:1.赋予具体数值时,判断范围。
​ 2.变量赋值时,判断类型。反之进行自动类型转换

	int n1 = 1.1; // 错误 double转为int

​ 3 byte short char 三者不会相互自动转换,但可以计算。计算时首先转化为 int

	int n2 = 1; //  正确
	byte b1 = 10;
	byte b2 = n2; // 错误 int不能转为byte
 	char c1 = b1; // 错误 byte不能转为char

​ 4 boolean 类型不参与自动转换

	boolean pass = true;
	int num100 = pass;// 错误 boolean不能转为int

​ 5 自动提升原则:表达式结果的类型自动提升为操作数中最大的类型

    byte b4 = 1;
    short s3 = 100;
    int num200 = 1;
    double num300 = 1.1F;
    float num500 = b4 + s3 + num200 + num300; // 最大的类型为double,不能赋值给float

2 基本数据类型的强制转换

自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。

使用时加上强制转换符 ( ) ,但可能造成精度降低或溢出

注意事项

1 当进行数据从大到小转换时,用强制转换

2 强制转换只能对最近的操作数有效,往往会使用 ( ) 提升优先级。

int x = 10*3.5+6*1.5; // 编译错误: double -> int 
int x = (int)(10*3.5+6*1.5);// 44.0 -> 44  精度丢失

int m = 100; // ok
char c2 = m; // 错误
char c3 = (char)m; // ok
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值