java测试两个变量是否相等有两种方式:

  一种是利用“==”运算符 值和对象的判断

  一种是利用equals()方法 只是值的判断

1.如果两个变量是基本类型变量,且都是数值类型(不一定数值类型严格相同),则只要两个变量的值相等,就返回true。

  例如: 

int a=65;
float b=65.0f;
char c="A";
System.out.print("65和65.0f是否相等:"+(a==b));//输出true
System.out.print("65和A是否相等:"+(a==c));//输出true

2.如果两个变量是引用类型变量,只有它们指向同一个对象时,“==”判断才会返回true,但equals()方法可以比较。“==”不可用于比较类型上没有父子关系的两个对象。

  例如: 

String a=new String("123");
String b=new String("123");
System.out.print("a和b是否相等:"+(a==b));//输出false
System.out.print("a和b是否相等:"+(a.equals(b));//输出true
//a1直接引用常量池中的“你好java”
String a1="你好java";
//b1的“你好”、“java”在编译时就确定下来了,直接引用常量池中的"你好java"
String b1="你好"+"java";
String s1="你好";
String s2="java";
//c1后面的字符串值不能在编译时就确定下来,所以不能直接引用常量池中的"你好java"
String c1=s1+s2;
//关键字new调用构造器,创建一个新的String对象,并引用变量d1指向该对象
String d1=new String("你好java");
System.out.print(a1==b1);//输出true
System.out.print(a1==c1);//输出true
System.out.print(a1==d1);//输出false

JVM使用常量池

  常量池(constant pool):专门用于管理在编译时被确定并被保存在已编译的.class文件中的一些数据。它包括了关于类、方法、接口中的常量,还包括字符串常量。

  当使用new String("你好java")时,JVM会先使用常量池来管理“你好java”直接量,再调用String类的构造器创建字符串对象。

java_==和equal方法的更多相关文章

  1. java——HashCode和equal方法

    equals()反映的是对象或变量具体的值,即两个对象里面包含的值--可能是对象的引用,也可能是值类型的值. 而hashCode()是对象或变量通过哈希算法计算出的哈希值. 之所以有hashCode方 ...

  2. java中equal方法总结

    场景:本周在完成一个公司业务功能时,在判断是否为代叫单时调用了equal方法: PublishOrderType.HELP_ORDER.equals(valetOrderExtraInfoDO.get ...

  3. hashCode()方法和equal()方法的区别

    本文参考地址:http://www.cnblogs.com/zgq0/p/9000801.html hashCode()方法和equal()方法的作用其实一样,在Java里都是用来对比两个对象是否相等 ...

  4. 重写equal()时为什么也得重写hashCode()之深度解读equal方法与hashCode方法渊源

    今天这篇文章我们打算来深度解读一下equal方法以及其关联方法hashCode(),我们准备从以下几点入手分析: 1.equals()的所属以及内部原理(即Object中equals方法的实现原理) ...

  5. java hashcode()和equal()方法比较

    通常equals,toString,hashCode,在应用中都会被复写,建立具体对象的特有的内容. 之所以有hashCode方法,是因为在批量的对象比较中,hashCode要比equals来得快,很 ...

  6. String中的“equal方法”和“==”

    二话不说,先来说下重写的事情: 在Java中,String .Math.还有Integer.Double....等这些封装类重写了Object中的equals()方法,让它不再比较其对象在内存中的地址 ...

  7. HashCode和equal方法

    equals()反映的是对象或变量具体的值,即两个对象里面包含的值--可能是对象的引用,也可能是值类型的值. 而hashCode()是对象或变量通过哈希算法计算出的哈希值. 之所以有hashCode方 ...

  8. 对比C#中==与equal方法

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

  9. java中==与equal()方法的区别

    ==比较的是对象的地址,也就是是否是同一个对象: equal比较的是对象的值. Integer r1 = new Integer(900);//定义r1整型对象Integer r2 = new Int ...

随机推荐

  1. js实现htmlToWordDemo

    之前由于工作需要,需要实现将html内的一部分内容直接转为word和pdf的功能.就研究了一下方法并且实现了两个demo.今天先说一下html to word(才疏学浅,仅供交流,如有错误,请指出). ...

  2. ionic中应用sass

    在学习ionic过程中看到sass,总结了一下基本用法和问题解决办法1.首先需要一个ionic项目,并执行下面的命令ionic start CustomSass blank && cd ...

  3. 如何相互转换逗号分隔的字符串和List

    将逗号分隔的字符串转换为List 方法 1: 利用JDK的Arrays类 [java] view plain copy   ico_fork.svg1.5 KB String str = " ...

  4. linux下swoole的安装

    //官方推荐的安装方式1:下载压缩包 wget https://github.com/swoole/swoole-src/archive/swoole-1.8.4-stable.zip 2:解压缩 u ...

  5. 使用c#解析json库

    写了个c#版的json解析库,提供了json到hashtable以及hashtable到json字符串的转换 受惠于c#的语法特性,hashtable到json的解析变得非常简单 先判断传入的obje ...

  6. solr学习-基础环境搭建(一)

    目前网上关于solr6.+的安装教程很少,有些6.0之前的教程在应用到6.+的版本中出现很多的问题,所以特别整理出来这一片文章,希望能给各位码农一些帮助! 很少写些文章,如有不对的地方,还希望多多指导 ...

  7. 打开vmvare出现The VMware Authorization Service is not running。

    win+r再输入cmd打开doc,输入services.msc打开服务,吧Vmware Authorization Service 更改为自动或者将其启动即可.

  8. Android Studio 运行java程序

    当我们装了Android Studio 学习安卓开发的时候,难免会要学习java,这时候,难道在重新装一个编译器吗?不需要,我们直接用 Android Studio 就可以. 1.新建一个空项目,选择 ...

  9. maven仓库--搭建局域网私服(windows版)

    使用nexus搭建局域网私服 一. 认识maven仓库 1.1 maven仓库的作用   回想之前不用maven的时候,我们用eclipse原始的项目骨架构建项目时,在工程目录下往往有一个lib文件夹 ...

  10. 图论基础之Dijkstra算法的初探

         图论,顾名思义就是有图有论.        图:由点"Vertex"和边"Edge "组成,且图分为有向图和无向图(本文讨论有向图),之前做毕业设计的 ...