在Java中,有 ==, equals(), compareTo(), compare() 等方法可以比较两个值或对象,比较容易混淆.画了个简单的思维导图总结一下 Java Compares 我经常记不住Java中的各种比较方法,为什么设计者要弄出这么多种比较? 设计源于生活,如果我们先想一想现实世界中一般会如何做比较,也许会对理解Java的设计有所帮助吧.那么,在现实世界中,我们是怎么进行比较的呢? 假如给定两个物体,如果要对二者作比较的话,一般我们会先问: 有可比性吗? 如果没有可比性,那就…
Java中的equals(),==,compareTo()和compare() 首先只有==可以用作两个基本类型数据之间的比较,当然是值比较.当用作两个对象比较时,比较的是对象引用,而不是值比较. 其次任何对象都可以调用.equals()方法,因为这是从Object类继承下来的.Object.equals(Object obj)的缺省实现也是比较对象引用(显然它不知道如何比较值),但Java类库中的绝大多数类都已覆盖了equals()方法,实现了值比较.当然如果你自定义一个类而且没有覆盖equa…
在比较两个对象或者数据大小的时候,经常会用到==.compareTo()和equals(),尤其是在接入了Comparable接口后重写compareTo方法等场景,所以我们来理一下这三个的区别. 1.等号——"==":等号是最简单也最容易理解的,如果等号的两边是基本数据类型,比如int,double,那么等号就用来单纯的比较他们的数值大小如果等号两边放的是两个对象,那么就会比较他们在内存当中的地址.例如: String a="abc"; String b=&quo…
 java.util.Calendar.compareTo() 方法比较Calendar对象和anotherCalendar对象之间的时间值(毫秒偏移量). 声明 以下是java.util.Calendar.compareTo()方法的声明 public int compareTo(Calendar anotherCalendar) 参数 anotherCalendar -- 要比较的Calendar对象. 返回值 如果参数所代表的时间等于通过此Calendar对象表示的时间方法返回0;或如果此…
java中的compareto方法的详细介绍 Java Comparator接口实例讲解(抽象方法.常用静态/默认方法) 一.java中的compareto方法 1.返回参与比较的前后两个字符串的asc码的差值,如果两个字符串首字母不同,则该方法返回首字母的asc码的差值 String a1 = "a"; String a2 = "c"; System.out.println(a1.compareTo(a2));//结果为-2   2.即参与比较的两个字符串如果首字…
一.先说说Java中equals和==的区别: Java中的数据类型,可分为两类: 1.基本数据类型(也叫原始数据类型) 八大基本数据类型 char byte short int long double float boolean 2.引用数据类型(也就复合数据类型)除了上面的8个,其他都是引用数据类型 区别: 基本数据类型比较只能用==,不能用equals,因为用equals(参数),参数必须为对象. 他们之间的比较,比较的是他们的值. public class Test { public s…
Java基础-比较运算符Compare Operators 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.关系运算符 关系运算符包括: 1>.大于(>) 2>.大于等于(>=) 3>.小于(<) 4>.小于等于(<=) 5>.等于(==) 6>.不等于(!=) 关系运算的结果是一个布尔值. 二.基本数据类型比较 /* @author :yinzhengjie Blog:http://www.cnblogs.com/yinz…
java中的compareto方法的详细介绍 javacompareTo  java中的compareto方法,返回参与比较的前后两个字符串的asc码的差值,看下面一组代码 String a="a",b="b"; System.out.println(a.compareto.b); 则输出-1: 若a="a",b="a"则输出0: 若a="b",b="a"则输出1:   单个字符这样比较…
Java的equals方法的使用技巧 1.业务场景: 在某个社交软件中,要求每个用户的用户名(name)必须独一无二,那么在每次增加新用户的时候,都要对该用户的注册名进行判断,如果当前用户名已经被占用,则无法为该用户创建账号,只能要求该新用户重新选择设定用户名. 2.解决思路: 考虑到这里比较的每一个用户这样的对象,而其的等价判断标准是name,因此我们可以考虑使用object类自带的equals()方法对其进行比较,其中在方法体中以判断标准name进行返回. 补充:对于不同的数据类型,其比较方…
本文参考 本篇文章参考自<Effective Java>第三版第十条"Obey the general contract when overriding equals" the conditions when each instance of the class is equal only to itself Each instance of the class is inherently unique -- 类的每一个实例本就彼此不同,例如Thread类,每一个线程仅和自…
java中equals和==的区别  值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中. ==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同. equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同.  ==比较的是2个对象的地址,而equals比较的是2个对象的内容. 显然,当equals为true时,==不一定为true: 一.String中…
[转]Java中equals和==的区别 java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolean   他们之间的比较,应用双等号(==),比较的是他们的值. 2.复合数据类型(类)   当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false. JAVA当中所有的类都是继承于Object这个…
1.java中equals和==的区别 值类型是存储在内存中的堆栈(简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中.2.==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同.3.equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同.4.==比较的是2个对象的地址,而equals比较的是2个对象的内容,显然,当equals为true时,==不一定为true.…
Java:重写equals()和hashCode() 1.何时需要重写equals() 当一个类有自己特有的“逻辑相等”概念(不同于对象身份的概念). 2.设计equals() [1]使用instanceof操作符检查“实参是否为正确的类型”. [2]对于类中的每一个“关键域”,检查实参中的域与当前对象中对应的域值. [2.1]对于非float和double类型的原语类型域,使用==比较: [2.2]对于对象引用域,递归调用equals方法: [2.3]对于float域,使用Float.floa…
java中equals与==经常容易混淆,简单一点说就是equals比较的是值是否相等,是一种方法,==比较的两个对象在JVM中的地址,是一种操作符. 做了几个小实验比较结果. 实验一: String str1="ab": String str2="ab": System.out.println(s1==s2)://trueSystem.out.println(str1.equals(str2));//true 这里的str1与str2都指向了常量池中的同一对象,所…
前几天看了篇关于java中equals和hashCode方法的解析 1.Object类中的equals方法和hashCode方法. Object类中的equals和hashCode方法简单明了,所有的类都继承了这两个方法,只是有些类(String.Integer等)会重写这两个方法实现自己的更详细功能,之后会重点介绍. ① equals(): ? 1 2 3 public boolean equals(Object obj) {         return (this == obj);    …
目录 相等判断符"==" "=="判断基本类型数据 "=="判断引用类型数据 相等判断方法equals() 思考:为什么要设计equals()方法? 结束 "判断两个事物是否相等",是编程中最常见的操作之一,在Java中,判断是否相等有两种方法,一种是使用"=="判断符,另一种是使用"equals()"方法,你是否曾因混用二者导致不可思议的bug?本篇文章将带你深入二者背后的判断原理.…
java中equals方法的用法以及==的用法(参考一)equals 方法是 java.lang.Object 类的方法.两种用法说明:(1对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同.“==”比较两个变量本身的值,即两个对象在内存中的首地址.“equals()”比较字符串中所包含的内容是否相同.比如: String s1,s2,s3 = "abc", s4 ="abc" ; s1 = new String("ab…
Java中equals和hashcode方法是在Object对象中的,所以每个对象都有这两个方法,大多数时候我们为了实现特定需求需要重写这两个方法 equals和hashcode方法常用在同一个类中用于比较,尤其是在set集合中比较元素是否重复 equals方法返回true的两个对象,hashcode一定相同 hashcode相同的两个对象,equals方法不一定返回true…
大多转载自 百度知道,个人整理以便日后阅读. value1.compareTo(value2) == 0 value1.equals(value2) equals的效率高些,compareTo其实就是按照编码的数值求差值,根据差值进行比较,它能确定两个String在字典顺序上的前后性,当你只是想知道是否一致时,用equals也行,效果一样. 另外,equals是Object的方法,要求涉及到比较操作的继承类要自己重写该方法,所以String重写了equals,而compareTo为String的…
compare 从这里可以看出,compare是Comparator接口中的一个类,再看一下源代码中的解释 Compares its two arguments for order. Returns a negative integer,zero, or a positive integer as the first argument is less than, equalto, or greater than the second 如果第一个参数小于第二个参数,就返回一个负数,如果等于就返回0…
Kruger上课讲到==和equals()方法是不同的,经过查询将具体内容整理一下,在查询过程中发现hashCode()方法与equlas()联系紧密,故一起研究. 比较浅显,以后如果理解更多随时更新. 以下一段代码主要解释==与equals的不同 String a = "nihao"; String b = "nihao"; String d = "niha"; String e = new String("nihao");…
public int compareTo(String anotherString) 按字典顺序比较两个字符串.该比较基于字符串中各个字符的 Unicode 值.将此 String 对象表示的字符序列与参数字符串所表示的字符序列进行比较.如果按字典顺序此 String 对象在参数字符串之前,则比较结果为一个负整数.如果按字典顺序此 String 对象位于参数字符串之后,则比较结果为一个正整数.如果这两个字符串相等,则结果为 0:compareTo 只有在方法 equals(Object) 返回…
java中的数据类型,可分为两类:  1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolean    他们之间的比较,应用双等号(==),比较的是他们的值.  2.复合数据类型(类)    当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false. JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定…
1. hashcode 1.1 hashcode来源 1.2 hashcode的形式 1.3 hashcode目的 1.4 hashcode规则 1.5 hashcode作用体现 1.6 重写hashcode方法 2. equals方法 2.1 equals来源 2.2 equals目的 2.3 equals性质 2.4 重写equals与hashcode方法 2.5 equals与hashcode的联合使用 3 包装类的hashCode()实现 4.包装类的equals()的实现 1. has…
背景:学习辉哥总结的基础知识,从头来,直面短板. 1 问题引入及分析 请看下面的代码清单1 @Test public void test01() { String a = "a" + "b" + 1; String b = "ab1"; System.out.println(a == b); } 上述这段代码来源自谢宇编著的书籍<Java特种兵>上册. 代码清单1中的输出是 true 这是个考察Java基本功的问题,类似的问题还有很多…
本文只介绍了比较方法,但是EndsWith,IndexOf等方法均采用相同的过程,先设置CultureInfo(一般情况下调用当前线程的CultureInfo,该语言文化可以通过控制面板设置),然后调用CultureInfo实例下面的CompareInfo属性,实例化语言/国家的CompareInfo实例,并调用对应的字符串操作方法. 比较两个字符串是最常见的字符串操作.一般应为两个原因要比较字符串:判断相等性或者排序(通常是为了显示给用户看).判断字符串相等性或者排序时,强烈建议调用Strin…
在进行判断操作时,常常会用到==或者equals()进行等价判断,那么两者究竟有什么区别呢,下面整理一下个人理解. 简单介绍: ==是一种引用相等性比较符,判断引用到堆上同一个对象的两个引用是相等的.要比较两个基本类型是否相等,一般使用==.示意图: equals()方法是一种对象相等性比较方法,判断堆上的两个不同对象在意义上是相同的.如果一个变量指向的数据为对象类型,如java的包装类(String等),则一般使用equals()进行比较.示意图: 例: int a = 10; int b =…
本文探讨的是老掉牙的基础问题,先建个实体类 package com.demo.tools; public class User { private String name; public User(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } } 测试: public static…
private final char value[]; private int hash; // Default to 0 public String(String original) { this.value = original.value; this.hash = original.hash; } public String(char value[]) { this.value = Arrays.copyOf(value, value.length); } String: |--Compa…