目录
视频教程传送门 -> https://www.bilibili.com/video/BV1Cv411372m?p=77
String
java.lang.String 类代表字符串
String的对象在创建后不能被更改
String变量每次的修改其实都是产生并指向了新的字符串对象,原来的字符串对象都是没有改变的
API文档
String类创建对象的两种方式和区别
方式一:直接使用""定义(推荐方式)
=> 在字符串常量池(位于堆内存)中存储,而且相同内容只会在其中存储一份。
方式二:通过String类的构造器创建对象
=> 每new一次都会产生一个新对象,放在堆内存中。
构造器 | 说明 |
public String() | 创建一个空白字符串对象,不含有任何内容 String s1 = new String(); |
public String(String original) | 根据传入的字符串内容,来创建字符串对象(几乎不用) String s2 = new String("abc"); |
public String(char[] chs) | 根据字符数组的内容,来创建字符串对象 char[] chars = {'a' , 'b' , 'c'}; |
public String(byte[] chs) | 根据字节数组的内容,来创建字符串对象 byte[] bytes = {97, 98, 99}; |
方式一创建字符串内存图
方式二创建字符串内存图
字符串是否相等比较的是地址
字符串内容比较(equlas方法)
使用String提供的equlas方法 => 内容一样返回true
public boolean equals (Object anObject) -> 将此字符串与指定对象进行内容比较
public boolean equalsIgnoreCase (String anotherString) -> 同上,忽略大小写,eg:验证码
String常用API

【例】charAt(int index) 应用,生成验证码
package com.test.string;
import java.util.Random;
/**
使用String完成随机生成5位的验证码。
*/
public class VerificationCode {
public static void main(String[] args) {
// 1、定义可能出现的字符信息
String datas = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
// 2、循环5次,每次生成一个随机的索引,提取对应的字符连接起来即可
String code = "";
Random r = new Random();
for (int i = 0; i < 5; i++) {
// 随机一个索引
int index = r.nextInt(datas.length());
char c = datas.charAt(index);
code += c;
}
// 3、输出字符串变量即可
System.out.println(code);
}
}
ArrayList
数组定义后类型确定、长度固定 => 适合做数据个数和类型确定的场景
集合类型可以不固定、大小可变 => 适合做数据个数不确定,且要做增删元素的场景
创建集合对象、添加元素
构造器 public ArrayList()
ArrayList list = new ArrayList();
方法
public boolean add(E e) -> 将指定的元素追加到此集合的末尾 list.add(6)
public void add(int index,E element) -> 在此集合中的指定位置插入指定的元素 list.add(2,'water')
ArrayList泛型使用
ArrayList<E> 是一个泛型类 => 可以在编译阶段约束集合对象只能操作某种数据类型。
eg:
ArrayList<String> :此集合只能操作字符串类型的元素。
ArrayList<Integer>:此集合只能操作整数类型的元素。
注意:不能用Int要用Integer,因为集合中只能存储引用类型,不支持基本数据类型。