关于String的equals问题和StringBuilder问题

今天弄了一下String和StringBuilder,遇到了一些问题。

老规矩上代码图片:

发现stringBuilder的equals方法有问题,看了一下源码,发现stringbuilder没有重写。equals方法,使用的依旧是默认的

object的equals方法

所以是不等于,

再看看这个string的equals方法;

浅显易懂的源码,很给力。

时间: 2024-08-25 18:25:51

关于String的equals问题和StringBuilder问题的相关文章

Java的——String类、StringBuffer和StringBuilder、不可变和可变字符序列使用陷阱

Java的知识点21--String类.StringBuffer和StringBuilder.不可变和可变字符序列使用陷阱 原文链接 https://blog.csdn.net/qq_39368007/article/details/84033272 String类 String 类对象代表不可变的Unicode字符序列,因此我们可以将String对象称为"不可变对象" substring()是对字符串的截取操作,但本质是读取原字符串内容生成了新的字符串. String测试代码 pac

java:String使用equals和==比较的区别

"=="操作符的作用 1.用于基本数据类型的比较 2.判断引用是否指向堆内存的同一块地址. equals所在位置: 在Object类当中,而Object是所有类的父类,包含在jdk里面,但并不适合绝大多数场景,通常需要重写 public boolean equals(Object obj) { return (this == obj); } equals的作用: 用于判断两个变量是否是对同一个对象的引用,即堆中的内容是否相同,返回值为布尔类型 equals的基本使用: boolean

Object类和String类equals方法有什么区别?

相信很多学习过Java的同学都知道,在比较两个String对象的内容是否相同时是使用equals方法的 如:String str1=new String("A"); String str2=new String("B"); String str3=new String("B"); boolean result1= str1.equals(str2); boolean result2= str2.equals(str3); System.out.p

问题2 String类equals 和 “==” 比较

"==" 比较是否为同一对象,即涉及到内存地址是否相同 “String 中equals” 比较对象中的内容 “Object 中equals” 如果没有重写equals方法,相当于 “=":若要是进行对象内容比较,则必须重写equals方法,因为在现实应用中大都是对对象内容的比较.(可参见问题1) 1 String s1 = "String"; 2 String s2 = "String"; 3 String s3 = new Strin

String的Equals()和==比较

String的Equals()和==比较 常量池(Constant Pool):指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据.JVM虚拟机为每个被装载的类型维护一个常量池.常量池就是该类型所用到常量的一个有序集和,包括直接常量(String,Integer和 Floating point常量)和对其他类型,字段和方法的符号引用.对于String常量,它的值是在常量池中的.而JVM中的常量池在内存当中是以表的形式存在的, 对于String类型,有一张固定长度的CONSTAN

关于java的String的equals()

一直以为String的equals()是百分百准确能判断字符串是否相等的,直到今天遇到的情况: String value = 从properties文件取得的值. idea的debug看value="server" 然后if("client".equals(value)){ sout("hello"); } 竟然真的判断client跟server两字符串相等.... 闹了半天, String tempValue = String.valueOf(

Java String字符串/==和equals区别,str。toCharAt(),getBytes,indexOf过滤存在字符,trim()/String与StringBuffer多线程安全/StringBuilder单线程—— 14.0

课程概要 String 字符串 String字符串常用方法 StringBuffer StringBuilder String字符串: 1.实例化String对象 直接赋值  String str="Hello";  推荐这种 使用关键字new  String str1=new String("Hello"); 在内存中开辟2个空间 如图: 源代码 StringDemo01.java 2.String内容的比较 String str="Hello"

string integer == equals 转

java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号(==),比较的是他们的值. 2.复合数据类型(类) 当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false. JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equa

String的equals方法和==

String类的对象是字符串常量,一切看起来改变了String对象的操作,其实只是改变了字符串引用变量所引用的字符串罢了. Java中的字符串存放在一个公共的存储池中,引用指向存储池中相应的位置,编译器可以让字符串共享,即两个不同的引用,可以指向同一个字符串常量,但该字符串的物理存储实际只有一份. 判断两个字符串是否相等,一定要使用equals方法.“==”只能判断两个引用是否指向同一个字符串,在不同的物理存储位置也可以存储相同的字符串. 实际上,只有字符串常量是共享的,而+或substring