区分Java 对象引用 和 对象

来源:互联网 发布:desmume模拟器mac版 编辑:程序博客网 时间:2024/06/05 11:44
   写博客的原因很简单 就是改掉我这懒于总结的毛病
    以下纯属个人的理解 如有不全或者错误的地方 欢迎大家批评指正
    发个基础贴练练手
    为了方便说明 我先创建一个People类(类是具有相同属性和行为的一类实体,对象是类的实例化)
public class People {            private String name;      private int age;      public People(String name,int age) {            super();            this.name = name;            this.age = age;      }      public String getName() {            return name;      }      public void setName(String name) {            this.name = name;      }      public int getAge() {            return age;      }      public void setAge(int age) {            this.age = age;      }      }
    好了,具体的类也有了 下面我们可以开始创建一个对象 比如 我这个人
public class ObjTest {      public static void main(String[] args) {            People zhh = new People("赵海豪", 23);      }}
   虽然是简单的一行代码,但是这里也涉及了很多,能力有限我就简单说几句
    我先把上述的代码做拆分,大概是这个样子
People zhh;zhh = new People("赵海豪", 23);
   People zhh 做了什么事?
       Java虚拟机为其分配了栈空间。这里主要是声明了一个引用变量(对象引用)zhh,类型为People。好比我只是起了个绰号"zhh",但是具体要去落实到的人是谁还不知道,这个绰号"zhh"就是个对象引用。
       new People("赵海豪", 23) 在干嘛?
       Java虚拟机为其分配堆空间。这里实例化了一个具体的对象,简单的说就是告诉我们有这样一个人,他叫"赵海豪",今年23岁, 这个具体的人就是一个对象。
       那这个 "=" 在做什么? 
       Java虚拟机将对象在堆中的地址提供给变量,变量通过这个地址去堆内查找引用对象。主要是将我们的对象引用指向我们的具体对象。换句话也就是说我给"赵海豪"这个人起了"zhh"这样一个绰号,现在"zhh"就是指他这个具体的人。
       忽略中间过程,我直接给出上述代码在堆栈中的简单结果图 大概情况就是这个样子:
阅读全文
0 0
原创粉丝点击