校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > java语言 > string(后续会删除)
题目

下面关于字符串的描述正确的是:【多选】( )

A.通过String s1=new String("abc")和String s2="abc",则s1==s2为true。

B."abc"+"def"则会创建三个字符串对象,第三个是"abcdef"。也就是说,在Java中对字符串的一切操作,都会产生一个新的字符串对象

C.StringBuffer是线程安全的,它比String快。

D.StringBuilder是线程安全的,它比String快

解答

正确答案是 B C


1、三者执行速度:StringBuilder > StringBuffer > String ;
2、StringBuilder:线程非安全的;
3、StringBuffer:线程安全的;
4、用String操作字符串时,实际上是在不断地创建新对象,而原来的对象会作为垃圾被回收;

对于A: s1利用new 操作后,为该对象在堆(Heap)区分配了一块内存; s2是字符串常量,存放在内存的”文字常量区“ ;虽然两个对象的值相同,但由于两者位于不同的地址,不是相同的对象,因此 s1==s2 为false。 A错
C 7条回复 评论
半个八度

感人,这个类型我终于做对了

发表于 2023-11-06 22:00:00
0 0
橘子汽水

执行速度比较:

StringBuilder>StringBuffer>String
线程安全比较:
StringBuffer线程安全,String可理解为常量,线程安全!StringBuilder线程不安全

对String操作字符串时,实际上在不断创建新对象,原来的对象会被回收!

发表于 2018-10-13 13:45:30
0 0
橘子汽水

完美避开正确答案!!

发表于 2018-10-13 13:45:18
0 0
心意


1、三者执行速度:StringBuilder > StringBuffer > String ; 2、StringBuilder:线程非安全的; 3、StringBuffer:线程安全的; 4、用String操作字符串时,实际上是在不断地创建新对象,而原来的对象会作为垃圾被回收; 对于A: s1利用new 操作后,为该对象在堆(Heap)区分配了一块内存; s2是字符串常量,存放在内存的”文字常量区“ ;虽然两个对象的值相同,但由于两者位于不同的地址,不是相同的对象,因此 s1==s2 为false。 A错  

发表于 2018-10-13 13:45:08
0 0
人间喜剧

我觉的没有一个是对的A中==比较的是地址,所以A不正确,B中也不对,因为字符串还有字符串常量池
C是线程不安全D中也不正确因为要看对字符串进行什么操作

发表于 2018-10-13 13:44:53
0 0
小小精灵

1. Java中对字符串的操作,都会产生一个新的字符串

2. StringBuffer是线程安全的,StringBuffer的速度比String要快

3. StringBuilder是线程不安全的,但是StringBuilder的速度比StringBuffer的速度要快

发表于 2018-10-13 13:44:40
0 0
小小小可乐


AD

A 错误
由于s1是new出的新对象,存储在heap中,s2指向的对象 存储在String Pool中,他们肯定不是同一个对象,只是存储的字符串值相同。

B 正确
由于通过new String("abc")和"abc"都会创建一个字符串对象。"abc"+"def"会创建三个字符串对象,第一个是"abc",第二个是"def",第三个则是"abcdef",也就是说在Java中对字符串的一切操作都会产生一个新的字符串。

C正确
D错误
String 字符串常量,StringBuffer 字符串变量(线程安全),StringBuilder 字符串变量(非线程安全);
在大部分情况下 StringBuffer要快于String,StringBuilder比 StringBuffer 要快。

发表于 2018-10-13 13:44:18
0 0