【java基础】类型转换操作符

本文详细介绍了Java中的类型转换,包括自动类型转换与强制类型转换。文章通过实例演示了不同类型之间的转换过程,特别是从高精度类型转换到低精度类型时需要注意的截断与舍入问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

类型转换(cast)的愿意是“模型铸造”,在适当的时候,java会将一种数据类型自动转换成另一种。比如我们为某浮点变量赋以一个整数值,编译器会将int自动转换成float。在java中,我们可以显示进行类型转换或者强制类型转换。如:

int i = 200;
long lng = (long)i;

这里我们可能是多余的,即使我们不通过(long)来对i进行转换,编译器也会自动进行int值到long值的提升,这就是扩展转换。下面的写法也是正确的:

int i = 200;
long lng = i;

但是有个情况,我们必须注意到,如:

double d = 0.7;
int i = (int)d;

当类型由大转小的时候,必须进行类型转换,否则编译会报错。这里的i获取的值是0,并没有进行四舍五入,而是直接对值进行了截尾操作。这不是窄化转换。在进行窄化转换操作时,要注意截尾和舍入的问题。

如果要想进行四舍五入操作,将采用java.lang.Math中的round()方法。

例子代码如下:

public class CasstingNumbers{
	public static void main(String[] args){
		double above = 0.7, below = 0.4;
		float  fabove = 0.7f, fbelow = 0.4f;
		
		int i = (int)above;
		System.out.println("i: " + i); //0
		
		int j = 1;
		long lng = j;
		System.out.println("lng:" + lng); //1
		
		System.out.println("(int)above: " + (int)above);   //0
		System.out.println("(int)below: " + (int)below);	 //0
		System.out.println("(int)fabove: " + (int)fabove); //0
		System.out.println("(int)fbelow: " + (int)fbelow); //0
		
		System.out.println("Math.round(above): " + Math.round(above)); //1
		System.out.println("Math.roundbelow: " + Math.round(below));	 //0
		System.out.println("Math.roundfabove: " + Math.round(fabove)); //1
		System.out.println("Math.roundfbelow: " + Math.round(fbelow)); //0
	}
}

output:

i: 0
lng:1
(int)above: 0
(int)below: 0
(int)fabove: 0
(int)fbelow: 0
Math.round(above): 1
Math.roundbelow: 0
Math.roundfabove: 1
Math.roundfbelow: 0


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值