Java变量的类型转换

变量的类型转换

  在程序中,当把一种数据类型的值赋给另一种数据类型的变量时,需要进行数据类型转换。根据转换方式不同,数据类型可分为两种:自动类型转换、强制类型转换

自动类型转换

  也称为隐式类型转换,指两种数据类型在转换的过程中不需要显示地进行声明。此情况适用于当把一个类型取值范围小的数值直接赋给另一个取值范围大的数据类型变量

数据类型取值范围大小

类型名占用空间取值范围
byte8位(一字节) ( − 2 7 , 2 7 − 1 ) (-2^{7},2^{7}-1) (27,271)
short16位(二字节) ( − 2 15 , 2 15 − 1 ) (-2^{15},2^{15}-1) (215,2151)
int32位(四字节) ( − 2 31 , 2 31 − 1 ) (-2^{31},2^{31}-1) (231,2311)
long64位(八字节) ( − 2 63 , 2 63 − 1 ) (-2^{63},2^{63}-1) (263,2631)

浮点数类型取值范围大小

类型名占用空间取值范围
float32位(四字节) ( 1.4 E − 45 , 3.4 E + 38 ) , ( − 1.4 E − 45 , − 3.4 E + 38 ) (1.4E-45,3.4E+38),(-1.4E-45,-3.4E+38) (1.4E45,3.4E+38),(1.4E45,3.4E+38)
double64位(八字节) ( 4.9 E − 324 , 1.7 E + 308 ) , ( − 4.9 E − 324 , − 1.7 E + 308 ) (4.9E-324,1.7E+308),(-4.9E-324,-1.7E+308) (4.9E324,1.7E+308),(4.9E324,1.7E+308)

  Java中支持不同数据类型之间的自动转换,如图:

byte
short
int
char
long
float
double

例如:

byte b = 3;
int x = b; //程序把byte类型的变量b转换成了int类型,无需特殊说明
double y = x; //将int类型的变量x转换成了double类型,无需特殊说明

强制类型转换

  也称为显示式类型转换,指的是两种数据类型之间的转换需要显式地声明。当两种数据类型彼此不兼容,或者目标类型取值范围小于源类型是,自动类型转换无法进行,这时就需要进行强制类型转换。
注意:
   将取值范围大的数据类型的变量赋值给取值范围小的数据类型的变量是,有可能造成数据的丢失。

强制类型转换实例:

public class Example {
	public static void main(String[] args) {
		int num = 4;
		byte b = (byte)num; //强制类型转换
		System.out.println(b);
		}
	}		

运行结果:
在这里插入图片描述

赋值运算符中强制类型转换的自动实现

   在使用+ =,-=,*=,/=,%=运算符进行赋值时,强制类型转换会自动完成,程序不需要做任何显示的声明
例如:

public class Example {
	public static void main(String[] args) {
		short s = 4;
		int c = 5;
		s += c;
		System.out.println(s);
		}
	}		

运行结果如下:
在这里插入图片描述

表达式类型自动提升

  变量在表达式中进行运算时,也有可能发生自动类型转换,这就是表达式数据类型的自动提升。

public class Example {
	public static void main(String[] args) {
		short s = 4;
		char c = 5;
		byte b = 3;
		byte b2 = (byte)(c + s + b); //此时进行强制类型装换
		System.out.println(b2);
		}
	}		

  在表达式c + s + b 运算期间,s,c,b 都被自动提升为int型,表达式的运算结果也就成了int型,这时如果将该结果赋给byte型的变量就会报错,此时就需要进行强制类型转换。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值