news 2026/1/12 1:13:55

Java中的String常用语法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java中的String常用语法

java.lang.String是 Java 中最核心的字符串操作类,其方法覆盖字符串判断、查找、截取、替换、转换、拼接等核心场景,以下按功能分类总结最常用的语法 / 方法,附示例和关键说明:

一、基础属性 / 构造(初始化 / 核心属性)

1. 字符串初始化
// 直接赋值(推荐,复用常量池)Strings1="hello";// 构造方法(新对象,极少用)Strings2=newString("hello");Strings3=newString(newchar[]{'h','e','l','l','o'});// 字符数组转字符串
2. 核心属性(只读)
Strings="hello";intlen=s.length();// 获取长度:5(注意区别于数组的length属性)booleanempty=s.isEmpty();// 判断是否为空字符串(长度为0):false

二、字符串判断 / 比较(相等、包含、匹配)

方法功能说明示例
equals(Object obj)严格比较内容(区分大小写)"abc".equals("ABC") → false
equalsIgnoreCase(String str)忽略大小写比较内容"abc".equalsIgnoreCase("ABC") → true
contains(CharSequence s)判断是否包含子串"hello".contains("el") → true
startsWith(String prefix)判断是否以指定前缀开头"hello".startsWith("he") → true
endsWith(String suffix)判断是否以指定后缀结尾"hello".endsWith("lo") → true
matches(String regex)正则表达式匹配"123".matches("\\d+") → true
compareTo(String another)按 Unicode 值比较大小(字典序)"a".compareTo("b") → -1
关键注意:
  • equals避免空指针:建议用常量串在前,如"abc".equals(s)(s 为 null 时返回 false,而非 NPE);
  • ==比较的是对象地址,切勿用 == 比较字符串内容

三、字符串查找 / 索引(定位字符 / 子串)

方法功能说明示例
charAt(int index)获取指定索引的字符(索引从 0 开始)"hello".charAt(1) → 'e'
indexOf(String str)查找子串首次出现的索引(无则 - 1)"hello".indexOf("l") → 2
indexOf(String str, int fromIndex)从指定索引开始查找"hello".indexOf("l",3) → 3
lastIndexOf(String str)查找子串最后出现的索引"hello".lastIndexOf("l") → 3
isEmpty()判断是否为空串(长度 0)"" .isEmpty() → true
isBlank()(Java 11+)判断是否为空白串(含空格 / 换行)" \n".isBlank() → true

四、字符串截取 / 拆分(分割、截取子串)

1. 截取子串
Strings="hello-world";Stringsub1=s.substring(2);// 从索引2截取到末尾:"llo-world"Stringsub2=s.substring(2,5);// [2,5)左闭右开:"llo"
2. 拆分字符串
方法功能说明示例
split(String regex)按正则拆分(默认全拆分)"a,b,c".split(",") → ["a","b","c"]
split(String regex, int limit)限制拆分次数"a,b,c".split(",",2) → ["a","b,c"]
注意:

拆分特殊字符(如.|)需转义:"a.b.c".split("\\.")

五、字符串替换 / 修改(不可变,返回新串)

String 是不可变对象,所有修改方法均返回新字符串,原字符串不变。

方法功能说明示例
replace(char old, char new)替换所有指定字符"hello".replace('l','x') → "hexxo"
replace(CharSequence old, CharSequence new)替换所有指定子串"hello".replace("ll","xx") → "hexxo"
replaceFirst(String regex, String replacement)替换首个匹配的正则子串"a,b,c".replaceFirst(",","-") → "a-b,c"
replaceAll(String regex, String replacement)替换所有匹配的正则子串"a1b2c".replaceAll("\\d","*") → "a*b*c"
trim()去除首尾空格(不含换行 / 制表符)" hello ".trim() → "hello"
strip()(Java 11+)去除首尾所有空白字符(含换行 / 制表符)" \nhello\t".strip() → "hello"

六、字符串转换(大小写、数组、编码)

1. 大小写转换
Strings="Hello";Stringupper=s.toUpperCase();// "HELLO"Stringlower=s.toLowerCase();// "hello"
2. 转字符数组 / 字节数组
char[]charArr="hello".toCharArray();// ['h','e','l','l','o']byte[]byteArr="hello".getBytes();// 按默认编码转字节数组byte[]byteArrUtf8="hello".getBytes(StandardCharsets.UTF_8);// 指定UTF-8编码
3. 静态转换方法(其他类型转字符串)
Strings1=String.valueOf(123);// 数字转字符串:"123"Strings2=String.valueOf(true);// 布尔值转字符串:"true"Strings3=String.valueOf(newchar[]{'a','b'});// 字符数组转字符串:"ab"

七、字符串拼接(高效选择)

1. 基础拼接(少量拼接)
Strings="hello"+"world";// 编译期优化,等价于"helloworld"Strings2="hello"+123;// 自动转字符串:"hello123"
2. 高效拼接(大量拼接)

频繁拼接用StringBuilder/StringBuffer(前者非线程安全,后者线程安全):

StringBuildersb=newStringBuilder();sb.append("hello").append("world").append(123);Stringres=sb.toString();// "helloworld123"

八、其他常用方法

方法功能说明示例
concat(String str)拼接字符串(等价于 +,极少用)"hello".concat("world") → "helloworld"
toCharArray()转为字符数组"abc".toCharArray() → ['a','b','c']
format(String format, Object... args)格式化字符串String.format("name:%s,age:%d","Tom",18) → "name:Tom,age:18"

九、核心避坑点

  1. 不可变性:所有修改方法(如replacesubstring)均返回新串,原串不变;
  2. 常量池复用:直接赋值String s = "abc"复用常量池,new String("abc")创建新对象;
  3. 空指针风险:调用null字符串的方法(如null.length())会抛NullPointerException
  4. 性能优化:大批量拼接用StringBuilder,避免频繁创建 String 对象。

十、高频示例

1. 校验字符串是否为纯数字
publicstaticbooleanisAllDigit(Strings){if(s==null||s.isEmpty())returnfalse;for(charch:s.toCharArray()){if(!Character.isDigit(ch))returnfalse;}returntrue;}
2. 反转字符串
publicstaticStringreverse(Strings){returnnewStringBuilder(s).reverse().toString();}
3. 去除字符串中所有空格
publicstaticStringremoveAllSpace(Strings){returns.replaceAll("\\s","");}

以上是 String 最常用的语法,覆盖开发中 90% 以上的字符串操作场景,核心记住不可变性方法返回新串两个关键点。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/8 23:35:42

GPT-5.2实战评测:从“聊天“到“干活“,AI助手进化史

GPT-5.2是OpenAI在竞争对手压力下发布的"补课"之作,重点转向专业知识工作而非聊天体验。该模型在GDPval基准测试中70.9%任务达到或超越人类专家水平,编程能力提升至55.6%,数学能力FrontierMath达40.3%。API虽涨价40%,但…

作者头像 李华
网站建设 2026/1/10 0:31:34

算力直降48%:Moonlight-16B凭什么改写大模型效率规则?

算力直降48%:Moonlight-16B凭什么改写大模型效率规则? 【免费下载链接】Moonlight-16B-A3B 项目地址: https://ai.gitcode.com/MoonshotAI/Moonlight-16B-A3B 导语 月之暗面开源的Moonlight-16B-A3B模型,通过Muon优化器与MoE架构组合…

作者头像 李华
网站建设 2026/1/7 19:46:21

终极代码质量检查:TscanCode如何帮助团队提升开发效率的完整指南

终极代码质量检查:TscanCode如何帮助团队提升开发效率的完整指南 【免费下载链接】TscanCode TscanCode: 腾讯开源的一款面向C/C、C#和Lua代码的快速准确的静态分析工具,旨在帮助程序员从一开始就发现代码缺陷。 项目地址: https://gitcode.com/gh_mir…

作者头像 李华
网站建设 2026/1/10 12:43:08

DLT Viewer终极指南:从入门到精通的嵌入式日志分析完整教程

DLT Viewer终极指南:从入门到精通的嵌入式日志分析完整教程 【免费下载链接】dlt-viewer 项目地址: https://gitcode.com/gh_mirrors/dlt/dlt-viewer 在当今复杂嵌入式系统和汽车电子领域,高效的日志分析工具已成为开发调试的必备利器。DLT View…

作者头像 李华
网站建设 2026/1/11 22:34:31

如何快速批量下载TikTok封面:完整操作指南

对于内容创作者和自媒体运营者来说,建立高质量的封面素材库是提升内容质量的关键环节。传统手动截图保存的方式不仅效率低下,还面临画质压缩、管理混乱等问题。本文将详细介绍如何使用TikTokDownload工具的封面下载功能,实现高效的批量处理。…

作者头像 李华
网站建设 2026/1/10 0:08:37

nvm-desktop终极指南:高效管理Node.js版本控制方案

还在为Node.js版本切换烦恼吗?nvm-desktop为开发者提供了桌面化的版本管理解决方案,让你告别复杂的命令行操作,轻松掌控开发环境。 【免费下载链接】nvm-desktop 项目地址: https://gitcode.com/gh_mirrors/nv/nvm-desktop 开发者痛点…

作者头像 李华