Java 多线程基础 (一) -----内存分析

//内存分为堆内存和栈内存,Test test=new Test()在内存中显示,前部分在栈内存中分配一个地址new Test()在堆内存分配分配相当于地址房间编号

package study1;


public class test {
    
    public static void main(String args[]){
        test test1=new test();
        int date=9;
        Birthday B1=new Birthday(7,7,1970);
        Birthday B2=new Birthday(7,7,1990);
        test1.change1(date);
        test1.change2(B1);
        test1.change3(B2);
        System.out.println("date:"+date);
        B1.display();
        B2.display();
    }
    public void change1(int i){
        i=1234;//在这里不会修改date值,date值copy给i
    }
    //方法一旦执行后,分配对象内存会消失
    public void change2(Birthday b){
        //b 与B1相同地址
        b=new Birthday(1,1,2010);//b 指向新的对象不会是原来B1的地址,分配一个新的地址,同样不会修改B1
        //无法修改B1中值
    }
    public void change3(Birthday b){
        b.setDay(22);
    }
}

class Birthday(){
private int day;
private int month;
private int year;

public void setDay(int day) {
    this.day = day;
}

public void setMonth(int month) {
    this.month = month;
}

public void setYear(int year) {
    this.year = year;
}



public Birthday(int d,int m,int y){
    day=d;month=m;year=y;
}

public int getDay() {
    return day;
}

public int getMonth() {
    return month;
}

public int getYear() {
    return year;
}

public void display(){
    System.out.println(day + "——" + month +"——"+year+"——");
}

}

5. 注意在此过程中多态中内存分析

 

动态绑定:调用方法重写,看实际过程中new出来的对象判断其调用其(new对象)方法

7.继承中的内存分析

分析:Aninam obj2=new Dog()输出为什么会先有父类构造方法,在输出子类基本构造方法:原因在下面第一条定理中:输出:输出Animal类调用 输出dog类调用

原文地址:https://www.cnblogs.com/woainifanfan/p/5747633.html