zoukankan      html  css  js  c++  java
  • java对象,引用的区别

    一,其实 对象 就是一个类的实例

    在Java中有一句比较流行的话,叫做“万物皆对象”,这是Java语言设计之初的理念之一。要理解什么是对象,需要跟类一起结合起来理解。下面这段话引自《Java编程思想》中的一段原话:

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

      从这一句话就可以理解到对象的本质,简而言之,它就是类的实例,比如所有的人统称为“人类”,这里的“人类”就是一个类(物种的一种类型),而具体到每个人,比如张三这个人,它就是对象,就是“人类”的实例。

    二,引用 就是一个 标识符

    举个例子,我们通常会用下面这一行代码来创建一个对象:

    1
    Person person = new Person("张三");

      有人会说,这里的person是一个对象,是Person类的一个实例。

      也有人会说,这里的person并不是真正的对象,而是指向所创建的对象的引用。

      到底哪种说法是对的?我们先不急着纠结哪种说法是对的,再看两行代码:

    1
    2
    Person person;
    person = new Person("张三");

      这两行代码实现的功能和上面的一行代码是完全一样的。大家都知道,在Java中new是用来在堆上创建对象用的,如果person是一个对象的话,那么第二行为何还要通过new来创建对象呢?由此可见,person并不是所创建的对象,是什么?上面的一段话说的很清楚,“操纵的标识符实际是指向一个对象的引用”,也就是说person是一个引用(也就是java里面的标识符),是指向一个可以指向Person类的对象的引用。真正创建对象的语句是右边的new Person("张三");

      再看一个例子:

    1
    2
    3
    Person person;
    person = new Person("张三");
    person = new Person("李四");

      这里让person先指向了“张三”这个对象,然后又指向了“李四”这个对象。也就是说,Person person,这句话只是声明了一个Person类的引用,它可以指向任何Person类的实例。这个道理就和下面这段代码一样:

    1
    2
    3
    int a;
    a=2;
    a=3;

      这里先声明了一个int类型的变量a,在这里a就是一个标识符也就是一个“引用”    先对a赋值为2,后面又赋值为3.也就是说int类型的变量a,可以让它的值为2,也可以为3,只要是合法的int类型的数值即可。

      也就是说,一个引用可以指向多个对象,而一个对象可不可以被多个引用所指呢?答案当然是可以的。

      比如:

    1
    2
    Person person1 = new Person("张三");
    Person person2 = person1;

      person1和person2都指向了“张三”这个对象。

  • 相关阅读:
    Chrome开发者工具中Elements(元素)断点的用途
    最简单的SAP云平台开发教程
    Java实现 LeetCode 495 提莫攻击
    Java实现 LeetCode 494 目标和
    Java实现 LeetCode 494 目标和
    Java实现 LeetCode 494 目标和
    Java实现 LeetCode 493 翻转对
    Java实现 LeetCode 493 翻转对
    Java实现 LeetCode 493 翻转对
    Java实现 LeetCode 492 构造矩形
  • 原文地址:https://www.cnblogs.com/111testing/p/6628929.html
Copyright © 2011-2022 走看看