文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

深入了解Java核心类库--String类

2024-04-02 19:55

关注

一、 简介

零碎知识点

由于String对象是不可变的,所以可以共享(即两个字符串一样则共享同一块内存地址)


//共享
String t1 = "123";
String t2 = "123";
System.out.ptintln(t1 == t2);//true,(== 比较的是内存地址)

字符串常量池

存在于方法区(加载代码的内存区),被所有的线程共享

堆在逻辑上的划分

堆在逻辑上被分为三部分:

新生代:存储刚创建的对象(GC询问次数最多为15次,>15则进入老年代)

老年代:垃圾回收次数超过15次(即15次之后依然存活的对象)

永久代:静态修饰的所有东西(类、方法、常量…)

每一个字符串对象的创建都会放入永久代(每次创建都先去永久代,前提:不用new,new开辟新内存)

二、 创建对象

2.1.1 直接引用常量区

String s = " ";


String str = “abc” ;

2.1.2 使用构造方法

String()


String str = new String(“abc”); 

2.1.3 两种实例化方法的区别

区别

直接赋值:

只开辟一块堆内存空间,并且会自动入池,不会产生垃圾会将匿名对象“”放入对象池,下一次不同对象直接赋值时直接利用池中已经存在的匿名对象

构造方法:

在堆内存创建对象会开辟两块堆内存空间,其中一块堆内存会变成垃圾被系统回收,而且不能够自动入池,需要通过public String intern();方法进行手工入池。

三、常用方法

Modifier and Type Method Description
char charAt​(int index) 返回指定索引处的 char值。
int compareTo​(String anotherString) 按字典顺序比较两个字符串。
boolean endsWith​(String suffix) 测试此字符串是否以指定的后缀结尾。
boolean equals​(Object anObject) 将此字符串与指定的对象进行比较。
boolean equalsIgnoreCase​(String anotherString) 将此 String与另一个 String比较,忽略了大小写。
void getChars​(int srcBegin, int srcEnd, char[] dst, int dstBegin) 将此字符串中的字符复制到目标字符数组中。
int indexOf​(int ch) 返回指定字符第一次出现的字符串中的索引。
int indexOf​(int ch, int fromIndex) 返回指定字符第一次出现的此字符串中的索引,从指定索引处开始搜索。
int indexOf​(String str) 返回指定子字符串第一次出现的字符串中的索引。
int indexOf​(String str, int fromIndex) 从指定的索引处开始,返回指定子字符串第一次出现的字符串中的索引。
boolean isEmpty() 返回 true ,当且仅当, length()是 0 。
int lastIndexOf​(int ch) 返回指定字符最后一次出现的字符串中的索引。
int lastIndexOf​(int ch, int fromIndex) 返回指定字符最后一次出现的字符串中的索引,从指定的索引开始向后搜索。
int lastIndexOf​(String str) 返回指定子字符串最后一次出现的字符串中的索引。
int lastIndexOf​(String str, int fromIndex) 返回指定子字符串最后一次出现的字符串中的索引,从指定索引开始向后搜索。
int length() 返回此字符串的长度。
String repeat​(int count) 返回一个字符串,其值为此字符串的串联重复 count次。
String replace​(CharSequence target, CharSequence replacement) 将此字符串中与文字目标序列匹配的每个子字符串替换为指定的文字替换序列。
String replaceAll​(String regex, String replacement) 将给定替换的给定 regular expression匹配的此字符串的每个子字符串替换。
String replaceFirst​(String regex, String replacement) 将给定替换的给定 regular expression匹配的此字符串的第一个子字符串替换。
boolean startsWith​(String prefix) 测试此字符串是否以指定的前缀开头。
boolean startsWith​(String prefix, int toffset) 测试从指定索引开始的此字符串的子字符串是否以指定的前缀开头。
String stripLeading() 返回一个字符串,其值为此字符串,并删除了所有前导 white space 。
String stripTrailing() 返回一个字符串,其值为此字符串,并删除所有尾随 white space 。
CharSequence subSequence​(int beginIndex, int endIndex) 返回作为此序列的子序列的字符序列。
String substring​(int beginIndex) 返回一个字符串,该字符串是此字符串的子字符串。
String substring​(int beginIndex, int endIndex) 返回一个字符串,该字符串是此字符串的子字符串。
char[] toCharArray() 将此字符串转换为新的字符数组。
String toLowerCase() 使用默认语言环境的规则将此 String所有字符转换为小写。
String toUpperCase() 使用默认语言环境的规则将此 String所有字符转换为大写。
String toUpperCase​(Locale locale) 使用给定 Locale的规则将此 String所有字符转换为大写。
static String valueOf​(T i) 返回T参数的字符串表示形式。

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注编程网的更多内容!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯