天天看点

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

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

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的学习还不是特别精通,所以写的博客里面难免有一些错误,希望每位读者能够挑出我的错误,本人将不胜感激.

继续阅读