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方法也是用双等号(==)进行比較。

例证:

package demo;

/**
* @author wanghj
* @date 2016/03/06
*/
public class CSDN_equals {
public static void main(String []args){
//variable pools
String str1="TestString";
String str2="TestString";
String str3="TestStringDif";
String str4=new String("TestString");
String str5=new String("TestString"); //Just compare "=="
System.out.println("str1==TestString:"+ (str1=="TestString"));
System.out.println("str1==str2:"+ (str1==str2));
System.out.println("str1==str3:"+ (str1==str3));
System.out.println("str1==str4:"+ (str1==str4));
System.out.println("str4==str5:"+ (str4==str5)); //Just compare "equals"
System.out.println("str1.equals(TestString):"+str1.equals("TestString"));
System.out.println("str1.equals(str2):"+str1.equals(str2));
System.out.println("str1.equals(str3):"+str1.equals(str3));
System.out.println("str1.equals(str4):"+str1.equals(str2));
System.out.println("str4.equals(str5):"+str4.equals(str5));
System.out.println("equals special test:"+"2016".equals(2016));
}
}

Object的equals方法:

    public boolean equals(Object obj)
{
return this == obj;
}

String的equals方法:

    public boolean equals(Object obj)
{
if(this == obj)
return true;
if(obj instanceof String)
{
String s = (String)obj;
int i = value.length;
if(i == s.value.length)
{
char ac[] = value;
char ac1[] = s.value;
for(int j = 0; i-- != 0; j++)
if(ac[j] != ac1[j])
return false; return true;
}
}
return false;
}

Equals和==的差别的更多相关文章

  1. String类型中 "=="和"equals"比较的差别

    String类型中 "=="和"equals"比较的差别 先说明一下String类型的变量的创建方式 在创建新的String类型的变量时,首先会在缓冲区查找是否 ...

  2. Java中的equals和==的差别 以及Java中等价性和同一性的讨论

    ==对基本数据类型比较的是值,对引用类型比较的是地址 equals()比较的是对象的数据的引用 等价性原理: 自反性    x.equals(x)为true 对称性    x.equals(y) 为t ...

  3. Java中String推断相等equals与==的差别以及StringBuilder的equals

    Java中String类型具有一个equals的方法能够用于推断两种字符串是否相等,可是这样的相等又与运算符==所推断的"相等"有所不同,接下来进行分析,结论由程序进行验证 Str ...

  4. Java面试求职之==与equals()差别

    Java中equals和==的差别 java中的数据类型,可分为两类:     1.基本数据类型(也称原始数据类型):byte,short,char,int,long,float,double,boo ...

  5. 从Java的堆栈到Equals和==的比較

    认识Java中堆和栈 栈与堆都是Java用来在Ram中存放数据的地方. 与C++不同.Java自己主动管理栈和堆,程序猿不能直接地设置栈或堆. Java的堆是一个执行时数据区,类的对象从中分配空间.这 ...

  6. java学习——equals()和==的比较

    equals 方法是 java.lang.Object 类的方法. 下面从两个方面来说明equals()和==的差别:(1)对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比 ...

  7. 一个关于Integer的秘密

    先让大家看一段简单的代码: public static voidmain(String[] args) { Integera = 1; Integerb = 1; Integerc = 222; In ...

  8. Effective Java:对于全部对象都通用的方法

    前言: 读这本书第1条规则的时候就感觉到这是一本非常好的书.可以把我们的Java功底提升一个档次,我还是比較推荐的.这里我主要就关于覆盖equals.hashCode和toString方法来做一个笔记 ...

  9. 【面试】-Java基础知识

    1.Java的工作原理 1) Java源程序(.java)须要通过编译器编译成字节码(.class)文件; 2) Java程序的跨平台主要指字节码能够在不论什么具有Java虚拟机的设备上运行: 3) ...

随机推荐

  1. zookeeper集群安装及使用详解

    1. Zookeeper简介 ZooKeeper是一个开源的分布式框架,提供了协调分布式应用的基本服务.它向外部应用暴露一组通用服务——分布式同步(Distributed Synchronizatio ...

  2. c++ 四种类型转换机制

    类型转换机制可以分为:隐式类型转换 和 显示类型转换(强制类型转换) C中的类型转换: 事情要从头说起,这个头就是C语言.我们已经习惯了使用C-like类型转换,因为它强大而且简单. 主要有一下两种形 ...

  3. 【转】linux之type命令

    转自: http://codingstandards.iteye.com/blog/831504 用途说明 type命令用来显示指定命令的类型.一个命令的类型可以是如下之一 alias 别名 keyw ...

  4. Android studio如何显示代码行数

    1.首先打开as:File-->Settings... 2.Editor-->General-->Appearence 3.右边show line numbers 4.依次点击app ...

  5. SQL基本操作——日期函数

    SQL日期:当我们处理日期时,最难的任务恐怕是确保所插入的日期的格式,与数据库中日期列的格式相匹配.只要数据包含的只是日期部分,运行查询就不会出问题.但是,如果涉及时间,情况就有点复杂了.在讨论日期查 ...

  6. Android本地消息推送

    项目介绍:cocos2dx跨平台游戏 项目需求:实现本地消息推送,需求①:定点推送:需求②:根据游戏内逻辑实现推送(比如玩家体力满时,需要计算后到点推送):需求③:清理后台程序或重启后依然能够实现本地 ...

  7. mysql_数据查询_嵌套查询

    嵌套查询 一个SELECT-FROM-WHERE语句称为一个查询块. 嵌套查询:将一个查询块嵌套在另一个查询块的WHERE子句或者HAVING短语的条件中的查询. 注:子查询的SELECT语句中不能使 ...

  8. CPU重要性能参数

    内容来自http://www.360doc.com/content/18/1124/15/60810319_796935567.shtml CPU有几个重要的参数:主频.核心.线程.缓存.架构.那么他 ...

  9. 图像处理中创建CDib类时无法选择基类类型时怎么办

    图像处理中创建CDib类时无法选择基类类型时怎么办? 类的类型选择Generic Class 在下面的篮筐里输入CObject就行了

  10. profiler-gpu分析记录

    查看 Android 手机芯片信息下面以 夜神模拟器为例 D:\cmderλ adb devices # 1. 列出安卓设备List of devices attached127.0.0.1:6200 ...