JAVA之PAI&字符串
1、API(Application Programming Interface):应用程序编程接口
JAVA API:指的是JDK中提供的各种功能的java类
2、字符串
- String
1.java.long.String类代表字符串
2.字符串的内容是不会发生改变的,它的对象在创建后不能被更改
3.创建String对象的两种方式:直接赋值 new 构造方法
4.当使用双引号直接赋值时,系统会检查字符串在串池中是否存在 不存在则创建新的,存在则直接复用
5.比较:
==号比较:基本数据类型比较的是数据值,引用数据类型比较的是地址值。
字符串比较:a【boolean equals方法(要比较的字符串) 完全一样结果才是true,否则为false】
b【boolean equalsIgnoreCase(要比较的字符串) 忽略大小写的比较】
6.遍历字符串:public char charAt(int index):根据索引返回字符
7.public int length():返回此字符串的长度
8.String substring(int beginIndex, int endIndex) 截取 【包头不包尾,包左不包右。只有返回值才是截取的小串】
9.String substring(int beginIndex) 截取到末尾
10.String replace(旧值,新值) 替换【只有返回值才是替换之后的结果】
- StringBuilder
1. StringBuilder可以看作是一个容器,创建之后里面的内容是可变的
2.作用:提高字符串的操作效率
3.StringBuilder构造方法
4.StringBuilder成员方法【常用方法】
5.使用场景:字符串的拼接;字符串的反转
- StringJonier
1.是容器,创建之后里面的内容是可变的
2.作用:提高字符串的操作效率,而且代码编写特别简洁,但是目前市场上很少有人用
3.JDK出现的
4.构造方法:
例:
StringJoiner sj = new StringJoiner("---"); //1---2---3
StringJoiner sj = new StringJoiner(",","[","]");[1,2,3]
5.成员方法:
- StriingBuffer
- Pattern
- Matcher
3、字符串原理
- 字符串存储的内存原理
- 直接赋值会复用字符串常量池中的;new出来不会复用,而是开辟一个新的空间
- ==号比较的是什么?
- 基本数据类型比较数据值;引用数据类型比较地址值
- 字符串拼接的底层原理
- 一个加号,堆内存中俩对象
- 如果没有变量参与,都是字符串直接相加,编译之后就是拼接之后的结果,会复用串池中的字符串
- 如果有变量参与,每一行拼接的代码,都会在内存中创建新的字符串,浪费内存。
- StringBuilder提高效率原理图
-
- StringBuilder是一个内容可变的容器,所有要拼接的内容都会往StringBuilder中放,不会创建很多无用的空间,节约内存 字符串拼接的时候,如果有变量:
JDK8以前:系统底层会自动创建一个StringBuilder对象,然后再调用其append方法完成拼接。
拼接后,再调用其toString方法转换为String类型,而toString方法的底层是直接new了一个字符串对象
JDK8版本:系统会预估要字符串拼接之后的总大小,把要拼接的内容都放在数组中,此时也是产生一个新的字符串。
- StringBuilder是一个内容可变的容器,所有要拼接的内容都会往StringBuilder中放,不会创建很多无用的空间,节约内存 字符串拼接的时候,如果有变量:
- StringBuilder源码分析
- 1—默认创建一个长度为16的字节数组
2-添加的内容长度小于16,直接存
3-添加的内容大于16会扩容(原来的容量*2+2)
4-如果扩容之后还不够,以实际长度为准
- 1—默认创建一个长度为16的字节数组
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App