==对基本数据类型比较的是值,对引用类型比较的是地址

equals()比较的是对象的数据的引用

等价性原理:

  • 自反性    x.equals(x)为true
  • 对称性    x.equals(y) 为true时,y.equals(x) 也为true
  • 传递性    若x.equals(y) 为true , y.equals(z) 为true, 则x.equals(z) 为true
  • 一致性   在未修改x,y的值的情况下x.equals(y)始终是相同的值
  • 非空性   x.equals(null) 总是 false
public class Test {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubint n=3;int m=3;String str1 = "hello";//"hello"存在于常量池,str1,str2都指向该常量池String str2 = "hello";System.out.println("基本数据类型的 ==  判定:"+(n==m));  //判断数据System.out.println("引用数据类型的 == 判定"+(str1==str2));//判断地址String str3 = new String("hello");//"hello"存在于堆的对象内存区,非常量区String str4 = new String("hello");System.out.println("对象的 == 判定:"+(str3 == str4)); //判断地址System.out.println("对象的 equals() 判定"+str3.equals(str4));//判断数据str4 = str3;System.out.println("对象赋值后的 == 判定"+( str3 == str4 ) );System.out.println("对象的 equals() 判定"+str3.equals(str4));}}

结果如下:

基本数据类型的 ==  判定:true
引用数据类型的 == 判定true
对象的 == 判定:false
对象的 equals() 判定true
对象赋值后的 == 判定true
对象的 equals() 判定true
public class practice5 {public static void main(String[] args) {Dog spot = new Dog();Dog scruffy = new Dog();Dog spot1 = new Dog();Dog spot2 = new Dog();spot.setNameString("spot");scruffy.setNameString("scruffy");spot.setSayString("Ruff!");scruffy.setSayString("Wurf!");spot2.setNameString("spot");spot2.setSayString("Ruff!");spot1=spot;System.out.println(spot.getNameString()+"\t"+spot.getSayString());System.out.println(scruffy.getNameString()+"\t"+scruffy.getSayString());System.out.println("spot1==spot\t"+(spot1==spot));System.out.println("spot1.equals(spot)\t"+spot1.equals(spot));System.out.println("spot2==spot\t"+(spot2==spot));System.out.println("spot2.equals(spot)\t"+spot2.equals(spot));System.out.println("spot2.nameString==spot.nameString\t"+(spot2.nameString==spot.nameString));System.out.println("spot2.nameString.equals(spot.nameString)\t"+spot2.nameString.equals(spot.nameString));}}
class Dog{String nameString;String sayString;public String getNameString() {return nameString;}public void setNameString(String nameString) {this.nameString = nameString;}public String getSayString() {return sayString;}public void setSayString(String sayString) {this.sayString = sayString;}}

结果

spot Ruff!
scruffy Wurf!
spot1==spot   true
spot1.equals(spot)  true
spot2==spot   false
spot2.equals(spot)  false
spot2.nameString==spot.nameString true
spot2.nameString.equals(spot.nameString)    true

Java中的equals和==的差别 以及Java中等价性和同一性的讨论相关推荐

  1. java 实现nfa的化简_DFA与NFA的等价性,DFA化简

    等价性 对于每个NFA M存在一个DFA M',使得L(M)=L(M')--------等价性证明,NFA的确定化 假定NFA M=,我们对M的状态转换图进行以下改造: 解决初始状态唯一性:引进新的初 ...

  2. java中的equals拿什么鞋的_Java中==和equals方法

    Java程序中测试两个变量是否相等有两种方式:1.== :2.equals()方法 当使用==来判断两个变量是否相等时,如果两个变量是基本类型变量,且都是基本数值类型(不一定要求数据类型严格相同),则 ...

  3. java中的equals拿什么鞋的_java.中equals的使用

    下面在Cat类里面重写这个继承下来的equals()方法: class Cat { int color, weight, height; public Cat(int color, int weigh ...

  4. softmax回归中最大化似然和最小化交叉熵的等价性

    s o f t m a x softmax softmax回归是一个多分类模型 f ( X ) = s o f t m a x ( X n × d W d × k + b 1 × k ) f(X)=s ...

  5. C#和Java中“==”和“equals”区别

    C#中"=="和"equals"区别如下: 1 using System; 2 class Program 3 { 4 public static void M ...

  6. java双等号和equals_Java中的 equals和双等号,你懂吗?

    点击蓝色"程序员的时光 "关注我 ,标注"星标",及时阅读最新技术文章! 在说equals方法与"=="之前,我们先来回顾一下Java中的数 ...

  7. 【Java学习笔记之二十九】Java中的equals和==的用法及区别

    Java中的"equals"和"=="的用法及区别 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String(&quo ...

  8. java中==和equals的区别

    package com.atguigu.java1;import java.sql.Date;/** * equals()和==的区别* *一.回顾==的使用*==:运算符* 1.可以使用在基本数据类 ...

  9. 面试必问一:Java 中 == 和 equals 的区别你知道吗

    面试必问一:Java 中 == 和 equals 的区别你知道吗 前言 关于这个问题,一般初中级面试中都会遇到,还记得我当初实习找工作的时候也遇到了这个问题,现在都还记得自己是怎么回答的:== 是基本 ...

最新文章

  1. mongoDB 入门指南、示例
  2. Error:No resource identifier found for attribute 'appComponentFactory' in packag
  3. Python常见的数据类型【数字、布尔、字符串、列表和元组、字典】
  4. boost::unique_copy相关的测试程序
  5. python无参数装饰器_python_之无参装饰器_01
  6. java拦截器_Java工程师年底跳槽高潮即将到来,斩获满意offer的必备技巧(二)
  7. OC Autorelease
  8. fabric canvas 清空并重置画布
  9. 两场直播丨 手把手安装搭建GoldenDB、基于IB网络的Oracle Extend RAC最佳实践
  10. 三、安装cmake,安装resin ,tars服务,mysql 安装介绍,安装jdk,安装maven,c++ 开发环境安装...
  11. Python算法:推导、递归和规约
  12. Oracle常见操作和命令
  13. ubuntu18.04下hadoop安装与集群配置
  14. GitHub上README.md文件的图片大小尺寸
  15. 中间代码生成-四元式
  16. 统计软件简介与数据操作
  17. Python的一点人生经验
  18. Oracle的 alter table table_name nologging; 的使用
  19. DDR设计之地址和容量计算、Bank理解
  20. [附源码]计算机毕业设计JAVA企业员工管理系统

热门文章

  1. 动态对象泛型数组绑定控件 0107
  2. django-cbv与fbv
  3. linux-mysql了解
  4. python-数据的维度与csv
  5. python随堂技术演讲时间表
  6. 安装PostgreSQL单机版
  7. 关于Java的反射机制,你需要理解这些...
  8. [CentOS7] - CentOS7设置开机启动
  9. 这些年正Android - 序言
  10. 机器学习算法一般步骤