Java中字符串相关内容(上)
一、概要:日常Java开发中,字符串用到的非常多,对于字符串我们不得不做到熟悉掌握使用
二、字符串简介:多个字符连接在一起
三、常见字符串分类:
1、字符串String:
1.1、String是不可变对象,加减操作性较差
1.2、String的创建方式:
1.2.1:直接赋值:String str = "123";
1.2.2:通过new创建字符串对象:String str = new String("123");
1.2.3:两种创建方式的不同:
1.2.3.1:直接赋值是在栈中创建一个str变量,直接引用方法区中运行时常量池中的常量地址;使用这种方式要么会在常量池中创建一个对象,要么就是不创建对象;
如果常量池中存在需要的常量地址就不会创建,没有就创建一个常量,并且把地址赋值给栈中str变量
1.2.3.2:通过创建对象赋值是堆中的对象地址引用方法区常量池中的常量地址,然后栈中创建的str变量再去引用堆中的对象地址,使用这种方法至少要创建一个对象
1.3、String字符串值为空问题:
1.3.1:String s = null; 还没有初始化,还没有分配内存空间
1.3.2:String s = ""; 已经初始化,开辟了内存空间,只是内容为空
1.4、字符串常用方法:
1.4.1:把一个char类型数组转换成字符串:new String(char[] c);
1.4.2:把一个字符串转换为char类型数组:str.toCharArray();
1.4.3:获取字符串当中的某一个字符:str.charAt(字符角标)
1.4.4:返回一个子字符串在母字符串当中第一次出现的位置角标:str1.indexOf(str2)
1.4.5:返回一个子字符串在母字符串当中最后一次出现的位置角标:str1.lastIndexOf(str2)
1.4.6:字符串当中字母转成小写字母:str.toLowerCase()
1.4.7:字符串当中字母转成大写字母:str.toUpperCase()
1.4.8:忽略大小写比较两个字符串是否相等:str1.equalsIgnoreCase(str2)
1.4.9:将一个新字符串s2连接到字符串s1末尾:s1.concat(s2)
1.4.10:判断字符串str1是否包含字符串str2:str1.contains(str2);
1.4.11:判断字符串str1是否以字符串str2开头:str1.startsWith(str2);
1.4.12:判断字符串str1是否以字符串str2结尾:str1.endsWith(str2);
1.4.13:将字符串str中所有出现的字符串s替换成字符串x:str.replace(s, x);
1.4.14:根据字符串str中出现的内容按照正则表达式x进行切割:str.split(x);
1.4.15:根据字符串str中内容的角标对字符串进行截取:str.substring(index);注意包含角标所在的字符
1.4.16:根据字符串str中内容的角标对字符串进行截取:str.substring(beginIndex,endIndex);注意包含开始角标所在字符,不包含结束角标所在字符
1.4.17:去除字符串str前后两端的空格:str.trim();
1.4.18:返回其他基本数据类型的字符串表示形式:String.valueOf(数据类型);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码