zoukankan      html  css  js  c++  java
  • Java中的对象和引用

    《Java编程思想》中有一段关于对象的说法:

      “按照通俗的说法,每个对象都是某个类(class)的一个实例(instance),这里,‘类’就是‘类型’的同义词。”

      简单来说,对象就是类的实例。举个栗子:“人类”包括了所有的人,在面向对象里,“人类”就是一个类,而人类中的某个人,比如特朗普,他就是人类的实例,他就是一个对象。


     还是《Java编程思想》中关于引用的说法,毕竟是经典的Java书籍:

      “每种编程语言都有自己的数据处理方式。有些时候,程序员必须注意将要处理的数据是什么类型。你是直接操纵元素,还是用某种基于特殊语法的间接表示(例如C/C++里的指针)来操作对象。所有这些在 Java 里都得到了简化,一切都被视为对象。因此,我们可采用一种统一的语法。尽管将一切都“看作”对象,但操纵的标识符实际是指向一个对象的“引用”(reference)。”

    1 Student student;
    2 student = new Student("路飞");

    Java在创建对象的时候是通过关键字new来进行的,结果是在堆中创建了一个新的对象。所以这两行中 new Student("路飞")才是创建对象的操作,那么,student并不是一个对象,而是一个指向对象的引用,这个指向的对象是通过new Student("路飞")来创建的。


    一个引用可以指向多个对象,而一个对象可以被多个引用所指向

    举例:

    Student student;
    student = new Student("娜美");
    student = new Student("索隆");
    
    Student student1 = new Student("山治");
    Student student2 = student1;

    分析:引用student可以指向多个不同的对象,指向的对象通过new来创建;

             而通过new Student("山治")创建的对象可以被student1和student2同时指向。


    来一个前几天遇到的(用学生班级进行模拟,与遇到的类似)

        @Test
        public void objectTest() {
            List<Student> students = new ArrayList<Student>();
            students.add(new Student("路飞"));
            Class_ class_ = new Class_();
            class_.setStudents(students);
    
            List<Student> s = class_.getStudents();
            s.add(new Student("山治"));
            System.out.println();
        }

    说明:Class_类表示的是班级类,Student表示的是学生类,两者之间的关系:一个班级中有多个学生,所以Class_中含有变量students:  private List<Student> students; (设置好get和set方法,再简单不过了)

    对上面的测试代码进行调试:

    可以看出:students, s, 还有班级类中的学生,指向的都是相同的对象,对这几个引用进行操作,会同步,因为都指向的是相同的对象嘛。

  • 相关阅读:
    项目Alpha冲刺(团队6/10)
    项目Alpha冲刺(团队5/10)
    项目Alpha冲刺(团队4/10)
    项目Alpha冲刺(团队3/10)
    项目Alpha冲刺(团队1/10)
    Alpha代码规范、冲刺任务与计划
    团队作业第六次—团队Github实战训练
    Alpha冲刺(8/10)——2019.4.30
    Alpha冲刺(7/10)——2019.4.29
    Alpha冲刺(6/10)——2019.4.28
  • 原文地址:https://www.cnblogs.com/zhou-chao/p/Object.html
Copyright © 2011-2022 走看看