为什么会有这个问题呢?首先得看看String和StringBuffer的比较区别:

==只能比较两个字符串的内存地址是否一样,不能比较字符串内容;

String的equals方法因为重写了Object的equals方法,所以可以比较字符串的内容,而StringBuffer因为没重写equals方法,直接继承了Object的equals方法,所以不行。

顺便提一句:String因为是final类型的,是不可变类,所以对于append等操作,是要重新new String的,而StringBuffer是可变类,不需要重新new StringBuffer,所以在字符串操作上性能非常好,而且好的不是一点点。可试试:

 public static void main(String[] args) {
StringBuffer s1 = new StringBuffer();
String s2 = new String(); Date d = new Date();
long a = d.getTime();
for (int i = 0; i < 100000; i++) {
s1.append(i);
}
Date d2 = new Date();
long b = d2.getTime();
System.out.println(b-a); Date d3 = new Date();
a = d3.getTime();
for (int i = 0; i < 100000; i++) {
s2 = s2 + i;
}
Date d4 = new Date();
b = d4.getTime();
System.out.println(b-a);
}

那么如何比较StringBuffer字符串内容是否相等呢?

可以使用toString() 方法将StringBuffer的内容转换为String 字符串,再使用equals()方法比较。

 public class Main {
public static void main(String[] args) {
StringBuffer strb1 = new StringBuffer("Java");// 创建StringBuffer对象str1
StringBuffer strb2 = new StringBuffer("Java");// 创建StringBuffer对象str2
System.out.println("****不使用toString()方法****");
if (strb1.equals(strb2)) {
System.out.println("相等");
} else {
System.out.println("不相等");
}
System.out.println("****使用toString()方法****");
if (strb1.toString().equals(strb2.toString())) {
System.out.println("相等");
} else {
System.out.println("不相等");
}
}
}

比较StringBuffer字符串内容是否相等?的更多相关文章

  1. < java.lang >-- StringBuffer字符串缓冲区

    构造一个其中不带字符的字符串缓冲区,初始容量为 16 个字符. 特点: 1:可以对字符串内容进行修改. 2:是一个容器. 3:是可变长度的. 4:缓冲区中可以存储任意类型的数据. 5:最终需要变成字符 ...

  2. Java学习(API及Object类、String类、StringBuffer字符串缓冲区)

    一.JAVA的API及Object类 1.API 概念: Java 的API(API: Application(应用) Programming(程序) Interface(接口)) Java API就 ...

  3. asp.net截取指定长度的字符串内容

    /// <summary> /// 用于截取指定长度的字符串内容 /// </summary> /// <param name="sString"&g ...

  4. python字符串内容替换的方法(转载)

    python字符串内容替换的方法 时间:2016-03-10 06:30:46来源:网络 导读:python字符串内容替换的方法,包括单个字符替换,使用re正则匹配进行字符串模式查找与替换的方法.   ...

  5. InnerException 消息是“反序列化对象 属于类型 *** 时出现错误。读取 XML 数据时,超出最大字符串内容长度配额 (8192)。(注意细节)

    WEB站点在调用我们WCF服务的时候,只要传入的参数过长,就报如下错误: 格式化程序尝试对消息反序列化时引发异常: 尝试对参数 http://tempuri.org/ 进行反序列化时出错: formD ...

  6. vs2010根据字符串内容添加断点

    在vs中我们可以直接用表达式.数值型比较直接用操作符即可. 如i==2,i<2; 但是字符型比较呢? 加入我们有一个名为string的变量,定义如下: char *string="Tw ...

  7. 在Linux环境如何在不解压情况下搜索多个zip包中匹配的字符串内容

    今天有个生产文件需要查日志,但因为是比较久远的故障,日志已经被归档为zip包放到某个目录下了,在不知道具体日期时间的情况下,总不能一个一个解压搜索吧.于是就研究一下怎么在多个压缩包里搜索字符串了.目前 ...

  8. 对于pycharm和vscode下,从外部复制文本内容为python字符串内容是会自动加\u202a解决办法

    先来看下这个python3源代码,表面上看没有语法毛病,如果源代码字符串内容是手动复制过来的文本内容,在pycharm和vscode下始终提示: pywintypes.error: (2, 'Shel ...

  9. Web Service 或 WCF调用时读取 XML 数据时,超出最大字符串内容长度配额(8192)解决方法

    1.调用服务时服务 当我们使用 Web Service 或 WCF 服务时,常把读取的数据转化为string类型(xml格式),当数据量达到一 定数量时,会出现以下异常: 错误:格式化程序尝试对消息反 ...

随机推荐

  1. import numpy 和 from numpy import * 的区别

    对于 import xxx 使用函数的方法为 x'x'x.Afunc 而对于 from xxx import * 调用函数的方法为 Afunc

  2. 从客户端中检测到有潜在危险的 Request.Form 值。

    使用富文本编辑器是经常会遇到这个问题,在MVC中解决方法很简单只要在对应的action上添加[ValidateInput(false)]即可

  3. HDU 4911 http://acm.hdu.edu.cn/showproblem.php?pid=4911(线段树求逆序对)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4911 解题报告: 给出一个长度为n的序列,然后给出一个k,要你求最多做k次相邻的数字交换后,逆序数最少 ...

  4. Encapsulation and Requiring Files

    By encapsulating all the logic for an object, whether it’s a Dog or a User or an IceCreamShop, you a ...

  5. nginx: [error] invalid PID number "" in "/usr/local/nginx/logs/nginx.pid"

    iwangzheng.com tty:[0] jobs:[0] cwd:[/opt/nginx/conf] 12:45 [root@a02.cmsapi]$ /usr/local/nginx/sbin ...

  6. MyEclipse安装JS代码提示(Spket插件)

    近期需要大量使用JS来开发,但是MyEclipse2014自带的JS编辑器没有代码提示的功能,开发效率有点低,所以安装了一个Spket的插件,过程非常简单,SVN插件的安装比这个更简单. Spket插 ...

  7. CentOS 初始化时的分区

    /            ext3    8189   固定大小 空          swap    509   固定大小 /boot     ext3     100   固定大小 /home   ...

  8. /lib /usr/lib /usr/local/lib区别

    昨天问我/usr/lib 和/usr/local/lib 我仅记得一个是系统的,一个是用户的,于是今天查了查,有两篇文章介绍的不错,usr 很多人都认为是user缩写,其实不然,是unix syste ...

  9. 【云计算】docker的小知识,帮你更深入理解容器技术

    关于docker的15个小tip   1. 获取最近运行容器的id 这是我们经常会用到的一个操作,按照官方示例,你可以这样做(环境ubuntu): $ ID=$(docker run ubuntu e ...

  10. 【OpenStack】OpenStack系列10之Horizon详解

    一.参考其他资料即可.可以采用haproxy+apache+horizon方式部署,haproxy/httpd支持ssl.