比较StringBuffer字符串内容是否相等?
为什么会有这个问题呢?首先得看看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字符串内容是否相等?的更多相关文章
- < java.lang >-- StringBuffer字符串缓冲区
构造一个其中不带字符的字符串缓冲区,初始容量为 16 个字符. 特点: 1:可以对字符串内容进行修改. 2:是一个容器. 3:是可变长度的. 4:缓冲区中可以存储任意类型的数据. 5:最终需要变成字符 ...
- Java学习(API及Object类、String类、StringBuffer字符串缓冲区)
一.JAVA的API及Object类 1.API 概念: Java 的API(API: Application(应用) Programming(程序) Interface(接口)) Java API就 ...
- asp.net截取指定长度的字符串内容
/// <summary> /// 用于截取指定长度的字符串内容 /// </summary> /// <param name="sString"&g ...
- python字符串内容替换的方法(转载)
python字符串内容替换的方法 时间:2016-03-10 06:30:46来源:网络 导读:python字符串内容替换的方法,包括单个字符替换,使用re正则匹配进行字符串模式查找与替换的方法. ...
- InnerException 消息是“反序列化对象 属于类型 *** 时出现错误。读取 XML 数据时,超出最大字符串内容长度配额 (8192)。(注意细节)
WEB站点在调用我们WCF服务的时候,只要传入的参数过长,就报如下错误: 格式化程序尝试对消息反序列化时引发异常: 尝试对参数 http://tempuri.org/ 进行反序列化时出错: formD ...
- vs2010根据字符串内容添加断点
在vs中我们可以直接用表达式.数值型比较直接用操作符即可. 如i==2,i<2; 但是字符型比较呢? 加入我们有一个名为string的变量,定义如下: char *string="Tw ...
- 在Linux环境如何在不解压情况下搜索多个zip包中匹配的字符串内容
今天有个生产文件需要查日志,但因为是比较久远的故障,日志已经被归档为zip包放到某个目录下了,在不知道具体日期时间的情况下,总不能一个一个解压搜索吧.于是就研究一下怎么在多个压缩包里搜索字符串了.目前 ...
- 对于pycharm和vscode下,从外部复制文本内容为python字符串内容是会自动加\u202a解决办法
先来看下这个python3源代码,表面上看没有语法毛病,如果源代码字符串内容是手动复制过来的文本内容,在pycharm和vscode下始终提示: pywintypes.error: (2, 'Shel ...
- Web Service 或 WCF调用时读取 XML 数据时,超出最大字符串内容长度配额(8192)解决方法
1.调用服务时服务 当我们使用 Web Service 或 WCF 服务时,常把读取的数据转化为string类型(xml格式),当数据量达到一 定数量时,会出现以下异常: 错误:格式化程序尝试对消息反 ...
随机推荐
- python之字符聊天小工具
server side: # coding: gb2312#socket server端#获取socket构造及常量from socket import *#''代表服务器为localhostmyHo ...
- eclipse-统计代码行数
使用Eclipse可以方便的统计工程或文件的代码行数,方法如下: 1.点击要统计的项目或许文件夹,在菜单栏点击Search,然后点击File... 2.选中正则表达式(Regular express ...
- Linq实现DataTable的分组统计
DataTable dt = GetTestData(10); //获取10条测试数据 var queryByService = from r in dt.AsEnumerable() group r ...
- 转 Citrix XenCenter安装VM之挂载ISO详解
转自:http://www.2cto.com/os/201302/190713.html 环境信息:XenServer Version:6.0.2XenCenter Version:6.0.2NFS ...
- 繁华模拟赛 Evensgn与字符矩阵
#include<iostream> #include<cstdio> #include<string> #include<cstring> #incl ...
- POJ 2002 Squares
二分.... Squares Time Limit: 3500MS Memory Limit: 65536K Total Submissions: 14530 Accepted: 5488 Descr ...
- Unity游戏开发之“屏幕截图”
原地址:http://sygame.lofter.com/post/117105_791680 在unity游戏开发中,可能会遇到在游戏中截屏的效果.这儿提供两种截屏方法.(方法二提供显示截图缩略图代 ...
- 百度图片爬虫-python版
self.browser=imitate_browser.BrowserBase() self.chance=0 self.chanc ...
- Tomcat打包时多项目共享jar和精确指定jar版本
在产品打包发布时一个tomcat中如果存在多个war,部署的一般方式是部署到%TOMCAT_HOME%/webapps目录下,目录结构遵循J2EE规范,把引用的jar放到%TOMCAT_HOME%/w ...
- Rotate bitmap by real angle
tl;dr; Use GDI+ SetWorldTransform With WinAPI's SetWorldTransform you can transform the space of dev ...