zoukankan      html  css  js  c++  java
  • 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));


    }
    }














  • 相关阅读:
    数据结构学习笔记(特殊的线性表:栈与队列)
    数据结构学习笔记(线性表)
    使用U盘安装 OS X 的坑
    chrome插件推荐
    Mac下安装oh-my-zsh
    sublime下让代码居中
    Mac上关于shell使用Python3和C++11声明
    github学习(三)
    github学习(二)
    github学习(一)
  • 原文地址:https://www.cnblogs.com/zzzao/p/10964843.html
Copyright © 2011-2022 走看看