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

来源:互联网 发布:安徽seo 编辑:程序博客网 时间:2024/06/04 19:38

类型转换(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); //0int j = 1;long lng = j;System.out.println("lng:" + lng); //1System.out.println("(int)above: " + (int)above);   //0System.out.println("(int)below: " + (int)below); //0System.out.println("(int)fabove: " + (int)fabove); //0System.out.println("(int)fbelow: " + (int)fbelow); //0System.out.println("Math.round(above): " + Math.round(above)); //1System.out.println("Math.roundbelow: " + Math.round(below)); //0System.out.println("Math.roundfabove: " + Math.round(fabove)); //1System.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


原创粉丝点击