news 2026/7/7 7:41:39

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/7/7 8:16:37

音乐文件解锁实战:3分钟搞定音频解密难题

音乐文件解锁实战:3分钟搞定音频解密难题 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: https://gitcode.c…

作者头像 李华
网站建设 2026/7/7 17:28:38

38、TCP/IP网络编程与Web开发全解析

TCP/IP网络编程与Web开发全解析 1. TCP服务器 - 客户端基础程序 以下是一个简单的TCP客户端程序示例: printf("4 : connected OK to\n"); printf("-------------------------------------------------------\n"); printf("Server hostname=%s PO…

作者头像 李华
网站建设 2026/7/7 9:58:17

39、动态网页开发之PHP与CGI编程指南

动态网页开发之PHP与CGI编程指南 在当今的互联网时代,动态网页的应用越来越广泛。本文将详细介绍如何创建用户账户、访问用户网页,以及深入探讨动态网页的相关知识,包括PHP和CGI编程。 1. 创建用户账户与访问网页 首先,我们需要创建一个用户账户。可以使用以下命令创建用…

作者头像 李华
网站建设 2026/7/7 8:45:30

spRAG开源项目终极安装指南:从零开始的完整使用教程

spRAG开源项目终极安装指南:从零开始的完整使用教程 【免费下载链接】spRAG RAG framework for challenging queries over dense unstructured data 项目地址: https://gitcode.com/gh_mirrors/sp/spRAG 欢迎来到spRAG开源项目的完整指南!&#x…

作者头像 李华
网站建设 2026/7/7 14:42:30

基于fcitx5 API开发个性化中文输入方案

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个fcitx5插件开发框架,功能包括:1. 提供简单API接口 2. 包含常用功能模板 3. 支持快速测试和调试 4. 文档和示例代码 5. 打包发布工具。要求使用C和Py…

作者头像 李华