基本数据类型之间转换和基本数据类型装箱操作

首先给大家一个实例,请大家想一下下面代码的运行结果是什?

package www.lxk.test3;
public class Demo  {
    public static void go(Long n) { 
        System.out.println("Long"); 
    } 
    public static void go(Short n) {
        System.out.println("Short");
    } 
    public static void go(int n) {
        System.out.println("int"); 
    } 
    public static void main(String[] args) {
        short y = 6;
        long z = 7; 
        go(y); 
        go(z); 
    } 
}

结果是short long还是:int long呢?
这是我做过的一个面试题,当初做的时候没有注意到这道题的陷阱,将重载方法go中的参数Short和Long看成了short和long,然后我得出的答案是short long,然后我看了正确答案竟然是int long,当时就懵逼了,但是答案摆在眼前,能怎么办?于是我竭尽脑汁想出了一个非常牵强的答案,(因为是错误的就不再赘述),
那么我将int,long的结果解释一下,这里首先要明确一下基本数据类型之间的转化是优于基本数据类型的装箱操作,因此,y会将自己转化为int类型之后就进了参数为int类型的go方法,于是便输出了int,至于long就不解释了
至于下面的这个图是我想那个牵强答案的一个论据,虽然我原本的解释就错的,但是这个内存图是正确的,就留这儿了


int类型的数据和short类型的数据在内存中存储机制
这里写图片描述


因为本人对java的学习还不是特别精通,所以写的博客里面难免有一些错误,希望每位读者能够挑出我的错误,本人将不胜感激.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值