我是靠谱客的博主 粗犷宝马,最近开发中收集的这篇文章主要介绍Java基础知识 | String/StringBuilder/StringBuffer一、字符串其他知识结尾参考文章,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前沿:撰写博客的目的是为了再刷时回顾进一步完善,其次才是以教为学,所以如果有些博客写的较简陋,是为了保持进度不得已而为之,还请大家多多见谅。

一、字符串

字符串String and 可变字符串序列(StringBuilder/StringBuffer)

1.为什么有字符串?

为了便于理解人类不同语言,而创建的类。

字符串是引用变量类型,由byte[]实现的常量(在JDK1.9前是char[]),所以每次修改就会变成新对象,所以时空效率都低。

  • char[]也是由private和final修饰,意味着不可变且外部不能直接进行操作。

  • 字符串设计是不可变的,所以字符串有常量池中保存许多常量对象(常量池在方法区)

    • 在常量池中的对象能够被共享

2.为什么有StringBuffer?

String是不可变字符串时空效率低,所以需要有可变字符序列。

StringBuffer创建缓存空间,创建一定内存空间便于动态修改,效率相较String有所提升,并且支持多线程(方法有synchronized修饰)。

3.为什么有StringBuilder?

在实际拼接字符串中,往往是按照顺序拼接,很少会出现多线程并发的场景,但StringBuffer创建append方法时为了稳健性,使用了synchronized修饰,调用时先加锁,为了减少加锁时带来的额外性能消耗所以创建StringBuider。

StringBuilder则相较StringBuffer效率更高些,所以一般情况(线程安全情况)下使用时选择它。

4.如何使用StringStringBufferStringBuilder?

StringStringBufferStringBuilder三者共有常用方法:

length(); //获取长度
isEmpty(); //是否为空
charAt(i); //获取字符串中下标为i的字符
substring(i,i+1);//获取字符串中下标[i,i+1)的字符串子串

StringStringBufferStringBuilder三者共有我不熟悉方法:

toCharArray(); //将此字符串转换为一个新的字符数组返回
indexOf(xx);//返回xx字符串第一次出现的下标
toLowerCase/UpperCase();//字符串全变成小/大写
trim();//去除字符串前后空白符
intern();//结果在常量池中共享

StringBufferStringBuilder二者共有常用方法:

StringBuffer sb = new StringBuffer(s1);
//增删改插
append(); // 拼接方法
delete(int start, int end)//删除[start,end)之间字符
setCharAt(int index, xx)//替换[index]位置字符
insert(int index,xx) //在[index]位置插入xx
reverse()//反转
replace(int start, int end, String str)//替换[start,end)范围的字符序列为str
toString() //返回此序列中数据的字符串表示形式

String s1 = new String("字符串"); 与String s1 = "字符串"有区别吗?

  • 前面的先在堆中创建对象,再在常量池中创建常量“字符串”;

  • 后面的直接在常量池中创建常量“字符串”;

其他知识

结尾

参考文章

最后

以上就是粗犷宝马为你收集整理的Java基础知识 | String/StringBuilder/StringBuffer一、字符串其他知识结尾参考文章的全部内容,希望文章能够帮你解决Java基础知识 | String/StringBuilder/StringBuffer一、字符串其他知识结尾参考文章所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部