当前位置: 首页 > news >正文

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. 不可变性:所有修改方法(如replace、substring)均返回新串,原串不变;
  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% 以上的字符串操作场景,核心记住不可变性和方法返回新串两个关键点。

http://www.cnnetsun.cn/news/18487.html

相关文章:

  • GPT-5.2实战评测:从“聊天“到“干活“,AI助手进化史
  • 算力直降48%:Moonlight-16B凭什么改写大模型效率规则?
  • 终极代码质量检查:TscanCode如何帮助团队提升开发效率的完整指南
  • DLT Viewer终极指南:从入门到精通的嵌入式日志分析完整教程
  • 如何快速批量下载TikTok封面:完整操作指南
  • nvm-desktop终极指南:高效管理Node.js版本控制方案
  • Django开发效率翻倍:5个必知技巧
  • 开源大模型微调与部署实战指南:从零开始掌握LLaMA Factory工具全流程
  • Windows Cleaner:5分钟彻底解决C盘空间不足的终极方案
  • Python + Ursina设计一个有趣的3D小游戏
  • 企业级Spring应用启动失败排查实战
  • GeoJSON.io:零基础地理数据编辑工具完全指南
  • 特斯拉11月在美销量跌至近四年低点,廉价车型未扭转颓势
  • LangChain4j 比 SolonAI 强在哪?弱在哪?
  • CodeQwen1.5微服务开发实战:从架构设计到部署上线的完整指南
  • 从零玩转RT-Thread(20):为什么需要定时器?——定时器的应用场景
  • eino框架结构化输出解析:从混乱文本到精准数据的魔法转换
  • 小爱音箱终极音乐解放方案:XiaoMusic完整使用指南
  • 从零打造专业级Vue滑块控件:vue-slider-component深度实践指南
  • AnuPpuccin主题深度体验:5个技巧让你的Obsidian笔记焕然一新
  • AI一键搞定!Linux安装JDK17的最佳实践
  • Win11Debloat:释放系统潜能,打造专属纯净Windows体验
  • Python Web开发终极指南:用Ludic框架重构你的前端体验
  • F2批量重命名终极指南:从入门到精通的完整解决方案
  • 深蓝词库转换工具的技术架构与应用实践
  • 2025年CLIP模型爆发:从跨模态基座到产业变革的技术革命
  • 腾讯混元图像3.0登顶全球!800亿参数重构AIGC行业格局
  • halcon求区域交集——intersection
  • 如何用5分钟掌握AMD Ryzen处理器深度调试技巧?终极完整教程
  • 终极Nginx Web界面管理指南:从入门到精通的一站式解决方案