一. ==和equals的区别

1. ==是运算符

2. equals是String对象的方法

一般有两种类型的比较

1. 基本数据类型的比较

2. 引用对象的比较

1. 基本数据类型的比较

==和equals都比较的是值是否相等,相等则为true,否则为false

2. 引用对象的比较

==和equals都是比较是栈内存中的地址是否相等,相等则为true,否则为false

注意:

1. String是一个特殊的引用数据类型,==比较的是字符串对象的引用地址是否一样,equals比较的是栈中的内容是否一致。

String ss = new String("abc");
  String sss = new String("abc");

if(ss == sss){
   System.out.println("ss == sss is true");   
  }
  if(ss.equals(sss)){
   System.out.println("ss equals sss is true");
  }

控制台输出:
ss != sss
ss equals sss
表明:ss和sss在栈中的内存地址不同,但是在堆中的内容是相同的。

String ss = new String("abc");

String ssss = ss;

//判断ss和ssss在栈中的引用地址是否一样

if(ss == ssss){
   System.out.println("ss == ssss");
  }else{
   System.out.println("ss != ssss");
  }

//判断ss和ssss在堆中的内容是否一样
   if(ss.equals(ssss)){
   System.out.println("ss equals ssss");
  }else{
   System.out.println("ss not equals ssss");
  }

控制台输出:

ss == ssss
ss equals ssss

这表明ss和ssss是相同的对象,并且他们在堆中的内容一样

2. 引用对象的比较

TestBean obj1 = new TestBean();
   TestBean obj2 = new TestBean();
   TestBean obj3 = obj1;
   if(obj1 == obj2){
    System.out.println("obj1 == obj2");
   }else{
    System.out.println("obj1 != obj2");
   }
  
   if(obj1 == obj3){
    System.out.println("obj1 == obj3");
   }else{
    System.out.println("obj1 != obj3");
   }

控制台输出:

obj1!= obj2
obj1== obj3

表明obj1和obj2不是同一个对象,在栈中的引用地址不同

obj1和obj3是相同的对象,在栈中的引用地址相同

二. =和equals ==的区别

=表示的是赋值,即将=右边的值赋给左边的变量。equals和==是表示操作

转载于:https://www.cnblogs.com/minshia/p/5950969.html

equals和=,==的区别相关推荐

  1. 【Java常识】6.0面向对象认知和Eclipse的实用使用、==号和equals方法的区别

    1.曾经写过很多自以为很通俗易懂的面向对象的解释. 如下是目前最通俗的一种解释: 2.Eclipse的补充解释. 运行的快捷键:F11. 3.Eclipse快捷键大全 大全放本文最后,这里主要放常用的 ...

  2. JAVA 中equals()与==的区别

    原文地址:http://www.chineselinuxuniversity.net/articles/29594.shtml 值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存 ...

  3. c# equals与==的区别

    c# equals与==的区别 对于值类型,如果对象的值相等,则相等运算符 (==) 返回 true,否则返回 false.对于string 以外的引用类型,如果两个对象引用同一个对象,则 == 返回 ...

  4. 面试官:谈谈equals() 和 == 的区别

    引言 谈谈equals() 和 == 的区别,这是一个非常经典的问题,不是特别难,面试也时有问道:但是很多小伙伴在面试时脑子却一片空白,痛失offer:所以在这里我详细介绍一下这两者的区别,希望对你能 ...

  5. Java基础 抽象类和接口的区别、equals 与 == 的区别

    一.抽象类和接口有什么区别 抽象类与接口都用于抽象,但是抽象类可以有自己的部分实现,而接口规范某一行为,调用者实现这个接口. 主要区别: 1.抽象类还是类只能单继承,而接口却可以多实现. 2.抽象类满 ...

  6. 浅谈equals和==的区别

    基本数据类型 八大基本数据类型:Byte,short,int,long,double,folat,boolean,char 引用数据类型 四大基本数据类型:String,数组类型 [ ] ,class ...

  7. Java基础之equals和==的区别深入解析

    Java基础之equals和==的区别深入解析 以下是本文目录大纲 equals 和 == 的区别 equals 的重写 复写hashCode方法,有31这个数字的作用 1. equals 和 == ...

  8. Equals 和 == 的区别

    在比较Equals 和 ==的区别前.我们先来了解下相关的知识 C#数据类型 1.值类型 值类型有: 值类型包括:简单类型.结构类型.枚举类型. byte(1).sbyte(1).short(2).u ...

  9. equals()与==的区别

    "=="比较两个变量本身的值,即两个对象在内存中的首地址. "equals()"比较字符串中所包含的内容是否相同. 比如: String s1,s2,s3 = ...

  10. 处理对象(toString()方法详解和==与equals方法的区别)

    处理对象(toString()方法详解和==与equals方法的区别) toString()是一个非常特殊的方法,它是一个自我描述的方法.当程序员直接打印该对象的时候,系统会输出该对象的"自 ...

最新文章

  1. html根据字段制作曲线图,canvas制作简单的HTML图表,折线或者矩形统计(原创)
  2. 安装Oracle9I出现加载数据库时出错:areasQueries错误,提示停止该组件或所有组件安装,之后安装不能进行...
  3. Web控件文本框Reset的功能
  4. java jtable defaulttablemodel_java – JTable和DefaultTableModel
  5. P5273 【模板】多项式幂函数 (加强版)
  6. 域环境下文件服务器,域和文件服务器
  7. win7/win8/win8.1 telnet命令无法使用的解决方案(提示不是内部命令或外部命令)
  8. tp5设置session有效期
  9. k8s 离线安装_使用 Kind 在离线环境创建 K8S 集群
  10. 微信小程序input安卓手机获取焦点时候上移
  11. python基础编程语法-Python基础语法一
  12. linux内核中创建线程方法
  13. python编写小程序、模拟实现自动按下键盘_Python 实现键盘鼠标按键模拟
  14. switch中使用枚举
  15. AJPFX平台:01.14日内交易策略
  16. OpenCV3的GPU模块编译
  17. 创智汇集,汉韵流芳!大创智国风汉服赏与您相约十月
  18. 网页版outlook邮箱慢如蜗牛登不上,解决办法
  19. 【图解数据结构】排序全面总结(一)
  20. java.lang.NullPointerException: null无堆栈信息

热门文章

  1. MySql 错误 Err [Imp] 1153 - Got a packet bigger than 'max_allowed_packet' bytes
  2. UNIX网络编程——套接字选项(SO_RCVBUF和SO_SNDBUF)
  3. 怎么去掉Flex4生成的SWF加载时的进度条
  4. Yii的路由机制分析
  5. .Net PetShop 4.0的缓存处理
  6. RUNOOB python练习题17
  7. 吴恩达机器学习+林轩田机器学习+高等数学和线性代数等视频领取
  8. React文档(五)组件和props
  9. Sqli-labs less 64
  10. 解决SublimeCodeIntel回车换行误打代码