当前位置: 首页 > news >正文

比较StringBuffer字符串内容是否相等?

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

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

String的equals方法因为重写了Object的equals方法,所以可以比较字符串的内容,而StringBuffer因为没重写equals方法,直接继承了Object的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 }

 

转载于:https://www.cnblogs.com/x_wukong/p/3970525.html

相关文章:

  • jQuery EasyUI software - Commercial License
  • mybatis generator自动生成 实体类, sqlmap配置文件 详细介绍
  • JQ实现ul子节点的增加删除
  • 【摘抄】将xml注释文档生成网页
  • Linux 监测常用的图形工具
  • 微信架构的启示
  • linux 不同网段pptp服务器的搭建
  • 将一个int转成二进制c
  • JVM的监控与优化
  • Java中分割字符串
  • 【推荐系统论文笔记】个性化推荐系统评价方法综述(了解概念——入门篇)...
  • jquery初学之基础回顾
  • GdiPlus[43]: IGPGraphics (二) 关于文本绘制
  • java 非法字符过滤 , 半角/全角替换
  • char *p = abcdefg; p[0] = p[1]出错
  • 时间复杂度分析经典问题——最大子序列和
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • es6--symbol
  • ES6简单总结(搭配简单的讲解和小案例)
  • EventListener原理
  • extract-text-webpack-plugin用法
  • Java多线程(4):使用线程池执行定时任务
  • Netty 4.1 源代码学习:线程模型
  • Spring Boot MyBatis配置多种数据库
  • SpriteKit 技巧之添加背景图片
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • Vue2.x学习三:事件处理生命周期钩子
  • web标准化(下)
  • 翻译:Hystrix - How To Use
  • 复习Javascript专题(四):js中的深浅拷贝
  • 好的网址,关于.net 4.0 ,vs 2010
  • 三栏布局总结
  • 微信小程序填坑清单
  • 主流的CSS水平和垂直居中技术大全
  • 字符串匹配基础上
  • 湖北分布式智能数据采集方法有哪些?
  • #DBA杂记1
  • #if #elif #endif
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (26)4.7 字符函数和字符串函数
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (zhuan) 一些RL的文献(及笔记)
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (二)学习JVM —— 垃圾回收机制
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转载)利用webkit抓取动态网页和链接
  • .CSS-hover 的解释
  • .Net 6.0 处理跨域的方式
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .net 怎么循环得到数组里的值_关于js数组
  • .NET 中 GetHashCode 的哈希值有多大概率会相同(哈希碰撞)
  • .Net(C#)自定义WinForm控件之小结篇
  • .Net8 Blazor 尝鲜