栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java

【1】String类和StringBuilder类的区别 

String类:

1、字符串都是常量,他们的值在创建之后是不可更改的

2、字符串的底层是一个被final修饰的数组,不能改变,是一个常量。即底层private final byte[] value;

3、进行字符串的相加,内存就会有多个字符串,占用空间多,效率低下。

StringBuilder类:

1、也称字符串缓冲区,可以提高字符串操作效率,即一个长度可以变化的字符串

2、底层也是一个数组,但是没有被final修饰,可以改变长度。byte[] value=new byte[16];

3、StringBuilder在内存中使用只有一个数组,占用空间少,效率高,若超出缓冲区默认容量,会自动扩容。

总之:字符串是常量,他们的值在创建之后是不可更改的,正因如此,在字符串相加时需要不断创建字符串对象,效率低。而字符串缓冲区可以支持可变的字符串,因此字符串拼接时始终是一个数组中完成,效率高。

【2】字符串拼接问题

public static void main(String[] args) {
		String str="abc";
	    str+="def";
		System.out.println(str);
	}

分析:以上代码总共产生了三个字符串,分别是:"abc"、"def"、"abcdef", 引用变量str首先指向abc对象,最终指向拼接出来的新字符串对象即abcdef。

【3】StringBuilder类的构造函数和API

1、构造函数:

StringBuilder():构造一个不带任何字符的字符串生成器(底层是可变数组),其初始容量为16个字符。

StringBuilder(String str):构造一个字符串生成器,初始化为指定的字符串内容

2、StringBuilder类常用方法:

public static void main(String[] args) {
		StringBuilder sb=new StringBuilder("hellojavaworld");
		//增
		sb.append("这是梦想");
		System.out.println(sb);
		//删
		sb.delete(3, 6);//删除位置在[3,6)上的字符
		System.out.println(sb);
		
		sb.deleteCharAt(10);//删除位置在10上的字符
		System.out.println(sb);
		//改-插入
		StringBuilder sb1=new StringBuilder("$2334654776");
		sb1.insert(3,"/");//在下标为3的位置上插入
		System.out.println(sb1);
		//改-替换
		StringBuilder sb2=new StringBuilder("$2你好吗3455345");
		sb2.replace(3, 5,"我很好");//在下标[3,5)位置上插入字符串
		System.out.println(sb2);
		//查
		StringBuilder sb3=new StringBuilder("adsfs");
		for(int i=0;i 

【4】面试题:String、StringBuilder和StringBuffer的区别?

1、String类是不可变类,即一旦一个String对象被创建后,包含在这个对象中的字符序列是不可变的,直至这个对象销毁。

2、StringBuffer类则代表一个字符序列可变的字符串,可以通过append、insert、setChartAt等方法改变其内容,一旦生成了最终的字符串,调用toString方法将其转变为String。

3、JDK1.5新增了StringBuilder类,与StringBuffer相似,构造方法和方法基本相同。不同是StringBuffer是线程安全的,而StringBuilder是线程不安全的,所以性能略高,通常情况下,创建一个内容可变的字符串,应该优先考虑使用StringBuilder。

StringBuilder  JDK1.5开始  效率高   线程不安全

StringBuffer    JDK1.0开始  效率低   线程安全

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/862905.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号