【校招VIP】java语言考点之关键字string

发布时间 2023-09-05 10:25:51作者: 校招VIP

考点介绍:

string作为一个特殊类,正常情况下,是遵循对象的值和引用的使用。有一定的考察频度,但有的时候==也能代表相等,与常量区的插入有关。

答案详情解析和文章内容可扫下方海报二维码或点击链接即可查看!

一、考点试题

1、关于String,StringBuilder以及StringBuffer,描述错误的是()

A.对String对象的任何改变都不影响到原对象,相关的任何change操作都会生成新的对象

B.StringBuffer是线程安全

C.StringBuilder是线程安全

D.可以修改StringBuilder和StringBuffer的内容

解答:正确答案是 C

A,java中的字符串存储在字符串常量区,不会改变,发生改变是会新创建一个对象

B,StringBuffer是线程安全的StringBuilder

C,StringBuilder跟StringBuffer功能相同,区别是StringBuilder不是线程安全的

D,StringBuilder和StringBuffer底层都是以字符数组存放的,可以修改内容

2、String, StringBuffer和StringBuilder区别

解答:String和StringBuffer主要区别是性能:String是不可变对象,每次对String类型进行操作都等同于产生了一个新的String对象,然后指向新的String对象。所以尽量不在对String进行大量的拼接操作,否则会产生很多临时对象,导致GC......

3、String a = "a" + new String("b") 创建了几个对象?

解答:常量和常量拼接仍是常量,结果在常量池,只要有变量参与拼接结果就是变量,存在堆。使用字面量时只创建一个常量池中的常量,使用 new 时如果常量池中没有该值就会在常量池中新创建,再在堆中创建一个对象引用......

4、为什么 String 对象是不可变的?

解答:字符串池之所以可能,就是因为字符串在 Java 中是不可变的。由此 Java 运行时环境节省了大量堆空间,因为不同的 String 变量可以引用池中的同一 String 变量。如果 String 不是不可变的, 则字符串驻留(String interning)将是不可能的,因为一旦任一变量更改所引用的String对象的值,它也会反映在其他变量中......

二、考点文章

1、java String类(超详细!)

String表示字符串类型,属于引用数据类型,不属于基本数据类型。在java中随便使用双引号括起来 的都是String......

2、java的String类

字符串是常量,创建之后不可改变。字符串字面值存储在字符串池中,可以共享。String s = "hello"; 产生一个对象,存储在字符串池中......

三、考点视频

1、String、StringBuilder的区别

本题是面试常考题之一,但是很多同学没有真实理解或使用过相应的类,只靠记忆。在面试的时候,容易被问住......

2、java语言之String equals的坑

String作为一个特殊类,正常情况下,是遵循对象的值和引用的使用。但是有时候==也能代表相等,与常量区的插入有关。有一定的考察频度

PC端链接:https://xiaozhao.vip/dTopic/detail/1156

移动端链接:https://m.xiaozhao.vip/dTopic/detail/1156