1. String的常用方法:
- length():获取字符串的长度(字符个数)
- trim():去除当前字符串两边的空白字符
- toUpperCase()/toLowerCase():将当前字符串中的英文部分给转换为全大写/全小写
- startsWith()/endsWith():判断当前字符串是否是以给定的字符串开始的/结束的
- charAt():返回当前字符串指定位置上的字符----根据位置找字符\
- indexOf()/lastIndexOf():检索给定字符串在当前字符串中第一次/最后一次出现的位置,根据字符串找位置
- substring():截取当前字符串中指定范围内的字符串(含头不含尾--包含start,但不包含end)
- 静态方法valueOf():将其它数据类型转换为String
2. StringBuilder:
- 由于String是不变对象,每次修改内容都会创建新的对象,因此String不适合频繁修改操作,为了解决这个问题,java提供了StringBuilder类。
- StringBuilder是专门用于修改字符串的一个类,内部维护一个可变的char数组,所做操作都是在这个数组之上进行的,修改速度、性能优秀,并且提供了修改字符串的常见方式:增、删、改、插。
3. StringBuilder的常用方法:
- append():增加内容------------------------增
- delete():删除部分内容--------------------删
- replace():替换部分内容-------------------改
- insert():插入内容----------------------------插
4. 正则表达式:
- 用于描述字符串的内容格式,使用它通常用于匹配一个字符串是否符合格式要求
- 正则表达式的语法:-------------------后续专门发一期博客讲解
5. String支持与正则表达式相关的方法:
- matches():使用给定的正则表达式(regex)验证当前字符串的格式是否符合要求,若符合则返回true,否则返回false
- replaceAll():将当前字符串中满足正则表达式(regex)的部分给替换为给定的字符串(s)
- split():将当前字符串按照满足正则表达式(regex)的部分进行拆分,将拆分出的以String[]形式来返回
6. Object:对象/东西
- 是所有类的鼻祖,所有类都直接或间接继承了Object,万物皆对象,为了多态
- Object中有两个经常被派生类重写的方法:toString()和equals()
- 调用Object类的toString()时默认返回:类的全称@地址,没有参考意义,所以常常重写toString()来返回具体属性的值。
> 注意:String、StringBuilder等都重写了toString()来返回字符串内容了
- 调用Object类的equals()时默认比较的是还是==(即比较地址),没有参考意义,所以常常重写equals()来比较具体的属性值
> 注意:
>
> 1. String类已经重写equals()来比较字符串内容了,但StringBuilder并没有
> 2. 重写equals()的基本原则:
> - 原则上要比较两个对象的属性值是否相同
> - 两个对象必须是同一类型的,若类型不同则返回false
7. 包装类:
- java定义了8个包装类,目的就是为了解决基本类型不能直接参与面向对象开发的问题,使用基本类型可以通过包装类的形式存在。
- 包括:Integer、Character,Byte,Short,Long,Float,Double,Boolean,其中Character和Boolean是直接继承自Object的,其余6个包装类继承自java.lang.Number类。
- JDK1.5推出了一个新的特性:自动拆装箱,当编译器编译时若发现是基本类型与包装类型之间的相互赋值,将自动补齐代码来完成转换工作,这个过程称为自动拆装箱。
8. 集合:
- 集合与数组一样,可以保存一组元素,并且提供了操作数组元素的相关方法,使用更方便
8.1. java集合框架中相关接口:
- java.util.Collection接口:是所有集合的顶级接口,封装了所有集合所共有的东西,下面有多种实现类,因此我们有更多的数据结构可以选择。
- Collection接口下面有两种常见的子接口:
- java.util.List:线性表,是可以重复集合,并且有序
- java.util.Set:不可重复集合,大部分实现类是无序的
- 集合只能存放引用类型元素,并且存放的是元素的引用
8.2. Collection常用方法:
- add():向集合中添加一个元素,成功添加则返回true
- size():返回当前集合的元素个数
- isEmpty():判断当前集合是否为空集.当且仅当size=0时返回true.
- clear():清空集合
- contains():判断集合是否包含给定元素
- remove():从集合中删除给定元素,成功删除返回true.
- addAll():将参数给定的集合中的所有元素添加到当前集合中,添加后当前集合发生改变则返回true
- containsAll():判断当前集合中是否包含参数集合中的所有元素
- retainAll():取交集
- removeAll():删交集
8.3. 集合的遍历:
- Collection接口提供了统一的遍历集合的方式:迭代器模式。通过iterator()方法可以获取一个用于遍历当前集合元素的迭代器(Iterator接口)。
- java.util.Iterator接口:定义了迭代器遍历集合的相关操作。不同的集合都实现了用于遍历自身元素的迭代器实现类,我们无需记住它们的名字,从多态的角度把它们看成Iterator即可。
- 迭代器遍历遵循的步骤为:问、取、删,其中删除元素并不是必要操作
8.4. 增强型for循环:
- JDK1.5时推出了一个特性:增强型for循环,也称为新循环,让我们使用相同的语法遍历集合和数组。
- 语法:
```java
for(元素类型 变量名 : 集合或数组){
循环体
}
```
8.5. 泛型:
- JDK1.5时推出了一个特性:泛型
- 泛型也称为参数化类型,允许我们在使用一个类时,传入某个类型来规定其内部的属性、方法参数或返回值类型,使得我们使用的时候更加方便。
- 泛型在集合中被广泛使用,用来指定集合中元素的类型
- 若不指定泛型的具体类型,则默认为Object,获取泛型的值时,编译器会补充强转操作。
8.6. 集合与数组的转换:
- 数组转换为List集合:----------asList()
- 集合转为数组:------------------toArray()
9. List接口:
- 继承自Collection接口,List集合是可重复集合,并且有序,并且提供了一套可以通过下标操作元素的方法
- 常见的实现类:
- java.util.ArrayList:内部使用数组实现,查询性能更好(直接下标查找)、增删性能不太好
- java.util.LinkedList:内部使用链表实现,查询性能不太好,首尾增删元素性能更好
> 注意:在对集合操作的性能没有特别苛刻要求时,通过选择ArrayList。
10. List集合常见方法:
- get():根据下标获取元素
- set():将指定元素设置到指定位置 ,并返回被替换的元素(用时接收)
- 重载add():将指定元素添加到指定位置,理解为插入操作
- 重载remove():删除并返回指定位置元素
- subList():获取当前集合中指定范围内的子集(含头不含尾)
11. 集合的排序:
- Collections是集合的工具类,里面定义了很多静态方法用于操作集合
- Collections.sort(List list)方法:可以对list集合进行自然排序(从小到大),Collections.sort(List list)方法要求List集合中的元素必须是可比较的,若不可比较则直接发生编译错误,不允许排序。判定是否可比较的标准为元素是否实现了java.util.Comparable接口。实际开发中,我们并不会让我们自己定义的类去实现Comparable接口的,因为这对我们的程序有侵入性。
侵入性:当我们调用某个API功能时,其要求我们为其修改其它额外的代码,这个现象叫做侵入性。侵入性越强则越不利于程序的后期维护,应尽量避免。