目录
一、API
二、包
2.导入不同包下的同名程序
三、String
1. String类是什么?
2. 如何创建String对象?(常用的四种方法)
3. String API
a. 遍历字符串
b. 判断字符串内容是否相等:
c. 截取子串
d. 替换部分内容
e. 匹配子串
f. 匹配开头字符串
g. 字符串切割
4. String的注意事项:
a. String的不可变
b. 以" "创建的字符串
c. 通过new创建的字符串对象
d. 面试题
T1. 常量折叠: 字符串的优化机制
T2. good and abc
5. 案例
a. 用户登录
b. 生成验证码
三、集合:ArrayList
1.什么是集合?
2. ArrayList API
a. 创建ArrayList集合对象
b. 在集合中添加元素
c. 获取集合中某个索引位置处的值
d. 获取集合的大小
e. 删除元素
f. 修改指定下标处的元素
3. 案例
a. 删除字符串集合中含有“枸杞”的字符串
一、API
二、包
2.导入不同包下的同名程序
三、String
1. String类是什么?
2. 如何创建String对象?(常用的四种方法)
eg. 创建String对象的四种方法:
还能使用char数组和byte数组创建String对象。
3. String API
a. 遍历字符串
Java字符串不支持使用索引来访问或修改字符串中的单个字符。只能使用charAt()方法来通过索引获取指定位置的字符。
法一、遍历字符串,打印其中的每一个字符( charAt() ):
法二、把字符串转为字符数组再遍历( toCharArray() ):
b. 判断字符串内容是否相等:
已知Java中String是引用类型变量,存储的是字符串对象的地址,所以直接比较两个字符串变量,是在比较两个变量的地址是否相同,而不是比较内容是否相同。
法一、equals(大小写敏感)
法二、equalsIgnoreCase(大小写不敏感)【比较验证码】
c. 截取子串
d. 替换部分内容
replace( )
e. 匹配子串
contains( ):精准匹配,大小写敏感
f. 匹配开头字符串
用来匹配姓氏:
g. 字符串切割
split( )
4. String的注意事项:
a. String的不可变
String类型的底层源码是一个用final修饰的char数组。(无法修改其内容,只能重新创建)
b. 以" "创建的字符串
以" "创建的字符串对象会放在堆内存的常量池中,且内容相同的不同变量引用的是同一个字符串。这样设计的好处是节约内存。
c. 通过new创建的字符串对象
每次new都会创建一个新对象放在堆内存中。
d. 面试题
T1. 常量折叠: 字符串的优化机制
T2. good and abc
5. 案例
a. 用户登录
b. 生成验证码
四、集合:ArrayList
1.什么是集合?
相当于C++中的STL容器。
2. ArrayList API
a. 创建ArrayList集合对象
法一、不约束集合类型(可以添加任意类型的数据)
ArrayList list = new ArrayList();
法二·、约束集合类型(只能添加指定类型的数据)
ArrayList<String> list = new ArrayList<>(); //泛型思想
b. 在集合中添加元素
法一、add("w") //在末尾加入一个元素
法二、add(1, "y") //在指定下标处加入一个元素
c. 获取集合中某个索引位置处的值
get(下标)
获取的是一个对象,要用equals()方法来比较是否相等。
d. 获取集合的大小
size()
e. 删除元素
法一、删除指定下标处的元素
remove(下标)
法二、删除指定元素
remove(对象) //注意删除到的是第一个匹配到的对象
f. 修改指定下标处的元素
set(1, "l")
3. 案例
a. 删除字符串集合中含有“枸杞”的字符串
获取集合数据:get()
匹配子串:contains()
删除集合数据:remove()
注意事项:注意集合数据删除后,后面的数据会往前挪动一个位置,如何直接i++,会跳过一个元素。
法一】正向遍历,每次删除后i--
法二】 倒着遍历删除
五、Object类
a. 概念
b. toString 和 equals
- toString方法默认返回 类型@hashcode。往往重写来打印类的内容。
- equals比较的是地址(完全可以使用“==”来代替)。往往重写来比较两个对象的内容是否一致。
c. clone
- clone方法是受保护的无法直接调用,想要使用clone方法,还有4个细节要处理
- 要重写clone方法,还必须要实现Cloneable这个接口(只是一个标记接口,里面没有要实现的方法),告诉编译器该类可以使用clone方法,否则会报错。
- 还要处理异常CloneNotSupport
- clone方法的返回值是Object类型,所以要将返回结果强转类型。
d. 浅拷贝和深拷贝
- 浅拷贝与深拷贝的不同在于:引用类型成员内容相同,指向同一空间。我们上面写的就是浅拷贝。
- 深拷贝:因为给拷贝出的新对象的的引用类型成员开辟了新空间,所以引用类型成员内容不同,指向不同空间,但空间中的内容相同。
e. 深拷贝的实现
关键在于给对象的的引用类型成员开辟的新空间。所以在重写clone时我们要单独拿出引用类型成员,使用其clone方法创建一个新空间,再赋给引用类型成员。
- 引用类型成员的类也要实现Cloneable接口。
- 在clone方法中创建对象后,单独调用引用类型成员的clone方法克隆一个引用类型成员。
六、Objects类
a. 概念
------------------------END-------------------------
才疏学浅,谬误难免,欢迎各位批评指正。