JAVA基本类型的类型转换

1、自动类型转换


图中所示,箭头左边的数值型可以自动类型转换为箭头右边的数值型。

看代码:

public class AutoConversion
{
	public static void main(String[] args){
		int a = 6;
		//int可以自动转换为float类型
		float f = a;
		//下面将输出6.0
		System.out.println(f);
		//定义一个byte类型的整数变量
		byte b = 9;
		//下面代码将出错,byte型不能自动类型转换为char型
		//char c = b;
		//线面是byte型变量可以自动类型转换为double型
		double d = b;
		//下面将输出9.0
		System.out.println(d);
	}
}


不仅如此,当把任何基本类型的值和字符串进行连接运算时,基本类型的值将自动转换为字符串类型,虽然字符串类型不是基本类型而是引用类型。


2、强制类型转换

如果希望把图中箭头右边的类型转换为左边的类型,则必须使用强制类型转换。格式:(targetType)value

看代码:

public class NarrowConversion
{
	public static void main(String[] args){
		int iValue = 233;
		//强制把一个int类型的值转换为byte类型的值
		byte bValue = (byte)iValue;
		//将输出-23
		System.out.println(bValue);
		
		double dValue = 3.98;
		//强制把一个double类型的值转换为int
		int tol = (int)dValue;
		//将输出3
		System.out.println(tol);
	}
}

3、表达式类型的自动提升

当一个算术表达式中包含多个基本类型的值时,整个算术表达式的数据类型将发生自动提升。

如下规则:

:所有byte型,short型,char型将被提升到int型。

:整个算术表达式的数据类型自动提升到与表达式中最高等级操作数同样的类型。(如上图示,位于箭头右边的等级高于位于箭头左边类型的等级)

看代码:

byte b = 40;
char c = 'a';
int i = 23;
double d = .314;
//右边表达式在最高等级操作数为d(double型),则右边表达式的类型为double型,故赋值给一个double型变量
double result = b+c+i*d;
//将输出144.222
System.out.println(result);

如果表达式中包含了字符串,则是另外一种情形了。因为把加号放在字符串和基本类型值之间,代表字符串连接运算符,而不是加法运算。

看代码:

//输出字符串hello!a7
System.out.println("hello!"+'a'+7);
//输出字符串104hello!
System.out.println('a'+7+"hello");

对于第一个表达式,先进行"hello"+'a'的运算,把'a'转换成字符串,拼接成字符串hello!a,接着进行"hello!a"+7运算,这也是字符串连接运算,得结果 hello!a7。

对于第二个表达式,先进行'a'+7加法运算,'a'自动提升到int型,变成a对应的ASCII值:97,加上7得到104,再进行字符串连接运算,得结果104hello!。




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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值