• day02(难点)


    难点:

    第一个问题:方法形参中引用类型传地址,基本数据类型传值

    package oop;


    import java.util.Arrays;

    /**
    *引用类型传地址,基本数据类型传值
    */

    public class ClassDemo6 {
    public static void main(String[] args) {
    int num=10;
    ClassDemo6 demo6=new ClassDemo6();
    demo6.updateNum(num);
    //输出得num=10,基本数据类型传得值
    System.out.println(num);
    System.out.println("###################");
    int [] arr={1,2,3};
    demo6.updateArray(arr);
    //循环输入数组中得元素arr={4,5,6},引用数据类型传得地址,arr还是指向{4,5,6}地址
    System.out.println(Arrays.toString(arr));
    System.out.println("###################");
    Person p1=new Person("小红",5);
    demo6.updateObject(p1);
    //输出得应该是"小明;18"
    System.out.println(p1.name+";"+p1.age);
    }

    void updateNum(int num){
    num=10;
    }
    void updateArray(int [] arr){
    arr[0]=4;
    arr[1]=5;
    arr[2]=6;
    }

    void updateObject(Person person){
    person.name="小明";
    person.age=18;

    }
    }
    第二个问题:打印内存对象地址问题

    package oop;

    /**
    * 打印对象内存地址得问题
    */

    public class ClassDemo7 {
    public static void main(String[] args) {
    int num1=127;
    /**
    * 1、public static native int identityHashCode(Object x); identityHashCode()形参时一个对象
    * 2、通过class执行得字节码,我们得出num通过Integer.valueOf()转换成对象,传入identityHashCode()
    *当num得值没有超过它得范围时,第二次取得时缓存值,所以两个值时一样得。
    */
    System.out.println(System.identityHashCode(num1));
    System.out.println(System.identityHashCode(num1));

    int num2=1024;
    /**
    * num值超过了int得范围,会生成两个不同得对象放在堆中,所有下面两个地址值不一样
    */
    System.out.println(System.identityHashCode(num2));
    System.out.println(System.identityHashCode(num2));


    }
    }














  • 相关阅读:
    Jmeter——关联与正则
    Jmeter图形插件扩展
    Jmeter——检查点
    Jmeter——集合点
    OpenGL帧缓存对象(FBO:Frame Buffer Object)(转载)
    unicode 和 utf8
    管理node的版本
    pyqt5 开发环境
    cmake
    一些可能常用的工具函数
  • 原文地址:https://www.cnblogs.com/zzzao/p/10964843.html
Copyright © 2020-2023  润新知