有时在写代码时会不小心在比较String与String值相等,char与char值相等时会没弄清楚”==”与equals()两种比较方法的区别就直接选一个用上了,最后在Debug时才发现以为是true的地方却是false,以为是false的地方却是true。写这篇文章只是为了记录平时写代码时可能会犯的一些小错误,如下先预先说明:
String与String值相等比较用equals()方法,char与char值相等比较用”==”进行比较。
先说一下String与char的区别:
- java中的八大基本类型:字节型(byte),短整型(short),整型(int),长整型(long),字符型(char),浮点型(float),双精度型(double),布尔型(boolean)
- 在java里面除去基本数据类型的其它类型都是引用数据类型,所以String不是基本类型而是引用类型。
- 也就是说,String是一个类,可以在IDE中查看到String的源码,String有很多API。而char只是一个基本数据类型,不是一个类。
String是引用类型,用”==”进行比较是比较两个字符串是否引用同一地址,如果只是比较内容是否一致,是不是同一个对象(即是不是同一地址)不去比较,则只能用equals()方法进行比较。代码如下:
1 | public class StringEqualsTest { |
char是一个基本数据类型,只能用”==”进行值相等比较,如果想用equals()方法进行比较,则要用char的封装对象Character。代码如下:
1 | public class CharEqualsTest { |