内存图画法举例

256 阅读1分钟

画内存图

(1)画图分析1

垃圾说明:堆中的数据,如果没有任何引用指向,可视为垃圾

public class CarDemo {
	public static void main(String[] args) {
		Car c = new Car();
		Car c1 = new Car();
		c.color = "green";
		c.number = 5;
		c1.run();// 问题一:结果是什么?null:0
		c = null;// 问题二:有垃圾吗? 有
	}
}
class Car {
	String color;
	int number;
    void run() {
		System.out.println(this.color + "::" + number);
	}
}

t1.jpg

(2)画图分析2

public class CarDemo {
	public static void main(String[] args) {
		Car c = new Car();
		Car c1 = c;
		c1.color = "green";
		c.number = 5;
		c1.run();// 问题一:结果是什么? green::5
		c = null;// 问题二:有垃圾吗? 没有
	}
}
class Car {
	String color;
	int number;
    void run() {
		System.out.println(this.color + "::" + number);
	}
}

t2.jpg

(3)画图分析3

充分理解引用类型和基本数据类型在参数传递中的区别

public class Demo {
    public static void main(String[] args) {
        int x=4;
        show(x);
        System.out.println("x="+x);
    }
    public static void show(int x){

        x=5;
        System.out.println(x);
    }
}  //x=4

class Demo{
    int x;//成员变量
    public static void main(String[] args) {
        Demo d = new Demo();
        d.x=5;
        show(d);
        System.out.println("x="d.x);
    }
    public static void show(Demo d){
        d.x=6;
    }
}  //d.x=6

t3-1.jpg

t3-2.jpg