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的字节数组
标签:JAVA,String,StringBuilder,new,拼接,创建,字符串,PAI From: https://www.cnblogs.com/aimaxiaonengshou/p/18667054