java中的类型转换

int和long/double类型的相互赋值

代码示例

	int a =10;
	long b = 20L;
	double d = 12.5;
	a = b;//编译出错,提示可能会损失精度
	a = d;//编译出错,提示可能会损失精度
	a = (int)b;//强制类型转换,将long型转成int型,编译通过
	a = (int)d;//强制类型转换,将double型转成int型,编译通过
	b = a;//编译通过
	d = a;//编译通过

long和double表示的范围比int型都大,所以可以将int赋值给long和double,但不能将long和double赋值给int。
结论:

  1. 不同数字类型的变量之间相互赋值,表示范围小的可以转换为表示范围更大的数据类型,反之则不行
  2. 强制类型转换:可能会出现精度的丢失,例如double类型10.5强制类型转换为int型变为10,小数点后面的部分会被忽略。

int和boolean相互赋值

代码示例:

	int a = 1;
	boolean flg = ture;
	a = flag;
	flg = (boolean)a;
	System.out.println(a)//错误,二者之间不可转换
	System.out.println(b);//错误,提示不兼容类型
  1. 整型int和boolean之间的类型转换是不可以的,boolean和其他的类型也是不可以转换的。因为boolean只有ture 和 false两种类型,和其他的数据类型是互不相干的,不能相互转换。
  2. 强制类型转换不一定成功,互不相干的类型不能随便转换。

字面值常量byte的运算

赋值:
代码示例:

byte a = 100;
byte b = 256;//编译报错,提示,从int型转换到byte可能会有损失

这里呐,我们就要注意,byte表示的数据范围比较小:-128~+127;超过范围就会报错哦!

运算:
代码示例:

byte a = 10;
byte b = 20;
byte c = a + b;//编译出错
byte c = (byte)(a+b);//编译通过
System.out.println(c);

解释出错原因:cpu为了存取数据的速度,他的取值是4个字节4个字节的去取,byte只有一个字节,所以取数据的时候,会提升为4个字节,运行时出错,说变成了int型,避免出错,需要强制类型转换

int和long混合运算

代码示例:

  int a = 1;
  long b = 20;
  //int c = a+b;编译出错,会提示将long转成int会丢失精度
  int c =(int)(a+b);//编译通过,强制类型转换
  long d = a + b;
  System.out.println(c);

结论:如果是int类型和long类型混合运算,得到的结果仍然是long型,如果非得要用int型来接收,就需要强制类型转换。

int和String之间的相互转换

	int a = 10;
	String str = a + "";//int转String
	System.out.println(str); //int转String
	String str2 = String.valueof(a);
	System.out.println(str2);//String转int
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值