`
fantaxy025025
  • 浏览: 1317525 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

StringBuilder的equals方法

阅读更多
	//先看看这段代码的输出是不是与想的一样,嘿嘿~
	public static void main(String[] args) {
		StringBuffer sb1 = new StringBuffer("aaa");
		StringBuffer sb2 = new StringBuffer("aaa");
//		StringBuilder sb1 = new StringBuilder("aaa");
//		StringBuilder sb2 = new StringBuilder("aaa");
		
		System.out.println("sb1 == sb2:" + (sb1 == sb2) );
		System.out.println("sb1 eq sb2:" + (sb1.equals(sb2)) );

		System.out.println("sb1.capacity():" + sb1.capacity());
		System.out.println("sb2.capacity():" + sb2.capacity());
		System.out.println("sb1.length():" + sb1.length());
		System.out.println("sb2.length():" + sb2.length());
		
		System.out.println("sb1.toString():" + sb1.toString());
		System.out.println("sb2.toString():" + sb2.toString());
	}

 

看看java文档才发现,StringBuilder和StringBuffer都没有overriding方法:equals,原来如此!

默认的equals方法在Object中,返回 == 得到的结果。

既然sun要用StringBuilder和StringBuffer来辅助不可变的String,为何丢弃此方法呢?

 

看来equals方法使用时,一定要看文档,尤其是不熟悉的类,“想当然”是会犯错的~

 

-------------------------------------

另外文章http://www.blogjava.net/lsbwahaha/archive/2009/04/22/267038.html

写了String,StringBuffer,StringBuilder三者的区别:

    Java.lang.StringBuffer 线程安全的可变字符序列。类似于 String 的字符串缓冲区,但不能修改。可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。

    每个字符串缓冲区都有一定的容量。只要字符串缓冲区所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区数组。如果内部缓冲区溢出,则此容量自动增大。从 JDK 5.0 开始,为该类增添了一个单个线程使用的等价类,即 StringBuilder 。与该类相比,通常应该优先使用 StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。

    但是如果将 StringBuilder 的实例用于多个线程是不安全的。需要这样的同步,则建议使用 StringBuffer

 

    结论:基本来说都是在性能上都是 StringBuilder > StringBuffer > String

 

------------------------------------------

代码输出:

sb1 == sb2:false
sb1 eq sb2:false
sb1.capacity():19
sb2.capacity():19
sb1.length():3
sb2.length():3
sb1.toString():aaa
sb2.toString():aaa

 

分享到:
评论

相关推荐

    跟我学Java-day13-String和StringBuilder.pdf

    1.1.2equals方法的作用 方法介绍 示例代码 1.2用户登录案例【应用】 1.2.1案例需求 已知用户名和密码,请用程序实现模拟用户登录。总共给三次机会,登录之后,给出相应的提示 1.2.2代码实现 public boolean ...

    Object类&Date类&Calender类&StringBuilder类1

    例如,在 Java 中,String 类的 equals() 方法是用来判断两个字符串的内容是否相同,而 Object 类中的 equals() 方法是用来判断两个对象是否是同一个对象。 toString() 方法 toString() 方法是 Object 类中的一个...

    【IT十八掌徐培成】Java基础第10天-02.builder设计模式-StringBuilder-包装类.zip

    此外,包装类还支持`equals()`、`compareTo()`等比较操作,以及`hashCode()`和`clone()`等方法。 结合Builder模式,我们可以构建一个用于创建复杂对象的Builder类,其中包含对`StringBuilder`的使用,以生成包含...

    面试题java StringBuffer和StringBuilder类常见操作和用法

    相对地,StringBuilder是非线程安全的,它的方法没有进行同步处理,因此在单线程环境下,StringBuilder通常比StringBuffer有更高的性能。 二、创建对象 创建StringBuffer对象的代码如下: ```java StringBuffer sb ...

    2023最新Android 面试篇(2303版).pdf

    默认情况下(没有覆盖equals方法)下的equals方法都是调用Object类的equals方法,而Object的equals方法主要是用于判断对象的内存地址引用是不是同一个地址(是不是同一个对象)。 2. int、char、long各占多少字节数...

    java string类常用方法

    equals方法如果字符串与other相等,则返回true。如果other为空字符串,方法将返回false。 equalsIgnoreCase方法 equalsIgnoreCase方法如果字符串与other相等(忽略大小写),则返回true。如果other为空字符串,...

    JavaSE第一章使用基础API.docx

    StringBuffer 和 StringBuilder 类提供了一系列用于字符串操作的方法,每个 StringBuffer 和 StringBuilder 对象都是一个可以改变的 Unicode 字符序列。修改字符串对象的操作不会产生新的字符串对象。两个类的区别...

    day01_Object类、常用API每日作业卷1

    Object类中的equals方法默认比较的是对象的内存地址,而String类重写了equals方法,用于比较两个字符串的内容是否相同。当比较两个字符串对象时,如果使用==运算符,实际上是检查它们是否指向同一个内存空间;如果...

    java String、StringBuilder和StringBuffer的区别详解

    3. **方法**:尽管`StringBuilder`和`StringBuffer`在功能上大体相似,但`StringBuffer`的方法因为线程安全而进行了额外的同步处理。它们都提供了`append()`方法来拼接字符串,以及其他类似的方法如`insert()`, `...

    Java面试题一站式全收录

    * == 比较对象的地址,对于 Object 对象中的 equals 方法使用的也是 ==,比较的是对象的地址,默认情况下使用对象的 equals 比较地址,如果要实现自己的比较方式需要复写 equals 方法。 * equals:比较对象的值,...

    java基础知识面试题

    * equals:equals 一般都是重写了 equals() 方法来对两个对象的内容进行比较,如果不重写,使用的就是 Object 中的 equals 方法,比较的是对象的内存地址。 在实际应用中,应该根据具体情况选择使用 == 或 equals。...

    Java工程师必会100题

    在比较引用类型的变量时,==和equals都用于比较栈内存中的地址是否相等,但通常会重写equals方法去实现对象内容的比较。 这些知识点对于Java工程师来说非常重要,掌握这些知识点可以帮助他们更好地理解Java语言的...

    大厂真题之菜鸟网络-Java初级.pdf

    equals 方法和 hashCode 方法的关系是:equals 相等的对象,hashCode 也一定相等;hashCode 不等,equals 也一定不等;hashCode 相等,equals 可能相等,也可能不等。 2. 基本数据类型 Java 中的基本数据类型包括 ...

    Java初级开发技术面试题.docx

    Java 作为一门流行的编程语言,其面试题涵盖了多个方面,本文将从 String 和 StringBuffer、StringBuilder 的区别、Java 的堆、栈、方法区、==、toString 方法和 equals 方法、ArrayList 和 LinkedList 的区别、...

    java学科面试宝典v7.0.pdf

    - equals方法:是Object类中的一个方法,用于比较两个对象的内容是否相等。如果类没有覆盖equals()方法,则通过equals()比较两个对象时,等同于用“==”比较它们的引用。如果类覆盖了equals()方法,则比较的是对象...

    java 面对对象编程.pdf.zip

    为什么重写 equals() 时必须重写 hashCode() 方法? String String、StringBuffer、StringBuilder 的区别? String 为什么是不可变的? 字符串拼接用“+” 还是 StringBuilder? String#equals() 和 Object#equals() ...

    200面试题-基础 全部有 java 数据库 ssm 微服务等

    2. == 和 equals 的区别:== 操作符用于比较两个对象的内存地址是否相同,而 equals 方法用于比较两个对象的内容是否相同。 知识点:Java 中的比较运算符、equals 方法的使用。 3. 两个对象的 hashCode() 相同,则 ...

    2023年JAVA面试题资料.doc

    这是因为 equals() 方法比较两个对象时,编译器会自动调用 hashCode() 方法来比较两个对象是否生成相同的整数结果。 String, StringBuilder, StringBuffer 的区别 String 保存字符串常量,每次变化都会产生一个新...

    Java 中 String,StringBuffer 和 StringBuilder 的区别及用法

    在常见的字符串操作中,判断两个字符串是否相等尤为常见,且常用的判别方式有两种,即用 String 类提供的方法 equals 和 == 运算符。 String 类提供了许多有用的方法,例如: * boolean endsWith(String suffix):...

    Java基础第二部分课程资料.pdf

    equals方法的重写 - Object类中的equals()方法默认使用“==”运算符来比较两个对象的内存地址,这意味着除非两个对象是同一个引用,否则返回false。 - equals()方法可以通过重写来定义对象之间“相等”的含义,...

Global site tag (gtag.js) - Google Analytics