2018-06-26学习小结 - 对象的引用与传递10

学习

17.7 点拨

  1. 对象引用相等

引用相等:指引用到堆上同一个对象的两个引用是相等的。

如范例 17-5

Book bookA = new Book();
Book bookB = bookA;
bookA.title = "Java程序设计";
bookB.title = "Java Web开发";

若调用:

if (bookA == bookB) {
    System.out.println(true);
} else {
    System.out.println(false);
}

结果为true。

若调用:

if (bookA.equals(bookB)) {
    System.out.println(true);
} else {
    System.out.println(false);
}

结果为true。

对象bookA和bookB指向同一堆内存,内存地址及内容一致,结果都为true。以上都只是判断了引用相等。

Book bookA = new Book();
Book bookB = new Book();
bookA.title = "Java程序设计";
bookB.title = "Java Web开发";
bookA.price = 60.0;
bookB.price = 60.0;
if (bookA == bookB) {
    System.out.println(true);
} else {
    System.out.println(false);
}
if (bookA.equals(bookB)) {
    System.out.println(true);
} else {
    System.out.println(false);
}

对象bookA和bookB是两个对立对象,堆内存不同,结果都为false。若要判断内容相同,需要覆写equals()。

  1. Java的垃圾回收机制

范例 17-14 java垃圾回收机制

package com.Javastudy2;

/**
 * @author YangWang
 * @date 2018年6月26日 下午11:37:50
 * @Description TODO java垃圾回收机制
 */
public class P454_17_14 {

    public static void main(String[] args) {
        Book13 bookA = new Book13();
        Book13 bookB = new Book13();
        bookA.title = "Java程序设计";
        bookB.title = "Java Web开发";
        bookA.price = 39.8;
        bookB.price = 59.6;
        bookB = bookA; // 引用传递
        bookB.title = "Android 开发";
        bookA.printInfo(); // 此处方法使用对象调用,不是直接调用
    }

}

class Book13 {
    String title;
    double price;

    public void printInfo() {
        System.out.println("title:" + this.title);
        System.out.println("price:" + this.price);
    }
}

运行结果:

运行结果
范例分析

小结

比较内容相等还是得覆写equals()。


记于2018年6月26日23:13:13
By Yvan

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,238评论 18 399
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 11,950评论 0 62
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 30,001评论 8 265
  • 没有开始 也没有终点 感受六根带来无尽的情绪 不明显的是遗忘的灵魂 喜怒哀乐颠倒了多少人心 不明显的是遗忘的灵魂 ...
    菩提勇者阅读 3,873评论 2 10
  • 刚接触golang,写fib()感觉还是比较惊艳的。 4GB内存下结果:time ./fib 0.00s user...
    Author_1900阅读 2,761评论 0 1

友情链接更多精彩内容