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

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. Python递归及斐波那契数列

    递归函数 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数.举个例子,我们来计算阶乘 n! = 1 * 2 * 3 * ... * n,用函数 fact(n)表示,可 ...

  2. JavaScript高级程序设计学习笔记--错误处理与调试

    try-catch语句 只要代码中包含finally子句,则无论try或catch语句块中包含什么代码--甚至return语句,都不会阻止finally子句的执行,来看下面这个函数: function ...

  3. 搭建Git服务器

    在远程仓库一节中,我们讲了远程仓库实际上和本地仓库没啥不同,纯粹为了7x24小时开机并交换大家的修改. GitHub就是一个免费托管开源代码的远程仓库.但是对于某些视源代码如生命的商业公司来说,既不想 ...

  4. CKEditor 配置

    在asp.net 中注意需要特殊处理控件的ID 先引入js <script type="text/javascript" src="ckeditor/ckedito ...

  5. 设置app的启动图

    Step1 1.点击Image.xcassets 进入图片管理,然后右击,弹出"New Launch Image" 2.如图,右侧的勾选可以让你选择是否要对ipad,横屏,竖屏,以 ...

  6. UItableview 添加 uisearchController

    @property (nonatomic, strong) UISearchController* searchController; self.searchController = [[UISear ...

  7. python_配置

    代码示例:https://pan.baidu.com/s/1pLjLPSv 1.自动补全功能 许多人都知道 iPython 有很好的自动补全能力,但是就未必知道 python 也同样可以 Tab 键补 ...

  8. 与你相遇好幸运,Postgresql和postgis安装

    笔者开发环境: windows 7 x86_64 一开始安装的是官网最新版 PostgreSQL 9.6 ,安装成功 之后安装PostGIS Bundle 2.2 for PostgreSQL x64 ...

  9. [MongoDB]安装MongoDB

    汇总: 1. [MongoDB]安装MongoDB2. [MongoDB]Mongo基本使用:3. [MongoDB]MongoDB的优缺点及与关系型数据库的比较4. [MongoDB]MongoDB ...

  10. IT干货

    最近翻看Redis相关的中文书籍时,发现了很多错误,包括翻译错误及理论错误,因此想搜集一些相关的外文书籍看看.以下几个链接,内容大同小异,均可免费下载相关的英文书籍PDF版,内容涵盖了IT的方方面面. ...