Java常用类之String类知识清单,简单易理解
2022/2/3 9:43:53
本文主要是介绍Java常用类之String类知识清单,简单易理解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
String类基础知识
1、String类表示字符串,理解为不可变的字符序列
2、String类声明为final,不可被继承
3、String类实现了Serializable接口:表示字符串是支持序列化的(序列化:可将java对象转变为二进制文件,从而传输这个java对象)
4、String类实现了 Comparable接口:表示字符串可以比较大小
5、底层用final char[] value存储
String类对象的创建方式
1、字面量方式
String s1="abcd"
该方式首先在栈空间里声明了一个String类型变量s1,然后在方法区中的常量池里存储abcd,将存储地址值(Ox0001)赋给s1,使s1指向abcd
2、构造器方式
String s2=new String(“abcd”);
该方式首先在栈空间里声明了一个String类型变量s2,然后在堆空间开辟一片空间,将该空间的地址值(Ox1111)赋给s2,使s2指向它。在方法区中的常量池里存储abcd,将存储地址值(Ox0001)赋给value属性,使它指向abcd
图中所示地址值均为假设地址值
其余类创建对象只有构造器方式
字符串的连接运算
1、str="aaa"+"bbb"
字符串常量和字符串常量连接后依然存在于常量池中,而常量池中相同的数据只存在一份。
因此若连接后的数据(aaabbb)已经在常量池中存在,就将该地址赋给接收它的变量(str)
若不存在,将在常量池中开辟空间存储连接后的数据(aaabbb),将新开辟的地址赋给接收它的变量(str)
2、str=s1+"bbb"
字符串变量和字符串常量连接后,先在堆空间new一个对象,将该对象的地址赋给接收它的变量(str),再让该对象指向常量池。因此,无论连接后的数据是否在常量池中存在,连接后的变量(str)指向的都是堆空间中对象的地址
2、str=s1+s2
字符串变量和字符串变量的连接,同2。
代码示例:
public class StringTest { public static void main(String[] args) { String s1="aaa"; String s2="bbb"; String s3="aaabbb"; String s4="aaa"+"bbb"; System.out.println(s3==s4);//true,常量池中相同的数据只存在一份,因此s4被赋上的是s3的地址 String s5=s1+"bbb"; System.out.println(s3==s5);//false,只要有一个是变量,就相当于在堆空间new了一个对象,该对象再指向常量池。因此s5被赋上的是堆空间中new出来的对象的地址 String s6=s1+s2; System.out.println(s5==s6);//false,两个都是变量,就相当于在堆空间new了一个对象,该对象再指向常量池。因此s6被赋上的是堆空间中new出来的对象的地址 System.out.println(s3==s6.intern());//true,intern()方法返回常量池中的存储地址 } }
String类的常用方法举例:
public class StringTest2 { public static void main(String[] args) { String str="Hello World"; System.out.println("该字符串的长度是:"+str.length());//包括空格 System.out.println("下标为1的字符是:"+str.charAt(1)); System.out.println("该字符串是否为空:"+str.isEmpty()); System.out.println("全部转换为小写:"+str.toLowerCase()); System.out.println("全部转换为大写:"+str.toUpperCase()); str=" Hello World "; System.out.println("去掉首尾空格:"+str.trim()); String s1="Hello World"; String s2=new String("Hello World"); System.out.println("s1和s2的地址值是否相同:"+(s1==s2));//==比较地址值 System.out.println("s1和s2的内容是否相同:"+s1.equals(s2));//equals比较内容 } }
equalsIgnorCase(object anObject):忽略大小写之后比较字符串内容是否相同
concat(String str):拼接字符串
compareTo(String anotherString):比较字符串大小
substring(int beginIndex):从指定索引处截取子串
startsWith(String prefix):是否以指定子串开始
endsWith(String suffix):是否以指定子串结束
contains(String str):是否包含子串
indexOf(int ch):返回子串第一次出现的索引,没有出现过返回-1
lastIndexOf(int ch):返回子串最后一次出现的索引,没有出现过返回-1
replace(char oldChar,char newChar):用新字符代替旧字符
matches(String regex):按正则表达式进行匹配
split(String regex):按正则表达式将字符串拆分成字符串数组
将String型转化为int型
Integer.parseInt(str)
将int型转化为String型
String.valueOf(i) 或 i+""
这篇关于Java常用类之String类知识清单,简单易理解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-07如何利用看板工具优化品牌内容创作与审批,确保按时发布?
- 2025-01-07百万架构师第十一课:源码分析:Spring 源码分析:Spring源码分析前篇|JavaGuide
- 2025-01-07质量检测标准严苛,这 6 款办公软件达标了吗?
- 2025-01-07提升品牌活动管理的效率:看板工具助力品牌活动日历的可视化管理
- 2025-01-07宠物商场的精准营销秘籍:揭秘看板软件的力量
- 2025-01-07“30了,资深骑手” | 程序员能有什么好出路?
- 2025-01-07宠物公园的营销秘籍:看板软件如何帮你精准触达目标客户?
- 2025-01-07从任务分解到资源优化:甘特图工具全解析
- 2025-01-07企业升级必备指南:从传统办公软件到SaaS工具的转型攻略
- 2025-01-07一文告诉你IT项目管理如何做到高效