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));


}
}














posted on 2019-06-02 22:35  zz测试笔记  阅读(135)  评论(0编辑  收藏  举报