2026/4/6 5:22:21
网站建设
项目流程
重庆哪些网站推广公司,大学生求职创业补贴,开封+网站建设+网络推广,青岛无间设计公司网站String是Java中用于表示字符串的类#xff0c;位于java.lang包下#xff08;无需手动导入#xff09;。两个核心特性#xff1a;不可变性#xff08;Immutable#xff09;#xff1a;String 对象一旦创建#xff0c;其内部的字符序列就无法被修改。看似修改字符串的操作…String是Java中用于表示字符串的类位于java.lang包下无需手动导入。两个核心特性不可变性ImmutableString 对象一旦创建其内部的字符序列就无法被修改。看似修改字符串的操作如拼接、替换本质都是创建了一个新的String对象。字符串常量池直接赋值创建的String对象会存入JVM的字符串常量池目的是复用相同内容的字符串节省内存。String对象的两种创建方式public class StringCreateDemo { public static void main(String[] args) { // 方式1直接赋值推荐—— 从常量池获取/创建对象 String s1 Hello; String s2 Hello; // 比较的是对象的内存地址s1和s2指向常量池同一个对象 System.out.println(s1 s2); // 输出true // 方式2new关键字 —— 每次new都会在堆内存创建新对象 String s3 new String(Hello); String s4 new String(Hello); System.out.println(s3 s4); // 输出false // 正确比较字符串内容用equals()方法String重写了Object的equals System.out.println(s1.equals(s3)); // 输出true } }String类的常用方法public class StringMethodsDemo { public static void main(String[] args) { String str Hello Java! ; // 1. 获取字符串长度length() int len str.length(); System.out.println(长度 len); // 输出14包含首尾空格 // 2. 获取指定索引的字符charAt(int index)索引从0开始 char c str.charAt(3); System.out.println(索引3的字符 c); // 输出l // 3. 去除首尾空格trim()JDK11可用strip() String trimStr str.trim(); System.out.println(去空格后 trimStr); // 输出Hello Java! // 4. 大小写转换 String upperStr trimStr.toUpperCase(); // 转大写 String lowerStr trimStr.toLowerCase(); // 转小写 System.out.println(大写 upperStr); // 输出HELLO JAVA! System.out.println(小写 lowerStr); // 输出hello java! // 5. 判断是否包含指定子串contains(CharSequence s) boolean hasJava trimStr.contains(Java); System.out.println(包含Java hasJava); // 输出true // 6. 截取子串substring(int beginIndex[, int endIndex]) // 注意endIndex是结束索引不包含左闭右开 String sub1 trimStr.substring(6); // 从索引6截取到末尾 String sub2 trimStr.substring(0, 5); // 截取0-4索引的字符 System.out.println(sub1 sub1); // 输出Java! System.out.println(sub2 sub2); // 输出Hello // 7. 分割字符串split(String regex) String[] splitArr trimStr.split( ); // 按空格分割 System.out.println(分割后数组 Arrays.toString(splitArr)); // 输出[Hello, Java!] // 8. 替换字符/子串replace(CharSequence old, CharSequence new) String replaceStr trimStr.replace(Java, World); System.out.println(替换后 replaceStr); // 输出Hello World! // 9. 判断字符串是否为空/空白isEmpty()、isBlank()JDK11 String emptyStr ; String blankStr ; System.out.println(emptyStr.isEmpty()); // 输出true System.out.println(blankStr.isBlank()); // 输出trueJDK11 } }String不可变性的影响因为String不可变频繁拼接字符串如循环中str xxx会创建大量临时对象效率极低。此时应使用StringBuilder非线程安全效率高或StringBuffer线程安全效率稍低StringBuffer和StringBuilder它们是可变的字符序列底层基于可扩容的字符数组实现修改拼接、插入、删除时不会创建新对象而是直接操作底层数组效率大幅提升。StringBuffer和StringBuilder的核心区别特性StringBufferStringBuilder线程安全线程安全方法加了synchronized锁非线程安全无同步锁执行效率稍低锁的开销更高无锁的开销适用场景多线程环境如多线程拼接字符串单线程环境日常开发绝大多数场景诞生版本JDK 1.0JDK 1.5为弥补 StringBuffer 效率问题常用方法import java.util.Arrays; public class StringBuildBufferDemo { public static void main(String[] args) { // 1. 创建StringBuilder对象初始容量16可指定容量减少扩容次数 StringBuilder sb new StringBuilder(); // 空构造初始容量16 // StringBuilder sb new StringBuilder(32); // 指定初始容量避免频繁扩容 // 2. 拼接内容append()核心方法支持所有数据类型 sb.append(Hello); sb.append( ); sb.append(Java); sb.append(8); // 拼接数字 System.out.println(拼接后 sb); // 输出Hello Java8 // 3. 插入内容insert(int offset, 内容) sb.insert(6, My ); // 在索引6的位置插入My System.out.println(插入后 sb); // 输出Hello My Java8 // 4. 替换内容replace(int start, int end, String str)左闭右开 sb.replace(6, 9, New); // 替换索引6-8的内容为New System.out.println(替换后 sb); // 输出Hello New Java8 // 5. 反转字符串reverse() sb.reverse(); System.out.println(反转后 sb); // 输出8avaJ weN olleH // 6. 删除内容delete(int start, int end) sb.delete(0, 1); // 删除索引0的字符8 System.out.println(删除后 sb); // 输出avaJ weN olleH // 7. 转为String最终使用时一般要转成String String finalStr sb.toString(); System.out.println(最终String finalStr); // 输出avaJ weN olleH // 8. 获取长度length() System.out.println(当前长度 sb.length()); // 输出13 // StringBuffer用法仅创建方式不同 StringBuffer sbf new StringBuffer(多线程场景); sbf.append(使用StringBuffer); System.out.println(StringBuffer结果 sbf); // 输出多线程场景使用StringBuffer } }三者对比特性StringStringBufferStringBuilder可变性不可变可变可变线程安全是是否性能低频繁操作时中高引入版本JDK 1.0JDK 1.0JDK 1.5总结操作少量数据用 String。单线程下操作大量字符串用 StringBuilder。多线程下操作大量字符串用 StringBuffer。判断内容相等务必使用 equals() 而不是 。