java之==操作符和equals操作符
==操作符:
- 基本数据类型比较值;
- 引用数据类型比较引用(是否指向同一个对象)
equals操作符:
- 引用数据类型比较引用(是否指向同一个对象)
- 对于String、File、Date、包装类来说,只比较类型和内容,而不考虑引用的是否是同一个对象,因为这些类中重写了equals方法。
public class Main { public static void main(String[] args) {
Person p1 = new Person();
Person p2 = new Person();
System.out.println(p1.equals(p2));
System.out.println(p1==p2);
}
}
输出:
false
false
public class Main { public static void main(String[] args) {
Person p1 = new Person();
Person p2 = p1;
System.out.println(p1.equals(p2));
System.out.println(p1==p2);
}
}
输出:
true
true
public class Main { public static void main(String[] args) {
String a1 = "hello";
String b1 = "hello";
System.out.println(a1.equals(b1));
System.out.println(a1==b1);
String a2 = new String("hello");
String b2 = new String("hello");
System.out.println(a2.equals(b2));
System.out.println(a2==b2);
}
}
输出:
true
true
true
false
说明:a1和b1指向的是同一个String,而a2和b2指向不同的String,所以a2.equals(b2)只比较值返回true,==比较引用返回false。
java之==操作符和equals操作符的更多相关文章
- Java中的“==操作符”和equals方法有什么区别
Java中的"=="和equals方法究竟有什么区别? 1.==操作符 "=="操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的 ...
- 《 Java 编程思想》CH03 操作符
< Java 编程思想>CH03 操作符 在最底层,Java中的数据是通过操作符来操作的. 操作符 +,-,*,*,=与其他语言类似 几乎所有的操作符只能操作"基本类似" ...
- 【关于Java移位操作符&按位操作符】
一.java按位运算符(操作符) 这段时间偶尔看一下源码,会发现有很多很基础的java知识在脑海中已经慢慢的淡成不常用记忆,于是打算捡起来一些. 按位运算符是来操作整数基本数据类型中的单个“比特”(b ...
- java :: Java中的双冒号操作符
java中的双冒号操作符 定义 双冒号运算操作符是类方法的句柄,lambda表达式的一种简写,这种简写的学名叫eta-conversion或者叫η-conversion. 通常的情况下: 把 x -& ...
- Java中的==和equals( )方法
在Java中,equals和==都是用于检测两个字符串是否相等,返回类型也都是boolean值,但是二者内部处理却不一样. ==与equals( ) ==在Java中是一个二元操作符,用于比较原生类型 ...
- linq操作符:元素操作符
元素操作符仅返回一个元素. 一.Fitst操作符 First操作符将返回序列中的第一个元素.如果序列中不包含任何元素,则First<T>方法将引发异常.来看看First()方法的定义: 从 ...
- RxJava2实战---第七章 合并操作符和连接操作符
RxJava2实战---第七章 合并操作符和连接操作符 RxJava的合并操作符: startWith():在数据序列的开头增加一项数据. merge:将多个Observable合并为一个. merg ...
- Golang的单目(一元)运算符-地址操作符和接收操作符
Golang的单目(一元)运算符-地址操作符和接收操作符 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Golang的单目(一元)运算符概述 常见的地址操作符: &: ...
- 2)Java中的==和equals
Java中的==和equals 1.如果比较对象是值变量:只用== 2.如果比较对象是引用型变量: ==:比较两个引用是不是指向同一个对象实例. equals: ...
随机推荐
- Hybrid App 应用开发中 9 个必备知识点复习(WebView / 调试 等)
前言 我们大前端团队内部 ?每周一练 的知识复习计划继续加油,本篇文章是 <Hybrid APP 混合应用专题> 主题的第二期和第三期的合集. 这一期共整理了 10 个问题,和相应的参考答 ...
- markdownPad在win10下渲染报错问题
今天使用MarkdownPad 2,打开后发现预览效果出错了,本来以为自己下载了破解版的缘故导致软件不稳定,后来查找了网上,发现这是一个普遍的问题,根据软件的提示来到官方FAQ页面,找到解决方法. 实 ...
- 使用FileReader在浏览器读取预览文件(image和txt)
如标题,之前在某个地方看到因为有Blob的存在,理论上可以在浏览器上查看所有格式的文件.自己想着试试现在暂时只能够查看图片和预览txt文件.其他的比如doc,docx格式的文件查看的时候是乱码 如图: ...
- Vue-兄弟组件传值
学习博客:https://www.jianshu.com/p/b10b3ac3729a
- nginx 自启动设置
首先,在linux系统的/etc/init.d/目录下创建nginx文件,使用如下命令: 1 vim /etc/init.d/nginx 在脚本中添加如下命令: #!/bin/sh # # nginx ...
- ORA-19625: error identifying file
问题描述:rman进行备份的时候,出现报错ORA-19625,无效的文件 1.进行数据库备份,然后就出现了报错,没有这个24号的归档日志 RMAN> run{ 2> allocate ch ...
- 【ES6基础】let、const命令和变量的结构赋值
ES5声明变量(2):var .function ES6声明变量(6):var.function.let.const.import和class 1.let命令和const命令 (1)let和const ...
- 判断机器CPU的大小端模式并将数据转换成小端形式
首先看一下概念 Little-Endian 就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端 Big-Endian 就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端. 第一 ...
- 使用Power BI API 向流数据集推送实时数据并在仪表板可视化
使用Power BI 实现实时数据的可视化是大家比较关心的一个话题,在仪表盘上实现推送数据的展示,可以在诸如指挥大屏等场景下使用. 本视频实战内容如下: https://v.qq.com/x/page ...
- 权值初始化 - Xavier和MSRA方法
设计好神经网络结构以及loss function 后,训练神经网络的步骤如下: 初始化权值参数 选择一个合适的梯度下降算法(例如:Adam,RMSprop等) 重复下面的迭代过程: 输入的正向传播 计 ...