---恢复内容开始---

equals:用于判断两个变量是否是对同一个对象的引用,即堆中的内容是否相同.

1.第一:对象不同,内容相同:

==:等于。比较两个地址是不是一样的(地址一样值肯定一样)(比较的是引用,引用是什么下面有介绍)
equals:相同。比较两个地址指向的 实际对象的内容 是不是同一个(比较的是对象)
两个长得一样的人,只能说长的相同(equals),但是不等于他们俩是一个人。

   package proj1;
public class file2 { public static void main(String[] args) {
String s = new String("java");
String s1 = new String("java"); System.out.println(s==s1); //false
System.out.println(s.equals(s1)); //true
}

  第二:同一对象,"等号和

equals结果相同,引用类型做比较的时候两个都可以;

引用类型:

"引用"(reference)是c++的一种新的变量类型,是对C的一个重要补充。它的作用是为变量起一个别名。假如有一个变量a,想给它起一个别名,可以这样写:

int a;int &b=a;

这就表明了b是a的"引用",即a的别名。经过这样的声明,使用a或b的作用相同,都代表同一变量。在上述引用中,&是"引用声明符",并不代表地址。

不要理解为"把a的值赋给b的地址"。引用类型的数据存储在内存的堆中,而内存单元中只存放堆中对象的地址。声明引用并不开辟新的内存单元,所以b和a都代表同一变量单元。

package proj1;

public class file2 {

	public static void main(String[] args) {
String s1 = new String("java");
String s2 = s1; System.out.println(s1==s2); //true
System.out.println(s1.equals(s2)); //true //true
} }

  

第三:这种情况值相同对象就是相同的

package proj1;

public class file2 {

	public static void main(String[] args) {
String s1 = "java";
String s2 = "java"; System.out.println(s1==s2); //true
System.out.println(s1.equals(s2)); //true //true //true
} }

  第四:下列情况注意,当不是直接赋值而是其他类型转化过来的时,对象发生改变。由于t的值是s1转化而来所以不会放到常量池。所以当再次把"11"给s时,它会新赋值再放到常量池

当再次给s2时由于常量池中s已经放进去"11"这个值了,所以就直接在常量池中找到赋给s2.所以(t==s(false) t==s2(false)  不是同一个对象)  s==s2(true)(还是指向常量池中的同一个对象)

package proj1;

public class file2 {

public static void main(String[] args) {
int s1 =11;
String t=String.valueOf(s1);
String s="11";
String s2 = "11";

System.out.println(s2==t);
System.out.println(s==t);
System.out.println(s2==s); //常量池中引用了同一个对象
System.out.println(t.equals("11"));
}

}

 

 

---恢复内容结束---

equals和==的区别的更多相关文章

  1. java equals和==的区别

    大概说equals和==都比较的是什么: 1. boolean tem = a == b; 首先==比较的肯定是地址,从堆栈的角度说也就是说==比较的是栈上面的内容.因为栈是用来存放地址或是java中 ...

  2. equals与==的区别

    equals与==的区别. 下面是equals的源码 public boolean equals(Object anObject) { if (this == anObject) { //如果两个对象 ...

  3. equals和==的区别 你真的掌握了吗?

    PS:最近读Java编程思想的时候发现了一些小问题.就是equals方法和==,感觉自己是真正掌握了,其实并没有.简单的记录一下. 学习内容: 1.equals 和 == 的区别  equals和== ...

  4. 【ASP.net】Equals 和 == 的区别

    在比较Equals 和 ==的区别前.我们先来了解下相关的知识 C#数据类型 1.值类型 值类型有: 值类型包括:简单类型.结构类型.枚举类型:引用类型包括:Object 类型.类类型.接口.代表元. ...

  5. 【java】由equals和==的区别引出的常量池知识

    equals和==的区别,百度查到的结果大都是:equals比较的是值,==比较的是引用地址. String str1 = "abc"; String str2 = "a ...

  6. 比较compareTo与equals及==的区别

    1.compareTo: 附上:源码: public int compareTo(String anotherString) {         int len1 = value.length;   ...

  7. Java笔记——equals和==的区别

    摔在这里几次,还是记下来吧. 原文:http://www.cnblogs.com/shenliang123/archive/2012/04/16/2452156.html -------------- ...

  8. java中equals和==的区别 (转)

    java中equals和==的区别  值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中. ==操作比较的是两个变量的值是否相等,对于引 ...

  9. equals()和hashCode()区别?

    equals()和hashCode()区别? ------------------------------------------------- equals():反映的是对象或变量具体的值,即两个对 ...

  10. 【转】Java中equals和==的区别

    [转]Java中equals和==的区别 java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boole ...

随机推荐

  1. 1.MongoDB报错 Failed to connect 127.0.0.1:27017 Mongo运行错误

    1.Mongo运行错误:Failed to connect 127.0.0.1:27017 Mongo运行错误:Failed to connect 127.0.0.1:27017,reason:err ...

  2. 配置nginx+php

    一般这样配置 此时很多教程会教大家这样配置Nginx+PHP: server { listen 80; server_name foo.com; root /path; location / { in ...

  3. PE440

    一些证明,推荐复制入atom观看 首先我们考虑这个T(n)是什么,我们可以列出递归式: (definition:T) T(0) = 1 T(1) = 10 T(n) = 10*T(n-1) + T(n ...

  4. ios 抓取真机的网络包

    一直被如何从真机上抓包所困扰!今天偶然看到了最简单有效的方法!分享一下: 原地址链接 http://blog.csdn.net/phunxm/article/details/38590561 通过 R ...

  5. wow经典台词

    永恒岛,磐皂在玄牛上场时喊:你能否独立山巅,任由风霜侵袭,直至沧海变为桑田,高山沉入海底?风刀霜剑,四面受敌.不动如山,亘古不移. 巫妖王:当一切结束,你会跪求我的宽恕...而我,会拒绝你! 伊利丹: ...

  6. String字符串去掉最后一个","号的几种方式

    String a = "struts-default.xml,struts-plugin.xml,struts.xml"; String[] bStrings = a.split( ...

  7. Sublime Text 2 增加python版本

    当系统中装有多个python版本时,Sublime Text 2  使用哪个版本需要手动添加 键入一下内容,path输入python的安转路径 保存至Python27.sublime-build文件 ...

  8. 【控制iOS7兼容iOS6 状态栏的显示不完全 简单缩写】

    #if ios7 self.automaticallyAdjustsScrollViewInsets = YES; self.edgesForExtendedLayout = UIRectEdgeNo ...

  9. VMware如何实现和主机共享网络上网

    VMware虚拟机的三种联网方法及原理 一.Brigde--桥接  :默认使用VMnet0 1.原理: Bridge  桥"就是一个主机,这个机器拥有两块网卡,分别处于两个局域网中,同时在& ...

  10. C#(委托a)

    C#(委托a) public delegate double TheOperator(double x, double y); public class Operators { static publ ...