Java 判断相等
1.除 float 和 double 外的原始数据类型 : 使用 ==
long a = (long) 1234567890;
long b = (long) 1234567890;
if (a == b) {
System.out.println("基本数据类型相等");
}
2.包装类使用 equals 或者转换为基本数据类型再用 ==
Long a = (long) 1234567890;
Long b = (long) 1234567890;
if (a != null && a.equals(b)) {
System.out.println("包装类相等");
}
if (a != null && a.longValue() == b.longValue()) {
System.out.println("包装类相等");
}
3.对象要用 equals
String a1 = null;
String b1 = new String();
if (a1 != null && a1.length() > 0 && a1.equals(b1)) {
System.out.println("对象相等");
}
附录:
public static void main(String[] args) {
System.out.println("-----");
int a = 200;
int a2 = 200;
if (a == a2) {
System.out.println("相等");//√
}
System.out.println("-----");
Integer b = 200;
Integer b2 = 200;
if (b == b2) {
System.out.println("相等");//-128~127√
}
if (b.equals(b2)) {
System.out.println("相等2");//√
}
System.out.println("-----");
Integer c = new Integer(200);
Integer c2 = new Integer(200);
if (c == c2) {
System.out.println("相等");
}
if (c.equals(c2)) {
System.out.println("相等2");//√
}
System.out.println("-----");
if (a==c){
System.out.println("相等");//√
}
if (c.equals(a)){
System.out.println("相等2");//√
}
if (b==c){
System.out.println("相等3");
}
if (c.equals(b)){
System.out.println("相等4");//√
}
}
public static void main(String[] args) {
System.out.println("-----");
String a = "a";
String a2 = "a";
if (a == a2) {
System.out.println("相等");//√
}
if (a.equals(a2)) {
System.out.println("相等2");//√
}
System.out.println("-----");
String b = new String("a");
String b2 = new String("a");
if (b == b2) {
System.out.println("相等");
}
if (b.equals(b2)) {
System.out.println("相等2");//√
}
System.out.println("-----");
if (a == b) {
System.out.println("相等");
}
if (a.equals(b)) {
System.out.println("相等2");//√
}
}
public static void main(String[] args) {
System.out.println("-----");
boolean a = true;
boolean a2 = true;
if (a == a2) {
System.out.println("相等");//√
}
System.out.println("-----");
Boolean b = true;
Boolean b2 = true;
if (b == b2) {
System.out.println("相等");//√
}
if (b.equals(b2)) {
System.out.println("相等2");//√
}
System.out.println("-----");
Boolean c = new Boolean(true);
Boolean c2 = new Boolean(true);
if (c == c2) {
System.out.println("相等");
}
if (c.equals(c2)) {
System.out.println("相等2");//√
}
System.out.println("-----");
if (a == c) {
System.out.println("相等");//√
}
if (c.equals(a)) {
System.out.println("相等2");//√
}
if (b == c) {
System.out.println("相等3");
}
if (c.equals(b)) {
System.out.println("相等4");//√
}
}
超类 Object 中有这个 equals() 方法,该方法主要用于比较两个对象是否相等。该方法的源码如下:
public boolean equals(Object obj) {
return (this == obj);
}
我们知道所有的对象都拥有标识(内存地址)和状态(数据),同时“==”比较两个对象的的内存地址,所以说使用 Object 的 equals() 方法是比较两个对象的内存地址是否相等,即若 object1.equals(object2) 为 true,则表示 equals1 和 equals2 实际上是引用同一个对象。虽然有时候 Object 的 equals() 方法可以满足我们一些基本的要求,但是我们必须要清楚我们很大部分时间都是进行两个对象的比较,这个时候 Object 的 equals() 方法就不可以了,实际上 JDK 中,String、Math 等封装类都对 equals() 方法进行了重写。
在 Java 规范中,它对 equals() 方法的使用必须要遵循如下几个规则:
equals 方法在非空对象引用上实现相等关系:
1、自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。
2、对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。
3、传递性:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回 true。
4、一致性:对于任何非空引用值 x 和 y,多次调用 x.equals(y) 始终返回 true 或始终返回 false,前提是对象上 equals 比较中所用的信息没有被修改。
5、对于任何非空引用值 x,x.equals(null) 都应返回 false。
对于上面几个规则,我们在使用的过程中最好遵守,否则会出现意想不到的错误。
在 java 中进行比较,我们需要根据比较的类型来选择合适的比较方式:
1) 对象域,使用 equals 方法 。
2) 类型安全的枚举,使用 equals 或== 。
3) 可能为 null 的对象域 : 使用 == 和 equals 。
4) 数组域 : 使用 Arrays.equals 。
5)除 float 和 double 外的原始数据类型 : 使用 == 。
6) float 类型: 使用 Float.foatToIntBits 转换成 int 类型,然后使用==。
7) double 类型: 使用 Double.doubleToLongBit 转换成 long 类型,然后使用==。
Java 判断相等的更多相关文章
- 使用Java判断字符串中的中文字符数量
Java判断一个字符串str中中文的个数,经过总结,有以下几种方法(全部经过验证),可根据其原理判断在何种情况下使用哪个方法: 1. char[] c = str.toCharArray(); for ...
- Java判断回文数算法简单实现
好久没写java的代码了, 今天闲来无事写段java的代码,算是为新的一年磨磨刀,开个头,算法是Java判断回文数算法简单实现,基本思想是利用字符串对应位置比较,如果所有可能位置都满足要求,则输入的是 ...
- Java 判断操作系统类型(适用于各种操作系统)
Java 判断操作系统类型(适用于各种操作系统) 最近一段时间写一个授权的程序,需要获取很多信息来保证程序不能随意复制使用,必须经过授权才可以. 为了限制用户使用的操作系统,必须有统一的方法来获取才可 ...
- java判断字符串是否为空的方法总结
http://blog.csdn.net/qq799499343/article/details/8492672 以下是java 判断字符串是否为空的四种方法: 方法一: 最多人使用的一个方法, 直观 ...
- Java判断字符串是中文还是英文
在做开发的时候我们经常需要用到根据某个字符或者字符串来判断其是中文还是英文,从而做相应的处理,其实不难,大多数人们都是用到正则来判断的,下面小贝就给大家分享一下Java判断字符串是中文还是英文 推荐文 ...
- (转)java判断string变量是否是数字的六种方法小结
java判断string变量是否是数字的六种方法小结 (2012-10-17 17:00:17) 转载▼ 标签: it 分类: 转发 1.用JAVA自带的函数 public static boolea ...
- JAVA判断32位还是64位,调用不同的DLL(转)
源:JAVA判断32位还是64位,调用不同的DLL 通过获取sun.arch.data.model可判断是32还是64的JAVA 将32或者64位的DLL放不同的目录,实现自适应调用DLL Prope ...
- java判断是否为汉字
java判断是否为汉字 public static boolean isChinese(String str) { String regEx = "[\u4e00-\u9fa5]&quo ...
- java判断字符串是否回文
java判断字符串是否回文 /** * java判断字符串是否回文<br><br> * 基本思想是利用字符串首尾对应位置相比较 * * @author InJavaWeTrus ...
- java 判断用户是PC端和还是APP端登陆
java 判断用户是PC端和还是APP端登陆 public void getRequestHeader(HttpServletRequest request){ // 从浏览器获取请求头信息 Stri ...
随机推荐
- Sqlserver tablediff的简单使用
1. 先列举一下自己简单的比较语句 tablediff -sourceserver 10.24.160.73 -sourcedatabase cwbasemi70 -sourceschema lcmi ...
- Dart语法基础
hello world // Define a function. printNumber(num aNumber) { print('The number is $aNumber.'); // Pr ...
- from组件补充
一.定义的规则 class TeacherForm(Form): #必须继承Form # 创建字段,本质上是正则表达式 username = fields.CharField( required=Tr ...
- mac 中登陆mysql忘记密码解决办法
1.打开终端,输入命令:cd /usr/local/mysql/bin 2.mysql -uroot -p,用这条命令登陆时报错信息: 报错:Enter password: ERROR 1045 (2 ...
- java学习之—数组的曾删改查
/** * 数组的曾删改查 * Create by Administrator * 2018/6/8 0008 * 上午 9:54 **/ public class HighArray { priva ...
- 在阿里云上部署 Postfix
Postfix 可以很方便的在一台机器上部署 smtp 服务,在 centos 上来说的话可以使用: sudo yum install postfix sudo systemctl enable po ...
- linux audit审计(5)--audit规则配置
audit可以配置规则,这个规则主要是给内核模块下发的,内核audit模块会按照这个规则获取审计信息,发送给auditd来记录日志. 规则类型可分为: 1.控制规则:控制audit系统的规则: 2.文 ...
- zabbix-2.4.5的安装配置与使用
系统最小化安装 环境: zabbix_server 12.1.1.1 zabbix_agent 12.1.1.2 zabbix_proxy 12.1.1.3 1.安装环境: ...
- Spring 使用介绍(十二)—— Spring Task
一.概述 1.jdk的线程池和任务调用器分别由ExecutorService.ScheduledExecutorService定义,继承关系如下: ThreadPoolExecutor:Executo ...
- python之旅六【第六篇】模块
json和pickle 用于序列化的两个模块json,用于字符串 和 python数据类型间进行转换pickle,用于python特有的类型 和 python的数据类型间进行转换 json模块提供了四 ...