本文详细讲解Java字符串核心知识点,涵盖String概念、创建方式、常用API、字符串比较、拼接、转换、StringBuffer与StringBuilder。
一、字符串基本概念
字符串是由多个字符组成的字符序列,Java中使用String类表示,属于引用数据类型。字符串一旦创建,内容不可更改,具备不可变性。
二、字符串创建方式
1. 直接赋值创建
publicclassStringCreateDemo{publicstaticvoidmain(String[]args){// 常量池创建字符串Stringstr1="Java编程";Stringstr2="Java编程";}}2. new对象创建
// 堆内存创建字符串对象Stringstr3=newString("双栈小码哥");// 字符数组转为字符串char[]charArr={'a','b','c'};Stringstr4=newString(charArr);// 字节数组转为字符串byte[]byteArr={97,98,99};Stringstr5=newString(byteArr);三、字符串内存特点
- 直接赋值方式会
存入字符串常量池,重复内容只会创建一份内存 - new方式每次都会在堆内存生成新对象
- 字符串内容无法直接修改,
修改本质是生成新字符串
四、字符串常用判断方法
publicclassStringJudgeDemo{publicstaticvoidmain(String[]args){Strings1="hello";Strings2="Hello";// 判断内容是否相同System.out.println(s1.equals(s2));// 忽略大小写判断相等System.out.println(s1.equalsIgnoreCase(s2));// 判断字符串是否为空System.out.println(s1.isEmpty());// 判断是否以指定前缀开头System.out.println(s1.startsWith("he"));// 判断是否以指定后缀结尾System.out.println(s1.endsWith("lo"));}}五、字符串获取与截取方法
publicclassStringGetDemo{publicstaticvoidmain(String[]args){Stringstr="JavaPython";// 获取字符串长度intlen=str.length();// 根据下标获取单个字符charc=str.charAt(3);// 查找字符首次出现下标intindex=str.indexOf('P');// 截取指定区间字符串Stringsub1=str.substring(4);Stringsub2=str.substring(0,4);}}六、字符串转换、分割与替换
publicclassStringOperateDemo{publicstaticvoidmain(String[]args){Stringmsg="Java And Python";// 字符串转字符数组char[]arr=msg.toCharArray();// 全部转为小写Stringlower=msg.toLowerCase();// 全部转为大写Stringupper=msg.toUpperCase();// 替换指定字符内容StringnewMsg=msg.replace("And","和");// 按照符号分割字符串String[]splitArr=msg.split(" ");}}七、字符串拼接
1. 加号拼接
Stringa="2026";Stringb="教程";Stringres=a+b;2. concat方法拼接
Stringresult=a.concat(b);八、可变字符串类
1. StringBuilder 非线程安全,效率高
publicclassStringBuilderDemo{publicstaticvoidmain(String[]args){StringBuildersb=newStringBuilder();// 追加内容sb.append("Java");sb.append("基础");// 插入内容sb.insert(0,"2026");// 反转字符串sb.reverse();// 转为String类型Stringstr=sb.toString();}}2. StringBuffer 线程安全,效率偏低
StringBuffersbf=newStringBuffer();sbf.append("编程学习");三类字符串对比
- String:内容不可变,少量拼接使用
- StringBuilder:可变字符,单线程大量拼接首选
- StringBuffer:可变字符,多线程并发场景使用
我是双栈小码哥,点赞+收藏+关注,希望本文能对您的学习和工作有所帮助。