
Java学习记录之String
内容永不可变:一旦字符串创建完成,它的值不会改变。 可共享:由于内容不可变,相同的字符串内容可以被多个引用共享,节省内存。 底层机制:字符串实际上是基于byte数组存储的,而不是直接的char数组。
发布日期:2021-05-24 05:19:32
浏览次数:22
分类:精选文章
本文共 2555 字,大约阅读时间需要 8 分钟。
Java String类简明指南
1. String的定义与特性
Java中的字符串是由String类表示的。所有使用双引号声明的字符串,都直接是String类的实例,无需显式使用new操作符。
核心特性:不可变性(Immutability)
2. 创建字符串的方式
String类提供零种构造方法,主要方式有:
基本方法
public String
:创建空字符串。 String str1 = new String(); // 内容为空
public String(char[] array)
:通过字符数组构建字符串。 char[] charArray = { 'A', 'B', 'C' };String str2 = new String(charArray); // "ABC"
public String(byte[] array)
:通过字节数组构建字符串。 byte[] byteArray = { 97, 98, 99 };String str3 = new String(byteArray); // "abc"
直接创建方式
public String(...)
之外,还可以通过直接用双引号创建:
String str4 = "Hello World"; // 这个字符串会被存储在字符串常量池中
3. 字符串与常量池的关系
程序中直接用双引号声明的字符串,都会被存储在**字符串常量池(String Constant Pool)**中。 这意味着,如果多次使用相同的字符串字面值,JVM会重复引用同一对象,而不是每次都创建新实例。
4. 字符串的值与引用比较
- 对于引用类型(如String),
==
进行的是地址值比较,而不是值比较。String str1 = "abc";String str2 = "abc";System.out.println(str1 == str2); // true
这是因为str1和str2指向的是同一个字符串实例。
- 如果需要比较字符串的内容,可以调用
equals
方法:System.out.println(str1.equals("abc")); // true
注意事项:
- 总是将常量放在等式左边,避免参数为null异常。例如,
"abc".equals(str)
更安全。
- 总是将常量放在等式左边,避免参数为null异常。例如,
- 如果需要忽略大小写比较,可以使用
equalsIgnoreCase
方法:System.out.println("Hello".equalsIgnoreCase("hello")); // true
5. String的基本操作方法
字符串类提供了一系列操作方法,常用方法包括:
5.1 获取字符串长度
length()
方法返回字符串的长度。
System.out.println("HelloWorld".length()); // 10
5.2 拼接字符串
concat(String str)
方法拼接字符串。
String strConcat1 = "Hello".concat("World"); // "HelloWorld"
5.3 获取单个字符
charAt(int index)
方法获取指定索引位置的字符。
System.out.println("Hello".charAt(1)); // e
5.4 查找子字符串
indexOf(String str)
方法返回子字符串的首次出现索引,返回-1表示未找到。
System.out.println("HelloWorld".indexOf("llo")); // 2
5.5 截取子字符串
substring(int beginIndex)
:从指定起点截取到末尾。String sub1 = "HelloWorld".substring(5); // "World"
substring(int beginIndex, int endIndex)
:从beginIndex开始,到endIndex结束(不包含endIndex)。String sub2 = "HelloWorld".substring(4,7); // "owo"
5.6 转换到字符数组和字节数组
toCharArray()
:将字符串转换成字符数组。char[] chars = "Hello".toCharArray();System.out.println(chars[0]); // H
getBytes()
:将字符串转换成字节数组。byte[] bytes = "abc".getBytes(); // addslashes特定编码(如UTF-8)
5.7 替换字符
replace(CharSequence oldString, CharSequence newString)
:替换所有匹配项。
String replacedStr = "How are you".replace("o", "*");System.out.println(replacedStr); // H*w r* u*
5.8 分割字符串
split(String regex)
:根据正则表达式分割字符串。
- 不要忘记使用正则表达式的特殊字符时,需前置反斜杠。
String strSplit = "aaa,bbb,ccc"; String[] parts = strSplit.split(","); System.out.println(parts[1]); // BBB
- 如果使用英文句点分割,需写成
"\\."
:String strSplit2 = "xxx.yyy.zzz"; String[] parts2 = strSplit2.split("\\.");
注意事项:split方法返回的数组大小取决于分割规则。
这篇文章以简洁的方式详细介绍了Java字符串的核心特性、创建方式以及常用操作方法,适合开发者快速入门和日常使用。
发表评论
最新留言
表示我来过!
[***.240.166.169]2025年04月13日 23时51分14秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
免费好用的证件扫描仪-扫描全能王
2019-03-21
自定义拦截器
2019-03-21
Kafka Producer机制优化-提高发送消息可靠性
2019-03-21
面试题5:(事务管理) ACID 是什么?
2019-03-21
10.Mybatis执行流程
2019-03-21
Oracle 一张表里面按照一个字段值将所有的数据按逗号拆分,变为多行数据
2019-03-21
【ucosII】4.事件管理
2019-03-21
阿里云网盘注册邀请码怎么获得,阿里云网盘注册邀请码获得内测方法
2019-03-21
Jmeter函数与变量使用详解(下)-32
2019-03-21
opencv图像处理学习(六十)——系统函数
2019-03-21
SpringMvc前台传Date类型到后台报400错误。
2019-03-21
多模块项目引入SpringSecurity后一直报404
2019-03-21
网络层串讲
2019-03-21
bfc块级格式化上下文的原理
2019-03-21
phpstudy:下载laravel框架配置后访问时报错原因
2019-03-21
Servlet 继承关系
2019-03-21
Servlet开发的5种工具对象
2019-03-21
Http状态码
2019-03-21
Servlet过滤器
2019-03-21