追风赶月莫停留,平芜尽处是春山。这篇文章主要讲述第三章-字符串#yyds干货盘点#相关的知识,希望能为你提供帮助。
1 字符串
1.1 API
1.1.1 API概述
==API==(==A==pplication ==P==rogramming ==I==nterface): 应用程序编程接口
- java API: 指的就是JDK中提供的各种功能的Java类
这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,
只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如何使用
String类在java.lang包下,所以使用的时候不需要导包
==String==类代表==字符串==,Java程序中的所有字符串文字(例如" abc" )都被实现为此类的实例
也就是说,==Java程序中所有的双引号字符串,都是String类的对象==
字符串的特点
- 字符串不可变,它们的值在创建后不能被更改
- 虽然String 的值是不可变的,但是它们可以被共享
- 字符串效果上相当于字符数组(char[]),但是底层原理是字节数组(byte[])
==JDK8及以前是字符数组,JDK9及以后是字节数组==
方法名 | 说明 |
---|---|
public String() | 创建一个空白字符串对象,不含有任何内容 |
public String(char[] chs) | 根据字符数组的内容,来创建字符串对象 |
public String(byte[] bys) | 根据字节数组的内容,来创建字符串对象 |
String s = " abc" ; | 直接赋值的方式创建字符串对象,内容就是abc |
- 通过new创建的字符串对象,每一次new都会申请一个内存空间,虽然内容相同,但是地址值不同
char[] chs = {a, b, c};
String s1 = new String(chs);
String s2 = new String(chs);
上面的代码中,JVM会首先创建一个字符数组,然后每一次new的时候都会有一个新的地址,只不过s1和s2参考的字符串内容是相同的
- 以" " 方式给出的字符串,只要字符序列相同(顺序和大小写),无论在程序代码中出现几次,JVM都只会建立一个String 对象,并在字符串池中维护
String s3 = "abc";
String s4 = "abc";
在上面的代码中,针对第一行代码,JVM会建立一个String对象放在字符串池中,并给s3参考;
第二行则让s4直接参考字符串池中的String对象,也就是说它们本质上是同一个对象
1.2.4 字符串的比较
- 使用 ===\\=== 做比较
- 基本类型: 比较的是==数据值==是否相同
- 引用类型: 比较的是==地址值==是否相同
- public boolean ==equals(Object anObject)==: 将此字符串与指定对象进行比较。由于我们比较的是字符串对象,所以参数直接传递一个字符串
StringBuilder是一个可变的字符串类,我们可以把它看成是一个容器
这里的可变指的是StringBuilder对象中的内容是可变的
- String和StringBuilder的区别:
- String: 内容是不可变的
- StringBuilder: 内容是可变的
方法名 | 说明 |
---|---|
public StringBuilder() | 创建一个空白可变字符串对象,不含有任何内容 |
public StringBuilder(String str) | 根据字符串的内容,来创建可变字符串对象 |
方法名 | 说明 |
---|---|
public StringBuilder append(任意类型) | 添加数据,并返回对象本身 |
public StringBuilder reverse() | 返回相反的字符序列 |
- StringBuilder转换为String
public String ==toString()==: 通过toString()就可以实现把StringBuilder转换为String
- String转换为StringBuilder
public ==StringBuilder(String s)==: 通过构造方法就可以实现把String转换为StringBuilder
集合类有很多,先学习==ArrayList==
ArrayList< E> :
- 可调整大小的数组实现
- < E> : 是一种特殊的数据类型,泛型。
- 在出现E的地方我们使用引用数据类型替换即可。
方法名 | 说明 |
---|---|
public ArrayList | 创建一个空的集合对象 |
public boolean add(E e) | 将指定的元素追加到此集合的末尾 |
public void add(int index, E element) | 在此集合中的指定位置插入指定的元素 |
方法名 | 说明 |
---|---|
public boolean remove(Object o) | 删除指定元素,返回是否删除成功 |
public E remove(int index) | 删除指定索引处的元素,返回被删除的元素 |
public E set(int index, E element) | 修改指定索引处的元素,返回被修改的元素 |
public E get(int index) | 返回指定索引处的元素 |
public int size() | 返回集合中元素的个数 |
推荐阅读
- 面试只要问到分布式,必问分布式锁
- #yyds干货盘点#前端如何下载文件流
- #yyds干货盘点#dart系列之:创建Library package
- 如何正确提出数据需求
- 冒泡排序
- 模拟实现库函数strlen,strcpy,strstr,memmove,memcpy,strcat
- RocketMQ(消息存储机制详解与源码解析)
- 程序自动化与进程的含义
- 解密并发幕后黑手(线程切换引发的原子性问题)