#Java基础——每日随记(1)
2016-12-21 21:18
260 查看
Java基础——每日随记(1)
java中“==”用于表示匹配内存单元的内容是否相等。如果是原始类型,如byte、boolean、short、char、int、long、float、double,则表示值相等。
如果是引用类型,则表示引用的值是否相等,即引用的地址是否是同一个。
举例String类型:
public class StringTest { public static void main(String[] args) { String a = "ab"; String b = "a"+"b"; String c = new String("ab"); String d = new String("ab"); System.out.println(a==b); System.out.println(a==c); System.out.println(c==d); System.out.println(a.equals(b)); System.out.println(a.equals(c)); System.out.println(c.equals(d)); } }
运行结果为:
true
false
false
true
true
true
通过结果可以明显的看出,==判断的是引用的地址是否相同,而String的equals()方法判断的是值是否相等。
接下来一个例子测试你懂没懂:
public class StringTest { public static String get(){ return "a"; } public static void main(String[] args) { String a_1 = "a"; final String a_2 = "a"; String a = "ab"; String b = a_1+"b"; String c = a_2+"b"; String d = get()+"b"; System.out.println(a==b); System.out.println(a==c); System.out.println(a==d); } }
结果是false、true、false。
注:final定义了常量,所以相等。而变量和方法返回引用,所以不相等。编译器对变量连接(+)字符串编译成通过StringBuiler的append方法实现连接操作。
说到equals方法,就要说到hashCode方法,该方法是用来产生一个数字来标识对象,虽然说是标识,但是不同的对象可能产生的hash值是一样的,而同样的对象可能产生的hash值不同,所以不能通过hashCode方法来判断两个对象是否相等。相关文章推荐
- (每日一转)黑马程序员----跟着老毕学Java之基础篇(二)
- java基础每日学习20131029--序列化
- [每日一题]Java 基本数据类型基础面试题
- Java基础每日10题——第一天
- 每日二道java基础面试知识点(五)
- 【每日工作-第一天、第二天】Java基础知识
- 每日二道java基础面试知识点(一)
- 每日二道java基础面试知识点(三)
- java基础,每日三题(String、==、equals、数组)
- 每日五题(java基础)
- Java 基础面试 每日一点Java源文件(*.java)——>Java编译器——>字节码文件(*.class)——>类装载器——>字节码校检器—— >解释器——>操作系统(Windows、Linux
- 牛客网每日打卡-Java基础-20160331
- 【每日一题】Java 包装类型装箱拆箱基础面试题
- java基础内容每日笔记_day01
- (每日一转)黑马程序员----跟着老毕学Java之基础篇(三)
- 牛客网每日打卡-Java基础-20160326
- [每日一练]java基础练习3
- Java基础每日10题——第四天
- Java基础每日10题——第五天
- 【每日一题】Java 基本数据类型基础面试题