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. $stylus美化$

    一直在用洛谷 当然不一定是洛谷 其他的网站也可以用 比如说codeforces 还是决定要美化一波 首先去找一个插件 叫做 stylus stylus下载的很多 我不想过多说明. Google和QQ浏 ...

  2. Android 显示意图和隐式意图的区别

    意图在android的应用开发中是很重要的,明白了意图的作用和使用后,对开发会有很大帮助.如果没有把意图搞懂,以后开发应用会感觉缺些什么.        意图的作用:        1.激活组件   ...

  3. 【Leetcode】84. Largest Rectangle in Histogram 85. Maximal Rectangle

    问题描述: 84:直方图最大面积. 85:0,1矩阵最大全1子矩阵面积. 问题分析: 对于84,如果高度递增的话,那么OK没有问题,不断添加到栈里,最后一起算面积(当然,面积等于高度h * disPo ...

  4. 编译安装php、nginx

    以centos6.6为例 1.安装以及配置php 首先在官网下载源码包http://php.net/downloads.php 这里下载php-7.1.16 .tar.gzcd php-7.1.16 ...

  5. Unity Toast插件(UGUI版)

    简介 介于自己之前经历的一些开发过程,非常希望unity能有类似Toast的功能用于一些简单的信息显示.但是找来找去找了半天,都木有发现,实在是憋不住了,自己写了个,感觉还可以用,发出来共享一下... ...

  6. java定时器和实时查询数据库

    定时器: Timer timer = new Timer();                    timer.schedule(new TimerTask() {                  ...

  7. NSNotificationCenter 的使用详解

    通常我们在 iOS 中发生什么事件时该做什么是由 Delegate 实现的,例如 View 加载完后会触发 viewDidLoad.Apple 还为我们提供了另一种通知响应方式,那就是 NSNotif ...

  8. 深入浅出的 SQL Server 查询优化

    目前网络数据库的应用已经成为最为广泛的应用之一了,并且关于数据库的安全性,性能都是企业最为关心的事情.数据库渐渐成为企业的命脉,优化查询就解决了每个关于数据库应用的性能问题,在这里microsoft ...

  9. JS——筋斗云案例

    需求: 1.鼠标移动到哪里,云彩移动到哪里 2.鼠标离开,云彩回到原点 3.鼠标离开,云彩回到之前点击的地方 <!DOCTYPE html> <html lang="en& ...

  10. PHP递归复制文件夹以及传输文件夹到其他服务器。

    项目中需要复制整个文件夹,有时候还需要将整个文件夹传输到远程服务器. 这里就要递归遍历整个文件夹了,想看递归遍历文件夹的代码. function deepScanDir($dir) { $fileAr ...