Java面向对象(13)--==操作符与equals方法

简介: Java面向对象(13)--==操作符与equals方法

==:运算符


可以使用在基本数据类型变量和引用数据类型变量中


①如果比较的是基本数据类型变量:比较两个变量保存的数据是否相等(类型不一定要相同,当要能够统一)。


int i = 9;
        int j = 9;
        double d = 9.0;
        System.out.println(i == j); //true
        System.out.println(i == d); //true
        char c = 9;
        System.out.println(i == c); //true
        char c1 = 'A';
        char c2 = 65;
        System.out.println(c1 == c2); //true


②如果比较的是引用数据类型变量:比较两个对象的地址值是否相同,即两个引用是否指向同一个对象实体。


Account a1 = new Account("Tom",21);
        Account a2 = new Account("Tom",21);
        System.out.println(a1 == a2); //false
  String s3 = new String("相同内容");
        String s4 = new String("相同内容");
        System.out.println(s3 == s4); //false
  //静态域常量池问题,所以是true
  String s1 = "相同内容";
        String s2 = "相同内容";
        System.out.println(s1 == s2); //true


equals():所有类都继承了Object,也就获得了equals()方法,也可以重写。


只能比较引用类型,其作用与“==”相同,比较是否指向同一个对象。

格式:obj1.equals(obj2)


特别的,对类File、String、Date及包装类(Wrapper Class)来说,equals()方法是比较类型和内容,而不考虑引用的是否是同一个对象,因为在这些类中重写了Object类的equals()方法。我们自定义类通常也需要重写equals()方法。


String s1 = "相同内容";
        String s2 = "相同内容";
        System.out.println(s1.equals(s2)); //true
        String s3 = new String("相同内容");
        String s4 = new String("相同内容");
        System.out.println(s3.equals(s4)); //true



相关文章
|
18小时前
|
Arthas 存储 监控
性能监控之常见 Java Heap Dump 方法
【6月更文挑战8天】性能监控之常见 Java Heap Dump 方法
21 7
|
21小时前
|
安全 Java
Java 面向对象之旅:在封装的港湾中,找到代码的安宁。
【6月更文挑战第15天】封装是Java面向对象的核心,它保护了类的内部数据,如`Book`和`Student`类中的属性。通过设定私有成员和公共方法,代码更有序,防止直接访问导致的混乱。封装提供了一种控制数据交互的方式,确保安全,如`setGpa()`方法验证输入。这使得代码结构清晰,如同港湾中的船只,井然有序,赋予编程过程美感和安全感。在面向对象的旅程中,封装是我们的庇护所,助力我们构建更美好的程序世界。
|
1天前
|
设计模式 Java
一文掌握 Java 面向对象精髓:从类定义到对象实战
【6月更文挑战第15天】Java面向对象编程初学者指南:类是对象模板,如`Person`类含`name`和`age`属性。创建对象用`new`,如`Person person = new Person()`。访问属性如`person.name="Alice"`,调用方法如`person.sayHello()`。类能继承,如`Student extends Person`。对象间共享数据可传参或共用引用。多态性允许父类引用调用子类方法。注意对象生命周期和内存管理,避免内存泄漏。通过实践和理解这些基础,提升编程技能。
|
1天前
|
Java
深入 Java 面向对象:类的定义,竟然藏着这么多门道!
【6月更文挑战第15天】Java中的类定义是OOP的基础,它封装属性(如Student的name和age)和行为(如study())。简单的类仅触及表面,而复杂的类可模拟真实世界对象的多样性和交互。类还可通过继承扩展,如Student从Person派生,增加特有属性和行为。接口和抽象类等概念进一步增强了灵活性和可扩展性。类定义的深度和广度是构建高效、可维护代码的关键。
|
2天前
|
数据可视化 Java 测试技术
[笔记] 疯狂JAVA讲义(第3版) 第2章 理解面向对象
[笔记] 疯狂JAVA讲义(第3版) 第2章 理解面向对象
|
2天前
|
缓存 Java 程序员
[笔记] 疯狂JAVA讲义(第3版)第6章 面向对象(下)
[笔记] 疯狂JAVA讲义(第3版)第6章 面向对象(下)
|
2天前
|
Java 数据安全/隐私保护
[笔记] 疯狂JAVA讲义(第3版)第5章 面向对象(上)
[笔记] 疯狂JAVA讲义(第3版)第5章 面向对象(上)
|
9月前
|
Java
JAVA方法的定义
JAVA方法的定义
45 0
|
18天前
|
存储 Java
Java数组与带参数方法:定义、调用及实践
Java数组与带参数方法:定义、调用及实践
21 1
|
18天前
|
存储 Java
Java中带返回值方法的定义与调用技术
Java中带返回值方法的定义与调用技术
20 1