IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 关于String 类的基础面试题 -> 正文阅读

[Java知识库]关于String 类的基础面试题

😀一:String 能被继承吗?为什么?

不可以,因为 String 类有 final 修饰符,而 final 修饰的类是不能被继承的,实现细节不允许改变。

平常我们定义的 String str=”abc”(直接赋一个字面量)

其实和 String str=new String(“abc”)(通过构造器构造)还是有差异的。

下一题

😁二:String str=“abc” 和String str=newString(“abc”) ——分别产生几个对象?

1.前者 1 或 0,后者 2 或 1,先看字符串常量池,如果字符串常量池中没有,都在常量池中创建一个,如果有,前者直接引用,后者在堆内存中还需创建一个“abc”实例对象。

2.对于基础类型的变量和常量:变量和引用存储在栈中,常量存储在常量池中。

3.为了提升 jvm(JAVA 虚拟机)性能和减少内存开销,避免字符的重复创建 项目中还是不要使用 new String 去创建字符串,最好使用 String 直接赋值。

下一题

😃三:String, Stringbuffer, StringBuilder 的区别

String 字符串常量(final 修饰,不可被继承),String 是常量,当创建之后即不能更改。(可以通过 StringBuffer 和 StringBuilder 创建 String 对象(常用的两个字符串操作类)。)

StringBuffer 字符串变量(线程安全),其也是 final 类别的,不允许被继承,其中的绝大多数方法都进行了同步处理,包括常用的 Append 方法也做了同步处理(synchronized修饰)。其自 jdk1.0 起就已经出现。其 toString 方法会进行对象缓存,以减少元素复制开销

public synchronized String toString() {
if (toStringCache == null) {
toStringCache = Arrays.copyOfRange(value, 0, count);
}
return new String(toStringCache, true);
}

StringBuilder 字符串变量(非线程安全) 其自 jdk1.5 起开始出现。与 StringBuffer 一样都继承和实现了同样的接口和类,方法除了没使用 synchronized 修饰以外基本一致,不同之处在于最后 toString 的时候,会直接返回一个新对象

public String toString() {
// Create a copy, don’t share the array
return new String(value, 0, count);
}

下一题

😄四:String 类的常用方法都有那些?

indexOf():返回指定字符的索引。

charAt():返回指定索引处的字符。

replace():字符串替换。

trim():去除字符串两端空白。

split():分割字符串,返回一个分割后的字符串数组。

getBytes():返回字符串的 byte 类型数组。

length():返回字符串长度。

toLowerCase():将字符串转成小写字母。

toUpperCase():将字符串转成大写字符。

substring():截取字符串。

equals():字符串比较。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-07-26 11:56:40  更:2021-07-26 11:58:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/21 0:19:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码