java类型优先_建议29:优先使用基本类型

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

包装类提供了许多功能,而现在自动装箱功能,又方便了基本类型与包装类型的转换。但是从安全、性能、稳定方面考虑还是首选基本类型。

public class Test {

public static void main(String[] args)throws Exception {

Test test = new Test();

int i = 1;

test.f(i);

test.f(Integer.valueOf(i));

}

public void f(long a){

System.out.println("基本类型");

}

public void f(Long a){

System.out.println("包装类型");

}

}

上面的程序会能编译通过么?觉得会编译出错的人,可能会以下几个考虑。

1.方法重载有问题。

包装类型跟基本类型并不是同一类型。所以可以重载

2.test.f(i);报错。形参类型不正确。

int类型会自动转型为long。所以不会报错。

3.test.f(Integer.valueOf(i)); 报错。因为并没有Integer类型的形参。

实际上是不会报错的。运行结果如下:

基本类型

基本类型

第一个结果容易理解。第二个结果是因为,基本类型跟包装类型是可以转换的,编译器会尝试将Integer转换成int,结果就跟第一个一样了。

原建议中提到自动装箱的一个重要原则:

基本数据类型可以加宽,然后从加宽的基本类型再转成加宽的包装类型。不能直接转换从基本类型转换成加宽的包装类型。

比如:需要将int转成Long。首先int必须先加宽成long,然后才可以自动装箱成Long类型。不能直接从int类型转换成Long。

建议使用基本类型,防止出现上诉代码可读性差等原因。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值