Java中String是不可变的引用类型,创建方式包括字面量(复用常量池)、new关键字(堆中新建)及其他构造方式;常用操作均返回新字符串,比较用equals();拼接推荐+(少量)或StringBuilder(大量);支持文本块与基本类型互转。

Java 中 String 是最常用、最基础的类之一,它表示不可变的字符序列。虽然用起来像基本类型(比如可以直接用双引号赋值),但它其实是引用类型,属于 java.lang 包下的 final 类。
字符串的创建方式
常见创建方式有三种,区别在于是否复用常量池:
-
字面量方式(推荐):
String s = "hello";→ JVM 优先检查字符串常量池,存在则直接引用,否则新建并放入池中 -
new 关键字方式:
String s = new String("hello");→ 总是新建堆内存对象,不自动入池(除非显式调用intern()) -
其他构造方式:如
new String(char[])、new String(byte[])、String.valueOf(...),适合从数组或数字等转换
常用操作方法
大部分方法返回新字符串(因为 String 不可变),原字符串不受影响:
-
获取信息:
length()、charAt(i)、indexOf("x")、contains("abc") -
判断相等:必须用
equals()(比较内容),==只比较引用地址(除非都是字面量且相同) -
提取与修改:
substring(start, end)、toUpperCase()、trim()、replace("old", "new") -
分割与拼接:
split("regex")返回字符串数组;String.join("-", list)或str1 + str2(编译器会优化为 StringBuilder)
字符串拼接的注意事项
循环中频繁拼接字符串时,避免用 +(尤其在老版本 JDK 中会反复创建对象):
感谢广大歌迷长期以来对网站的支持和帮助,很多朋友曾经问我要过这个商城程序,当时由于工作比较忙,一直没空整理,现在好啦,已全部整理好了,在这里提供给有需要的朋友,没有任何功能限制,完全可以使用的,只是有些商品的广告需自己修改一下,后台没有办法修改,需要有HTML基础才可以修改,另外,哪位朋友在使用的时候,发现了BUG请与我们联系,大家共同改进,谢谢!后台管理地址:http://你的域名/admin/
立即学习“Java免费学习笔记(深入)”;
- 少量拼接(如日志、模板)用
+完全没问题,JDK 8+ 已优化为 StringBuilder - 大量或循环内拼接,显式用
StringBuilder(单线程)或StringBuffer(线程安全)更高效 - JDK 15+ 支持文本块(
"""..."""),适合多行字符串,自动处理缩进和换行
字符串与基本类型的转换
常用互转方法要记牢,注意异常处理:
-
字符串 → 数字:
Integer.parseInt("123")(抛NumberFormatException)、Double.parseDouble("3.14") -
数字 → 字符串:
String.valueOf(123)(推荐,可处理 null)、Integer.toString(123)、或直接"" + 123 -
格式化输出:用
String.format("%d %.2f", 42, 3.1415)或System.out.printf(...)
基本上就这些。String 看似简单,但涉及常量池、不可变性、编码、正则匹配等细节时容易踩坑。用熟核心方法,理解“不可变”这个前提,就能避开大多数问题。










