java中 == 与 equal区别 转

java中的数据类型,可分为两类:
1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean   他们之间的比较,应用双等号(==),比较的是他们的值。 
2.复合数据类型(类)   当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地 址,但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。   对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是基于他们在内存中的存放位置的地址值的,因为Object的equals方法也是用双等号(==)进行比较的,所以比较后的结果跟双等号(==)的结果相同。

时间: 2024-10-18 22:52:56

java中 == 与 equal区别 转的相关文章

java中“==”和equal区别

8个月以后就要正式找工作啦,我觉得现在是时候花时间好好深入研究一下以前比较混肴的知识.这就当作是自我成长的第一步! 对于String中的“equal方法”和“==”一直有点混肴,今天重新看了一下他们两点的区别,记录下来让自己以后不在忘记! 先说“==”: “==”是用来比较两个String对象在内存中的存放地址是否相同的.例如, String test1 = "test"; String test2 = "test"; String test3 = new Stri

Java 中 == 和 equal 的区别 (String)

String s1 = "abcd"; String s2 = "cdfe"; s1 == s2; // 比较s1和s2这2个对象的地址,如果一样,则为true,否则为false s1.equal(s2); //比较s1和s2的内容,如果相同则为true Java 中 == 和 equal 的区别 (String),布布扣,bubuko.com

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

java中==与equal()方法的区别 java中==比较的是地址,equal比较的是值. 示例: 1 2 3 4 Integer a1 = new Integer(456);//实例化一个对象 Integer a2 = new Integer(456);//实例化一个对象 System.out.println(a1.equals(a2));//这里比较的是值,都是456,结果是true System.out.println(a1==a2);//这里比较的是地址,因为是2个对象,所以地址不同,

java中的equal函数和==

这道题是我注册德问的时候做到的一道简单的概念题目.这里主要借这道题帮大家区分一下在java中"=="和equal的区别: 记住一下两句话就足够了: 1."=="比较的是地址,如果两个对象指向内存中的同一块区域的时候,即地址相同,为true,否则为false 2.equal()比较的是对象的值.

原码,反码,补码详解及 Java中>>和>>>的区别

前两天分析 HashMap 的 hash 算法的时候,遇见了 >> 和 >>> 这两个符号,当时查了下资料,在脑子中过了一下.今天又碰到了,没想到竟然忘了  0-0........ 我这记忆力哎,不说了.只好做个笔记,提醒自己,遇到啥不会的最好记下来,好记性不如烂博客啊~ 既然涉及到位运算,我们追本索源,就先从最基础的原码,补码和反码学起.搜了一下这方面的资料,发现一篇专门介绍这方面的文章,写的很是透彻,便直接引用过来了,原文地址是:http://www.cnblogs.co

java中 == 与 equal 的区别

先看代码,以及运行结果 public static void main(String[] args) { System.out.println("对象比较"); String str1=new String("str"); String str2=new String("str"); System.out.println("==比较"+(str1==str2)); System.out.println("equal比

java中==和equal的区别

今天看到了一篇写的很好的博客,所以就转来了 转载地址:http://xiashengchao.iteye.com/blog/753409 值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中. ==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同. equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同. ==比较的是2个对象的地址,而equals比较

理解java中反射,区别Class.forName(),Class.forName().instance() ,new

先了解一下反射(这玩意着实让我理解了很久啊)博文参考(http://blog.csdn.net/cookieweb/article/details/7056277) 先了解一些基本的概念:运行时,编译时,编译型,解释型,类加载器,动态加载类  什么是编译?将原程序翻译成计算机语言,就是二进制代码,在java中是将.java文件也就是源程序翻译成.class的字节码  什么是编译时?将原程序翻译成计算机语言的过程中,将.java翻译为.class文件的过程  什么是运行时?就是在启动这个程序的时候

Java中==和equals区别详解

首先来说下两种比较符的使用场景: 1.==是一般用来比较值类型,比较两个数据类型的值是否相等,例如:byte,shot,char,int,long,float,double,boolean,值类型(还有对象引用)一般存储在内存的栈中 2.equals用来比较复合数据类型,复合数据类型的变量在栈中存储的是引用类型变量的地址,本身存储在堆中. 当使用==比较复合数据类型时,比较的是他们在内存中的地址,使用同一个new出来的是相等,否则不相等. JAVA当中所有的类都是继承于Object这个基类的,在