美文网首页
Java包装类 和 值传递机制

Java包装类 和 值传递机制

作者: 得力小泡泡 | 来源:发表于2020-12-02 23:08 被阅读0次

一.什么是包装类

image.png

Java中的基本数据类型没有方法和属性,而包装类就是为了让这些拥有方法和属性,实现对象化交互。


image.png

装箱:基本数据类型转换为包装类;
拆箱:包装类转换为基本数据类型。

image.png

二、三元运算的原理

对于Object o1 = true ? new Integer(1) : new Double(2.0);
先计算出new Integer(1)和new Double(2.0)的值,并且要求两个结果类型相同,变成了Object o1 = true ? 1.0 : 2.0;

public class MyTest5 {
    @Test
    public void test1(){
        Object o1 = true ? new Integer(1) : new Double(2.0);
        System.out.println(o1);//1.0
    }

    @Test
    public void test2(){
        Object o2;
        if(true)
            o2 = new Integer(1);
        else
            o2 = new Double(2.0);
        System.out.println(o2);//1
    }
}

三、Integer类型的性质

Integer内部定义了IntegerCache结构,IntegerCache中定义了Integer[],保存了-128 ~ 127 范围的整。如果我们使用自动装箱的方式,给Integer赋值的范围在-128 ~ 127范围内,可以直接使用数组中的元素,不用再去new

image.png
    @Test
    public void test3(){
        Integer i = new Integer(1);
        Integer j = new Integer(2);
        System.out.println(i == j);//false
        
        Integer m = 1;
        Integer n = 1;
        System.out.println(m == n);//true
        
        Integer x = 128;//相当于new了一个Integer对象
        Integer y = 128;
        System.out.println(x == y);//false
    }

四、值传递机制

形参:方法定义时,声明的小括号内的参数
实参:方法调用时,实际传递给形参的数据

关于变量的赋值:
1、如果变量是基本数据类型,此时实参赋给形参的是实参真实存储的数据值
2、如果变量是引用数据类型,此时实参赋给形参的是实参存储数据的地址值

参数类型为:基础数据类型的底层原理
最后栈中元素会一个个pop出,最后main方法输出的是10和20

image.png

参数类型为:基础数据类型的底层原理
主函数的data和传进swap方法的data指向堆中是同一个地址,因此修改的是同一地址的元素,因此最后栈中元素会一个个pop出,最后main方法输出的是20和10

image.png

相关文章

  • Java包装类 和 值传递机制

    一.什么是包装类 Java中的基本数据类型没有方法和属性,而包装类就是为了让这些拥有方法和属性,实现对象化交互。 ...

  • 自整理3 值传递和引用传递

    java的值传递和引用传递 首先,由于java没有指针机制,所有java归根究底只有值传递,没有引用传递。java...

  • 优秀博客集锦(一)

    理解Java Integer的缓存策略Java中Integer和其他包装类具有缓存机制,会缓存常用的一部分数字。 ...

  • java类型,打印变量类型,类型转换

    java类型 分为两类 基本类型boolean 对应包装类 java.lang.Boolean 类型名称默认值补充...

  • 形象理解java中的值传递和引用传递

    概述 java中的方法传参, 主要通过值传递和引用传递的方式传递参数 首先我们定义一个ListNode类 然后我们...

  • Python 进阶内容整理

    Python 之禅 参数传递是值传递还是引用传递 深拷贝与浅拷贝 垃圾回收机制 del 元类 (metaclass...

  • Java填坑笔记:值传递与引用传递

    Java中没有指针,只存在值传递 对于对象(数组,类,接口)的传递似乎有点像引用传递,可以改变对象中某个属性的值。...

  • Integer和int

    1. Integer(int包装类) 1.1 介绍 Integer在java中,包装了基本类型int的值,此外还提...

  • 聊聊Java内部类

    一.磨叽磨叽Java值传递与引用传递 “在Java里面参数传递都是按值传递”即:按值传递是传递的值的拷贝,按引用传...

  • Java面试题疑难点

    1. java值传递和引用传递 String为什么是值传递而不是引用传递 答:String是final的

网友评论

      本文标题:Java包装类 和 值传递机制

      本文链接:https://www.haomeiwen.com/subject/xtgjwktx.html