首页 > 代码库 > 比较StringBuffer字符串内容是否相等?
比较StringBuffer字符串内容是否相等?
为什么会有这个问题呢?首先得看看String和StringBuffer的比较区别:
==只能比较两个字符串的内存地址是否一样,不能比较字符串内容;
String的equals方法因为重写了Object的equals方法,所以可以比较字符串的内容,而StringBuffer因为没重写equals方法,所以不行。
顺便提一句:String因为是final类型的,是不可变类,所以对于append等操作,是要重新new String的,而StringBuffer是可变类,不需要重新new StringBuffer,所以在字符串操作上性能非常好,而且好的不是一点点。可试试:
1 public static void main(String[] args) { 2 StringBuffer s1 = new StringBuffer(); 3 String s2 = new String(); 4 5 Date d = new Date(); 6 long a = d.getTime(); 7 for (int i = 0; i < 100000; i++) { 8 s1.append(i); 9 }10 Date d2 = new Date();11 long b = d2.getTime();12 System.out.println(b-a);13 14 Date d3 = new Date();15 a = d3.getTime();16 for (int i = 0; i < 100000; i++) {17 s2 = s2 + i;18 }19 Date d4 = new Date();20 b = d4.getTime();21 System.out.println(b-a);22 }
那么如何比较StringBuffer字符串内容是否相等呢?
可以使用toString() 方法将StringBuffer的内容转换为String 字符串,再使用equals()方法比较。
1 public class Main { 2 public static void main(String[] args) { 3 StringBuffer strb1 = new StringBuffer("Java");// 创建StringBuffer对象str1 4 StringBuffer strb2 = new StringBuffer("Java");// 创建StringBuffer对象str2 5 System.out.println("****不使用toString()方法****"); 6 if (strb1.equals(strb2)) { 7 System.out.println("相等"); 8 } else { 9 System.out.println("不相等");10 }11 System.out.println("****使用toString()方法****");12 if (strb1.toString().equals(strb2.toString())) {13 System.out.println("相等");14 } else {15 System.out.println("不相等");16 }17 }18 }
比较StringBuffer字符串内容是否相等?
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。