栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

关于Java中的equals()方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于Java中的equals()方法

Java中的equals()方法用于将字符串与指定的对象进行比较,相等则返回true,不相等则返回false。一般用法如下:

package com.zhangyufan.test;

public class TestEquals {

	public static void main(String[] args) {
		String s1 = new String("太阳");
		String s2 = new String("月亮");
		boolean flag;
		flag = s1.equals(s2);
		System.out.println("s1.equals(s2): " + flag);
		flag = "星星".equals(s1);
		System.out.println(""星星".equals(s1): " + flag);
		flag = s2.equals("月亮");
		System.out.println("s2.equals("月亮"): " + flag);

	}

}

运行结果:

有了上面对equals()方法的简单介绍,思考这样一个问题:
在上面的例子中,有"星星".equals(s1)和s2.equals(“月亮”)这两种写法,一种是字符串常量在点的前面,一种是字符串常量在括号里面,这两种写法究竟有什么区别呢?这两种写法是否在任何场合都行的通呢?

这两种写法貌似在任意场合都行的通,不过,经过大量尝试,终究还是发现了其不同之处。

当String类的对象被设置为null时,字符串常量在点的前面与字符串常量在括号里面的区别如下:
字符串常量在点的前面:

package com.zhangyufan.test;

public class TestEquals {

	public static void main(String[] args) {
		String s = null;
		boolean flag = "abc".equals(s);
		System.out.println(""abc".equals(s): " + flag);

	}

}

运行结果:

运行结果十分正常,没有任何问题。
而在这种情况下,当字符串常量在括号里面时:

package com.zhangyufan.test;

public class TestEquals {

	public static void main(String[] args) {
		String s = null;
		boolean flag = s.equals("abc");
		System.out.println("s.equals("abc"): " + flag);

	}

}

运行结果:

这样就报了个错,java.lang.NullPointerException,也就是空指针异常。那么为什么这样子把字符串常量放到括号里面就会报错呢?我立即就有了一个猜想,然后去网上查了一下,和我的猜想一致。具体说来就是:当String类的对象被设置为null时,该对象即为空对象,空对象的引用没有指向任何对象,所以无法调用其equals方法,而是会报出空指针异常的错误。

如此看来,使用equals()方法进行字符串的比较时,这两种写法并没有很大的区别,但是为了避免可能出现的空指针异常,采用将String类的对象放在括号里面,将字符串常量放在点的前面这样的写法更为稳妥。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/297233.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号