面向对象编程----程序执行过程的内存分析_02
作者:互联网
内存分析:
新建一个类文件Student
package cn.Test.oop;
/**
* 以类的方式组织代码,以对象的方式封装(组织)数据!
操作对象就是操作它的地址!
对象以类为模板来的!
所有的引用类型都是4个字节!
* @author 神奇的梦
*
*/
public class Student {
//属性:静态的数据 private 私有
// 成员变量你不初始化,系统会帮你初始化一下
String name;
int id; //学号
int age;//年龄
String gender;//性别
int weight;//体重
// 加一个属性
Computer computer;
//动态的行为
public void study() {
System.out.println(name+"在学习");
}
public void sayHello(String sname) {
System.out.println(name+"向"+sname+"说:你好!");
}
}
新建一个类文件Computer
package cn.Test.oop;
public class Computer {
String brandq;//品牌
int cpuSpeedq;//cpu熟读
}
新建一个类文件Test1
package cn.Test.oop;
public class Test1 {
public static void main(String[] args) {
//通过类加载器class loader加载Student类,加载后,在方法区中就有了Student类的信息!
Student s1=new Student();
s1.name ="杯子";
s1.sayHello("白色杯子");
Student s2=new Student();
s2.age=10;
s2.name="华为手机";
}
}
新建一个类文件Test2
package cn.Test.oop;
// test2是最先被加载的
public class Test2 {
public static void main(String[] arge) {
// 这里必须加载test1,test2
Student s1=new Student();
s1.name ="ss";
s1.age=19;
System.out.println(s1.name);
// Computer加载computer类
// 需要加载Computer类
// Computer类的信息
// 1.代码
// 2.static
// 3.常量池
// new一个模板在方法区里
// 把建出来的模板的地址,给了变量c(地址)
Computer c = new Computer();
// 然后把方法区里面的常量池"联想",给了brandp地址然后指向变量c
c.brandq = "联想";
// 如果是对象的话除了八种数据类型之外的话都是null
// 如果是数字默认是0小数是0.0
// boolean默认是false
// char: 反斜杠u0000 表示一个unknown也是0
// cpuSpeedq(这里可以直接赋值)地址然后指向变量c
c.cpuSpeedq = 100;
System.out.println(c.brandq);
// 我想把这台电脑给没有一个人
// 通过s1.computer.brand可以找到品牌
// 把c的值(引用地址)给了s1.compute
// 这样就可以通过s1.compute找到c指向的堆了的堆了
s1.computer=c;
System.out.println(s1.computer.brandq);
c.brandq="戴尔";
System.out.println(s1.computer.brandq);
}
}
标签:02,面向对象编程,s1,程序执行,Computer,Student,println,public,name 来源: https://www.cnblogs.com/fantasticDream/p/16285967.html