系统相关
首页 > 系统相关> > 面向对象编程----程序执行过程的内存分析_02

面向对象编程----程序执行过程的内存分析_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