if (s == null || s.equals("")) ; } s.equals("")里面是要比对的字符串 声明字符串未赋初始值或值,然后比对就会出错,如: String str; if (str.eqeals("acb")){ // } "=="与equals()的区别 ==比较的是值,如果是int,long,或者float: str1.equals(str2)来判断,不能用==或者!=来判断,原因: 因为Strin…
Java中==.equals.hashcode的区别与重写equals以及hashcode方法实例  原文地址:http://www.cnblogs.com/luankun0214/p/4421770.html 1.重写equals方法实例   部分代码参考http://blog.csdn.net/wangloveall/article/details/7899948 重写equals方法的目的是判断两个对象的内容(内容可以有很多,比如同时比较姓名和年龄,同时相同的才是用一个对象)是否相同 如果…
背景:学习java的基础知识,每次回顾,总会有不同的认识.该文系转载 最近去面试了几家公司,被问到hashCode的作用,虽然回答出来了,但是自己还是对hashCode和equals的作用一知半解的,所以决定把它们研究一下. 以前写程序一直没有注意hashCode的作用,一般都是覆盖了equals,却没有覆盖hashCode,现在发现这是埋下了很多潜在的Bug!今天就来说一说hashCode和equals的作用. hashcode提升查找效率 先来试想一个场景,如果你想查找一个集合中是否包含某个…
今天阿里的人问我 equals 与hashcode的区别,我答不上来, 仔细查了一下,做了总结: (1) == 这是Java 比较内存地址,就是内存中的对象: java中的==是比较两个对象在JVM中的地址.比较好理解.看下面的代码: public class ComAddr{ public static void main(String[] args) throws Exception { String s1 = "nihao"; String s2 = "nihao&qu…
equals方法和==的区别   首先大家知道,String既可以作为一个对象来使用,又可以作为一个基本类型来使用.这里指的作为一个基本类型来使用只是指使用方法上的,比如String s = "Hello",它的使用方法如同基本类型int一样,比如int i = 1;,而作为一个对象来使用,则是指通过new关键字来创建一个新对象,比如String s = new String("Hello").但是它的内部动作其实还是创建了一个对象,这点稍后会说到.        …
      有个是否为零的判断[BigDecimal.ZERO.equals(ratio)]我用了BigDecimal的equals方法,结果,判断失败,因此特地分析一下equals与compareTo的区别.本文参考JAVA_VERSION="1.7.0".首先看一下BigDecimal的equals方法源码: public int compareTo(BigDecimal val) { // Quick path for equal scale and non-inflated c…
一.equals方法和==的区别 1.equals是String对象的方法,可以通过".“调用. 2.== 是一个运算符. 二.常用的比较用法 1.基本数据类型比较. equals和==都比较两个数值 是否相等.相等即为true,不相等则为false. 2.引用对象的比较. equals和==都比较栈内存中的地址是否相等.相等即为true,不相等则为false. 三.易错点 1.String是一个特殊的引用类型.对于两个字符串的比较,不管是==还是equals这两者比较的都是字符串是否相同. 2…
equals与hashCode的区别 1.类中的equals方法是一定要重写/覆盖(Override)的,因为要让它按照设计的需求来根据特征值判断等价性. 这里的特征值,就是String类型的name属性,表示每个Person对象的名字.由于在equals方法中只设定了这一个需要比较的特征值,因此只要两个Person类对象的name相同,那么他们的判断结果就是相同. 2.类中的hashCode方法需要重写/覆盖 事实上,当实现了1之后,就能保证判断两个对象等价性是否成立了(此时已经能保证程序中p…
一.Java下 1.几个例子 public static void main(String[] arge) { String str1 = new String("1234"); String str2 = new String("1234"); System.out.println("①new String()方式下==:" + (str1 == str2)); System.out.println("②new String()方式下…
原文链接:http://www.studyofnet.com/news/1188.html 本文导读: C#中Equals , == , ReferenceEquals都可以用于判断两个对象的个体是不是相等,对于相同的基本值类型,==和Equals()比较结果是一样的:由于ReferenceEquals()是判断两个对象的引用是否相等,对于值类型,因为每次判断前都必须进行装箱操作,也就是每次都生成了一个临时的object,因而永远返回false. 一.== 运算符 1.静态相等符号,对应存在的!…
一. ==和equals的区别 1. ==是运算符 2. equals是String对象的方法 一般有两种类型的比较 1. 基本数据类型的比较 2. 引用对象的比较 1. 基本数据类型的比较 ==和equals都比较的是值是否相等,相等则为true,否则为false 2. 引用对象的比较 ==和equals都是比较是栈内存中的地址是否相等,相等则为true,否则为false 注意: 1. String是一个特殊的引用数据类型,==比较的是字符串对象的引用地址是否一样,equals比较的是栈中的内…
原文链接:http://www.cnblogs.com/tinyphp/p/3768214.html "=="操作符的作用 1.用于基本数据类型的比较 2.判断引用是否指向堆内存的同一块地址. equals所在位置: 在Object类当中,而Object是所有类的父类,包含在jdk里面,但并不适合绝大多数场景,通常需要重写 public boolean equals(Object obj) { return (this == obj); } equals的作用: 用于判断两个变量是否是…
两者都是从Object类继承的方法,Object中equals方法比较的是this和参数传进来的对象的引用地址是否相同,这样的话,equals返回值为true的必要充分条件就是两者指向同一个对象,那么hashcode也相同. 上述说的是equals方法没有被重写的情况,如果被子类重写了,那么判断条件就有可能变了,举个极端的例子,什么判断条件没有,直接返回true,那么一个对象,不仅和同类的其他对象equals返回true,甚至和八竿子打不到的别的类的对象equals一下一样返回true.因此重写…
原文地址:http://www.cnblogs.com/luankun0214/p/4421770.html 感谢网友的分享,记录下来只为学习. 1.重写equals方法实例   部分代码参考http://blog.csdn.net/wangloveall/article/details/7899948 重写equals方法的目的是判断两个对象的内容(内容可以有很多,比如同时比较姓名和年龄,同时相同的才是用一个对象)是否相同 如果不重写equals,那么比较的将是对象的引用是否指向同一块内存地址…
http://www.codeproject.com/Articles/584128/What-is-the-difference-between-equalsequals-and-Eq When we create any object there are two parts to the object one is the content and the other is reference to that content.So for example if you create an ob…
Msdn中对equals方法的解释是:确定指定的对象是否等于当前对象. Equals方法是比较对象的内容,而==则是比较整个对象是否相等. Equals方法判断的是堆中的值,而==则判断的是堆栈中的值. C#提供值类型和引用类型两种. Equals是用来判断两个对象(除string类型外)是否相等,相等的条件是:值,地址,引用全相等,因为string类重写了equals方法,所以当string类型的对象用equals方法比较时只比较两个对象的值,相等返回true.这时就和==含义相同.而且对于值…
==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符. 如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆内存),变量也占用一块内存,例如Objet obj = new Object();变量obj是一个内存,new Object()是另一个内存,此时,变量obj所对应的内存中存储的数值就是对象占用的那块内存的首地址.对于指向对象类型的变量,如果要比…
今天在写表达式求值的时候,发现了equals和==||!=和!equals()之间是不一样的. 我就从网上搜了搜关于这方面的知识,然后在下面做一个总结: Java中有两类数据类型: 基本数据类型(Primitive Data Types) 其中:byte,short,char,int,long,double,boolean 他们用(==).(!=).(.equals())这三种方法进行比较的时候都是比较值 复合数据类型(Composite Data Types) 其中:String,数组,一般的…
1.使用equals( )方法比较两个字符串是否相等 boolean equals(Object str) 这里str是一个用来与调用字符串(String)对象做比较的字符串(String)对象. 如果两个字符串具有相同的字符和长度,它返回true,否则返回false.这种比较是区分大小写的. 2.为了执行忽略大小写的比较,可以调用equalsIgnoreCase( )方法.当比较两个字符串时,它会认为A-Z和a-z是一样的. boolean equalsIgnoreCase(String st…
==与equals的主要区别是: ==: ==常用于比较原生类型(基本数据类型):byte,short,char,int,long,float,double,boolean,比较的是他们的值. 若用==来比较两个对象,则比较的是这两个对象的内存地址.因此,除非是同一个new 出来的对象,比较结果为true,不同对象用==比较都是false. 但是,对于拥有缓存机制的对象,例如Integer.Byte .Short .Long. Character对象(目前就知道这几个对象),在其缓存范围内,是可…
equals与 == 的区别 初学Java的人(me),有很长一段时间对equals()这个方法感到很懊恼,实在是弄不明白到底何时比较的是地址,又什么时候比较内容呢?因为要找工作,要面试.本人通过查阅很多前辈的博客,也记载了很多笔记,死记硬背的去记住在Object下比较的是地址,在String类下比较的是值.但是,碰到了StringBuffer,就又不知道比较的是什么了?所以,痛定思痛,查看源代码,揭开迷雾. 1. 首先,我们要知道equals()方法是定义在Object类下的方法,但是java…
首先我们创建一个类 public class People { private String name; private String address; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String…
Java中的"=="和equals方法究竟有什么区别? 1.==操作符 "=="操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符. 如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆内存),变量也占用一块内存,例如: Objet obj = new Object(); 变量obj是一个内存,new Object()是另一…
1.使用equals( )方法比较两个字符串是否相等(区分大小写) 2.使用equalsIgnoreCase( )方法比较两个字符串是否相等(不区分大小写) boolean equalsIgnoreCase(String str) 下面的例子说明了equals( )和equalsIgnoreCase( )方法: class equalsTest { public static void main(String args[]) { String s1 = "Hello"; String…
在这里,首先得告诉大家,在C#中,不管是 == ,还是 Equals() 我们都是可以重写的.所以,在具体选择使用两者时,还是得根据这两个方法的具体实现逻辑来选择. 值类型的比较 对于值类型来说,两者比较的都是”内容”是否相同,即 值是否一样,很显然此时两者是划等号的. static void Main(string[] args) { ; ; Console.WriteLine("== 比较结果:" + (a == b)); Console.WriteLine("Eaual…
大多转载自 百度知道,个人整理以便日后阅读. value1.compareTo(value2) == 0 value1.equals(value2) equals的效率高些,compareTo其实就是按照编码的数值求差值,根据差值进行比较,它能确定两个String在字典顺序上的前后性,当你只是想知道是否一致时,用equals也行,效果一样. 另外,equals是Object的方法,要求涉及到比较操作的继承类要自己重写该方法,所以String重写了equals,而compareTo为String的…
equals只能判断两个变量的值是否相等.contains常用与集合中判断某个对象是否含有这个元素equals是需要两个对象完全相同才会返回true,而contains是要循环遍历容器里的所有内容后判断是否包含对象…
前言:对于引用类型的变量,它涉及到两块内存,一块是堆中的内存,用于存放new出来的对象(就是对象的具体内容):另一块是栈内存,用来存放变量在堆内存中的地址. 1,“==” 判断两个变量是否是同一个变量 基本数据类型:直接比较值 引用数据类型:需要比较对应的引用的内存的首地址 2,equals 用来比较两个对象的内容是否相等 这个是Object类型的方法,基本数据类型不可用 由上面Object类中equals的实现可以看出,equals就是通过“==”来实现的,equals判断内容相等的功能是在引…
1.重写equals方法实例   部分代码参考http://blog.csdn.net/wangloveall/article/details/7899948 重写equals方法的目的是判断两个对象的内容(内容可以有很多,比如同时比较姓名和年龄,同时相同的才是用一个对象)是否相同 如果不重写equals,那么比较的将是对象的引用是否指向同一块内存地址,重写之后目的是为了比较两个对象的value值是否相等.特别指出利用equals比较八大包装对象(如int,float等)和String类(因为该…
"=="  操作符的作用: 1.用于基本数据类型的比较 2.判断引用是否指向堆内存的同一块地址. equals的作用: 用于判断两个变量是否是对同一个对象的引用,即堆中的内容是否相同,返回值为布尔类型 在class文件中有一部分 来存储编译期间生成的 字面常量以及符号引用,这部分叫做class文件常量池,在运行期间对应着方法区的运行时常量池. String str1 = "hello world";和String str3 = "hello world&q…