字符串即字符的组合,在Java中,字符串是一个类,所以我们见到的字符串都是对象。
常见创建字符串手段:
- 每当有一个字面值出现的时候,JVM虚拟机就会创建一个字符串
- 调用String的构造方法创建一个字符串对象
- 通过+加号进行字符串拼接也会创建新的字符串对象
String 被修饰为final,所以是不能被继承的。
如果不使用字符串格式化,就需要进行字符串连接,如果变量比较多,拼接就会显得繁琐。
使用字符串格式化,就可以简洁明了。
%s表示字符串,%d表示数字,%n表示换行。
字符串的常用API
length方法返回当前字符串的长度。
split
根据分隔符进行分隔
subString
截取子字符串
trim
去掉首尾空格
toLowerCase 全部变成小写
toUpperCase 全部变成大写
indexOf 判断字符或者子字符串出现的位置
contains 是否包含子字符串
replaceAll 替换所有的
replaceFirst 只替换第一个
字符串比较
一般说来,编译器每碰到一个字符串的字面值,就会创建一个新的对象。
如果都是字面值,那么内容相同,就是一样的字符串,字符串只要出现了一次,就会被放到字符串常量池中,下次如果使用了相同的字符串,就会直接拿来用。
使用equals进行字符串内容的比较,必须大小写一致
equalsIgnoreCase,忽略大小写判断内容是否一致
可变的字符串
StringBuffer和StringBuilder。
StringBuffer是线程安全的(synchronized),而 StringBuilder不是,所以StringBuilder效率更高,锁的获取和释放会带来开销。
课程代码:
package com.qingguoxy.test;
import com.qingguoxy.entity.Luban;
public class Test09 {
public static void main(String[] args) {
Luban luban = new Luban();
String name = luban.getName();
String object = new String("蓝Buff");
String action = "%s在偷敌方的%s!%d%n";
System.out.printf(action,name,object,666);
int len = name.length(); //获取字符串的长度
System.out.println(len);
String str = name + "||兰陵王||之间的仇恨! ";
String[] strSplit = str.split("\\|\\|");
for(int i = 0;i < strSplit.length;i ++){
System.out.println(strSplit[i].trim());
}
str = str.replaceFirst("\\|\\|","");
System.out.println(str);
if(str.indexOf("鲁班1") != -1){
System.out.println("鲁班存在");
}
System.out.println("====================");
String name1 = "鲁班";
String name2 = new String("鲁班") ;
System.out.println(name1.equals(name2) );
StringBuffer sb = new StringBuffer(luban.getName());
sb.append("正在猥琐发育!~");
sb = new StringBuffer(sb.substring(0,2));
System.out.println(sb);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)