String和StringBuffer的equals方法比较
2015-08-15 23:05
274 查看
String再熟悉不过了,通常考点在常量池上面。
String和StringBuffer的区别,平时也只留意到一个是final类(String),字符串不可变;一个是普通类(stringbuffer),字符串可变。除此之外还有什么区别呢?下面来看看String和StringBuffer的区别,直接上代码:
String s="abc";
String t=new String("abc");
System.out.println(s==t);
System.out.println(s.equals(t));
System.out.println(s.hashCode()==t.hashCode());
StringBuffer sb=new StringBuffer("abc");
StringBuffer tb=new StringBuffer("abc");
System.out.println(sb==tb);
System.out.println(sb.equals(tb));
System.out.println(sb.hashCode()==tb.hashCode());
输出结果:
false
true
true
false
false
false
对String类来说,它实现了父类的equals方法,比较的是字符串值的大小;而StringBuffer则不一样,它并没有实现equals方法,而是将俩个引用直接比较,所以sb.equals(tb)输出false。hashcode()方法也是一个道理。
特别要说的是,一个类的equals方法和hashcode方法必须一致,例如:x.equals(y)为true;那么x.hashcode()和y.hashcode()就必须相同。
String和StringBuffer的区别,平时也只留意到一个是final类(String),字符串不可变;一个是普通类(stringbuffer),字符串可变。除此之外还有什么区别呢?下面来看看String和StringBuffer的区别,直接上代码:
String s="abc";
String t=new String("abc");
System.out.println(s==t);
System.out.println(s.equals(t));
System.out.println(s.hashCode()==t.hashCode());
StringBuffer sb=new StringBuffer("abc");
StringBuffer tb=new StringBuffer("abc");
System.out.println(sb==tb);
System.out.println(sb.equals(tb));
System.out.println(sb.hashCode()==tb.hashCode());
输出结果:
false
true
true
false
false
false
对String类来说,它实现了父类的equals方法,比较的是字符串值的大小;而StringBuffer则不一样,它并没有实现equals方法,而是将俩个引用直接比较,所以sb.equals(tb)输出false。hashcode()方法也是一个道理。
特别要说的是,一个类的equals方法和hashcode方法必须一致,例如:x.equals(y)为true;那么x.hashcode()和y.hashcode()就必须相同。
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android之获取手机上的图片和视频缩略图thumbnails
- android string.xml文件中的整型和string型代替
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序