Java中“==”、equals()、hashcode()的区别与联系。

你真的懂了 == 与 equals() 与 hashCode() 的区别与联系了吗? == 与 equals() 与 hashCode() 居然还可以问出这么多问题?你都能回答的出来吗? 阅读详情


     在Java中判断两个对象是否相等的方法有许多,这里记录一下我所理解的三个方法之间的区别与联系


     首先我们最长用到的应该是“==”,毕竟很多人是从C语言入门编程的,所以更多的时候我们会习惯使用“==”来判断两个对象是否相等,“==”是Java语言为我们预留的关键字,用于比较两个对象是否相等。刚刚接触Java的时候有人告诉我Java中是不存在指针的(根据个人理解而异),但是我的理解是,C语言中指针的含义是存储数据的地址,那么Java中的数据也是存储在内存中的当然也有地址,没错就是我们所说的对象,我所理解的对象不仅仅是现实实物的抽象化产物,说白了也就是我们在C语言中所理解的指针,也就是存储数据的地址(便于初学者理解的说法)。那么重点来了,“==”所比较的就是两个对象所存储的数据是否在同一地址内(说了这么多其实总结起来就一句话)。

     例如:

  String s1 = new String("xupt");
  String s2 = new String("xupt");
  //此时输出的结果为false
  System.out.println(s1 == s2);

     这里我们分析一下输出的结果

     首先定义了一个String类型的对象s1,并为其开辟了一段新的内存,其中存储的值为xupt

     然后又定义了一个String类型的对象s2,为其开辟了一段新的内存,其中存储的值也为xupt

     注意我上面的用词,s2是新开辟的另一端内存,所以经过“==”比较过后两段不同的内存当然不会是相等的,所以输出的结果是False。

     


      接下来我们说说equals()方法,这个方法是Object类提供的方法,我们都知道Object类是所有类的基类(所有类都继承自Object类),所以每一个类都有equals()方法。equals()方法的作用也是比较两个对象是否相等(此处与“==”作用一致),那么equals()方法又有什么用呢?我们之前说过所有的类都继承自Object类,也就都继承了Object类中的方法,但是作用都是一样的吗?当然不是的,如果一样的话就没有其出现的必要性了,因为“==”完全可以胜任的功能为什么要多写一个方法去提供这种功能呢?众所周知,Java三大特性:继承、封装、多态。继承下来后我们是可以重写的啊!那么是不是这样呢?我们来看一下。

        首先我们来看一下Object类中提供的equals()方法

public boolean equals(Object var1) {
        return this == var1;
}
        没错,是和“==”相同的,那么为了验证我们之前所说的重写我们来看看String类中的源码
public boolean equals(Object var1) {
        if (this == var1) {
            return true;
        } else {
            if (var1 instanceof String) {
                String var2 = (String)var1;
                int var3 = this.value.length;
                if (var3 == var2.value.length) {
                    char[] var4 = this.value;
                    char[] var5 = var2.value;

                    for(int var6 = 0; var3-- != 0; ++var6) {
                        if (var4[var6] != var5[var6]) {
                            return false;
                        }
                    }

                    return true;
                }
            }

            return false;
        }
    }

        很明显,和Object类中提供的方法是不一样的,这里我们就不一一解释源码了,有点C语言基础或者Java基础的大佬们都能看出来这是比较字符串是否相等的方法,所以String类中通过重写改变了equals()方法的功能,也就印证了我们上面的说法,这里要提一下,很多初学者会为了方便记忆理解成“==”是用作比较地址而equals()是用作比较内容,这里就错了,equals()根据特定的类其重写的内容是不一定的。



        说完了常用的两个我们再来说说hashcode()方法,这个方法也是Object类所提供的,是通过一定的算法算出存储内容的hash码,也用作比较两个对象是否相等,说白了就是和equals()的方法一样,只是这个方法一般开发者不会去主动调用,所以在改写equals()的同时我们一定要改写hashcode()方法并且保证两个方法在参数相同的时候输出的结果是一致的。



        综上所述就是我们常用来比较两个对象是否相等的方法之间的区别。

保姆级教程!Python爬虫爬取知乎回答,保存为Markdown文件 本教程实现了知乎公开回答的完整爬取与Markdown保存,核心流程为「请求页面→解析作者/时间/正文/图片→下载图片→保存MD文件」,步骤清晰,代码可直接复用关键特性:支持合并/单文件两种保存模式、自动下载图片并引用、中文乱码防护、非法文件名过滤,满足日常整理知乎回答的需求新手友好:无需复杂配置,仅需修改知乎问题URL即可运行,全程无坑,5分钟内可看到运行结果灵活扩展:支持进阶优化(登录、分页、格式完善),可根据个人需求调整功能。 阅读详情

相关推荐

Ubuntu20.04配置PX4环境启动或编译jmavsim 出现的错误及解决办法

错误1:ant命令未找到

Iamsonice的博客 8855

hashcode和equals的关系

了解hashcode和equals

qq_51575883的博客 4372

Calibre提参实战:如何用hcell和xcell文件精准屏蔽模块(附避坑指南)

本文详细解析了Calibre提参过程中hcell和xcell文件的应用技巧,帮助工程师精准屏蔽模块以优化寄生参数提取。通过对比hcell与xcell的核心差异、图形界面与命令行操作指南,以及常见问题排查方法,提升芯片后端设计效率。附避坑指南,解决EETOP论坛热议的模块丢失问题。

weixin_26795617的博客 438

面试官:equals和hashCode到底有什么关系?

在逛 programcreek 的时候,我发现了一些专注细节但价值连城的主题。比如说:Java 的 equals() 和 hashCode() 是远房亲戚吗?像这类灵魂拷问的主题,非常值得深入地研究一下。 另外,我想要告诉大家的是,研究的过程非常的有趣,就好像在迷宫里探宝一样,起初有些不知所措,但经过一番用心的摸索后,不但会找到宝藏,还会有一种茅塞顿开的感觉,非常棒。 对于绝大多数的初级程序员或...

沉默王二 1万+

VBA中如何使用Edge内核Browser?

在微软宣布停止对IE的支持后,许多使用VBA中Web Browser的用户遇到了困境,因为Web Browser使用的IE内核。然而微软并没有给出支持Edge的新版Web Browser,网上许多第三方的库也不够完善。经过调研,libEdge可以较好的和VBA集成,实现在Excel中打开Browser,甚至能够通过执行js代码,获取web页面的信息。项目需要WebView2Loader.dll和LibEdge.dll两个库,区分x86和x64版本。

金木AI 2396

抖音最新风控体系研究

小编从技术角度对抖音的风控史和落地目标,跟大家聊一聊抖音,包括海外版抖音TikTok的现状与生态。 1、非常非常早的时期,抖音刚出来的时候,没有任何封禁,这个阶段,导入一个开发库,加上一个请求头,咵咵咵的数据随便拿。 2、2018-2019年,抖音加入了设备id和xg机制,在绝大多数的接口中,携带了设备id参数,同时在请求头中加入了xg,如今的apk市场,能追溯到的最早xg是0200打头的,而小编见过的最早的xg是0000打头的。这个时期的接口,这些参数都还只是预设,没有实际的用处,设备随便写,

qq517348412的博客 1万+

HashCode和Equals的关系

一丶HashCode hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。hashCode() 定义在JDK的Object.java中,这就意味着Java中的任何类都包含有hashCode() 函数。 //hashCode源码: public int hashCode() { int h = ...

weixin_44664277的博客 1万+

基于YOLOv11的军事目标识别系统设计与实现(坦克、舰船检测)

DOTA-v2.0(包含多种军事装备的航拍图像)图片数量:11,268类别:18类,包括坦克、舰船、战斗机等分辨率:800×800~4000×4000HRSC2016(高分辨率舰船检测数据集)图片数量:1,061类别:舰船及子类特点:包含多种视角和复杂背景图片数量:5,000+类别:22种军用飞机标注:精确边界框自建数据集建议收集来源:公开军事演习视频、卫星图像、模拟游戏截图数据增强:模拟不同天气、遮挡、低光照等战场环境。

YOLO 450

Java基础篇:什么是hashCode 以及 hashCode()与equals()的联系

1、什么是hashCode: hashCode就是对象的散列码,是根据对象的某些信息推导出的一个整数值,默认情况下表示是对象的存储地址。通过散列码,可以提高检索的效率,主要用于在散列存储结构中快速确定对象的存储地址,如Hashtable、hashMap中。 为什么说hashcode可以提高检索效率呢?我们先看一个例子,如果想判断一个集合是否包含某个对象,最简单的做法是怎样的呢?逐一取出集合中的每个元素与要查找的对象进行比较,当发现该元素与要查找的对象进行equals()比较的结果为true时,则停止继续

张维鹏的博客 6万+

Ceres&OpenCV 单目相机标定(论文复现)

Ceres&OpenCV 单目相机标定(论文复现)

dayuhaitang1的博客 367

rk3576 点亮 LCD(eDP)

RK3576 处理器集成了对 **eDP (Embedded DisplayPort)** 接口的支持,主要用于驱动嵌入式或笔记本电脑的内置屏幕。支持 **eDP 1.3 版本协议**, 最大可支持 ****4K@120Hz**。

weixin_35723192的博客 352

hashCode() 和 equals()的关系

一.基础:hashCode() 和 equals() 简介在学习 hashCode() 和 equals() 之间的关系之前, 我们有必要先单独地了解他俩的特点.equals()equals() 方法用于比较两个对象是否相等,它与 == 相等比较符有着本质的不同。在万物皆对象的 Java 体系中,系统把判断对象是否相等的权力交给程序员。具体的措施是把 equals() 方法写到 Object 类中...

global_coding的博客 2136

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Java中“==”、equals()、hashcode()的区别与联系

在Java中判断两个对象是否相等的方法有许多,这里记录一下我所理解的三个方法之间的区别与联系 首先我们最长用到的应该是==,毕竟很多人是从C语言入门编程的,所以更多的时候我们会习惯使用==来判断两个对象是否相等,==是Java语言为我们预留的关键字,用于比较两个对象是否相等。刚刚接触Java的时候有人告诉我Java中是不存在指针的(根据个人理解而异),但是我的理解是,C语言中指针的含义是存储数据的...

Alpha_Paser的博客 254

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

hashCode()和equals()的区别

一、hashCode()和equals()是什么? hashCode()方法和equals()方法的作用其实一样,在Java里都是用来对比两个对象是否相等一致。 二、hashCode()和equals()的区别 下边从两个角度介绍了他们的区别:一个是性能,一个是可靠性。他们之间的主要区别也基本体现在这里。 1、equals()既然已经能实现对比的功能了,为什么还要hashCode()呢? 因为重写的equals()里一般比较的比较全面比较复杂,这样效率就比较低,而利用hashCode()进行对比,

一蓑烟雨任平生 3945

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Java中equals()、hashCode()与“==“的深度解析

在Java中,==、equals()和hashCode()各有其用途,理解它们的区别和正确实现方式是编写健壮代码的基础。==适用于引用比较,equals()用于内容比较,而hashCode()确保哈希集合的正确性。通过遵循Java的约定、避免常见陷阱并采用最佳实践,开发者可以确保对象比较的可靠性和性能。无论是处理字符串、自定义对象还是集合操作,正确使用这些方法将显著提升代码质量。

持续输出Java相关知识 1649

java中hashcode和equals的区别和联系

理解: 规范1:若重写equals(Object obj)方法,有必要重写hashcode()方法,确保通过equals(Object obj)方法判断结果为true的两个对象具备相等的hashcode()返回值。说得简单点就是:“如果两个对象相同,那么他们的hashcode应该 相等”。不过请注意:这个只是规范,如果你非要写一个类让equals(Object obj)返回true而hashco...

qq_42273599的博客 7401

(JAVA面试)equals()和hashcode() 方法的区别

equals()方法 Object 中的equals方法比较的是地址 不过基本上所有的类都重写了equals方法,比较的内容而不是地址,比较地址推荐使用== 它的性质有: 自反性(reflexive)。对于任意不为null的引用值x,x.equals(x)一定是true。 对称性(symmetric)。对于任意不为null的引用值x和y,当且仅当x.equals(y)是true时,y.equals(x)也是true。 传递性(transitive)。对于任意不为null的引用值x、y和z,如果x.equa

NuanShuTT的博客 1万+

Java中==、equals() 的区别和 hashCode() 的关系

特性==equals()hashCode()用途比较基本类型值或对象引用比较对象内容生成对象的哈希码比较对象基本类型和引用类型只能是对象只能是对象默认行为比较值或引用比较引用(与==相同)基于对象地址可重写否是是与集合的关系无关用于contains()等操作用于哈希集合的存储和查找==比较值或引用,equals()比较内容,hashCode()生成哈希码重写equals()时必须重写hashCode()相等的对象必须有相同的哈希码。

Z123C456H的博客 1009

【Java】Object类中的equals()和hashCode()

= 是用来比较两个对象的引用(内存地址)是否相同,对于基本数据类型比较的是值。equals() 方法是用来比较两个对象的内容是否相equals()同,通常在类中会重写该方法来判断内容的相等。

m0_75260099的博客 1178

Java中equals()、hashCode()与==的关系

hashCode是Object类中的一个方法,它返回一个整型数值,这个值被称为哈希码。它的主要用途是为对象提供一个快速比较的依据,特别是在哈希表(如HashMap)中,用于快速定位对象的存储位置。简而言之,hashCode方法的设计目的是提高数据结构中查找、删除和插入元素的效率。

aakhvb的博客 598

探索equals()和hashCode()方法

如果你现在还对hashcode了解甚少的话,建议你先看看下面两篇博客,绝对有用,面试中经常问这些。 《java中Map,List与Set的区别》 《05.Hash Tables(哈希表)》 equals()和hashCode()区别? ------------------------------------------------- equals():反映

8168

java——equals(),hashCode()重写与不重写区别

1,总结 (1)两个obj,如果equals()相等,hashCode()一定相等。 (2)两个obj,如果hashCode()相等,equals()不一定相等。 2,不重写equals(),hashCode() 不重写的时候,比较两个对象是否“相等“,默认跟”==“效果相同,直接比较两个对象的内存地址值。【此时,克隆出来的对象与原有对象有着不同的哈希值(毕竟是克隆出来的,是两个对象)】 3,重写...

weixin_42981168的博客 1837

Java中的hashCode()和equals()方法,它们与 == 操作符有什么区别?

或者。

apple_64847327的博客 1841

hashCode()方法和equals()区别与联系

一、hashCode()和equals()是什么? hashCode()方法和equals()方法的作用其实一样,在Java里都是用来对比两个对象是否相等一致。 二、hashCode()和equals()的区别 下边从两个角度介绍了他们的区别:一个是性能,一个是可靠性。他们之间的主要区别也基本体现在这里。 1、equals()既然已经能实现对比的功能了,为什么还要hashCode()呢? ...

一步一脚印的博客 681

java中“==”和equals()的区别、hashCode()、为什么重写equals()方法必须重写hashCode()

==

qq_50617271的博客 1063

equals() 和 == 的区别、与hashCode() 的关系

== 和 equals() == 它的作用是判断两个对象的地址是不是相等,即判断两个对象是不是同一个对象。基本数据类型 == 比较的是值,引用数据类型 == 比较的是内存地址。 equals 它的作用也是判断两个对象是否相等,它不能用于比较基本数据类型的变量。主要有以下两种用法: 类没有覆盖 equals() 方法。则通过equals()比较该类的两个对象时,等价于通过 == 比较这两个对象。使用的默认是 Object 类 equals() 方法。 类覆盖了 equals() 方法。一般,我们都覆

TanaStudy的博客 2371
上一篇: Genymotion中VirtualBox无法发开虚拟设备的解决方法
下一篇: Java中各基本类型占多少字节数
Zh.EastSun
博客等级 码龄10年 2粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值