Day13
-----------------------------------------------------------------------------------
今天内容:
(1)String类
(2)StringBuilder类和StringBuffer类
(3)日期相关的类
(4)集合类
1.String类(查手册会用即可)
1.1 正则表达式
(1)基本概念
正则表达式本质上就是一个字符串,用于检查用户输入数据内容的格式是否正确。
该字符串通常由^运算符开头,由$运算符结尾,当然也可以省略。
(2)常用的规则
[abc] - 表示可以出现a、b 或 c。
[^abc] - 表示可以出现任何字符,除了 a、b 或 c。
[a-zA-Z] - 表示可以出现a 到 z 或 A 到 Z,两头的字母包括在内。
\d - 表示可以出现任何数字,相当于[0-9]。
\D - 表示可以出现任何非数字,相当于[^0-9]。
\s - 表示可以出现任何空白字符,相当于[ \t\n\x0B\f\r]。
\S - 表示可以出现任何非空白字符,相当于[^\s]。
\w - 表示可以出现任何单词字符,相当于[a-zA-Z_0-9]。
\W - 表示可以出现任何非单词字符,相当于[^\w]。
X? - 表示X可以出现一次或一次也没有,也就是0~1次。
X* - 表示X可以出现零次或多次,也就是0~n次。
X+ - 表示X可以出现X一次或多次,也就是1~n次。
X{n} - 表示X可以出现恰好 n 次。
X{n,} - 表示X可以出现至少 n 次,也就是>=n次。
X{n,m} - 表示X可以出现至少 n 次,但是不超过 m 次,也就是>=n次,并<=m次。
(3)相关的方法
boolean matches(String regex) - 用于判断当前字符串是否匹配参数指定的规则。
2.StringBuilder类和StringBuffer类(查手册会用即可)
2.1 基本概念(笔试题)
java.lang.String类用于描述不可改变的字符序列。
java.lang.StringBuilder类和StringBuffer类用于描述可以改变的字符序列。
其中StringBuffer类从jdk1.0开始出现,属于线程安全的类,因此效率比较低;
其中StringBuilder类从jdk1.5开始出现,属于非线程安全的类,因此效率比较高(推荐);
2.2 StringBuilder类
(1)常用的方法
StringBuilder(String str) - 根据参数指定的字符串内容过来构造对象。
- 其中该对象的初始容量为:16 + 参数字符串的长度。
int capacity() - 用于获取调用对象的容量大小并返回。
int length() - 用于获取调用对象的长度/字符的个数。
StringBuilder insert(int offset, String str)
- 用于将参数指定的字符串str插入当前字符序列中下标为offset的位置。
StringBuilder append(String str)
- 用于将参数字符串str追加到当前字符序列的末尾。
StringBuilder delete(int start, int end)
- 用于将当前字符序列中从start位置(含)开始到end位置(不含)结尾之间的内容移除
StringBuffer replace(int start, int end, String str)
- 用于将当前字符序列中从start位置到end位置之间的内容使用str替换。
StringBuffer reverse() - 实现字符序列的反转。
3.日期相关的类(查手册会用即可)
3.1 Date类
(1)基本概念
java.util.Date类主要用于描述特定的瞬间,可以精确到毫秒。
(2)常用的方法
Date() - 使用无参方式构造对象,默认采用当前系统时间来初始化。
Date(long date) - 根据参数指定的毫秒数来构造对象。
- 其中参数为距离1970年1月1日0时0分0秒的毫秒数。
- 与File类中的方法搭配使用。
long getTime() - 用于获取调用对象距离标准时间的毫秒数并返回。
void setTime(long time) - 用于设置调用对象的时间为距离标准时间time毫秒的时间点。
3.2 SimpleDateFormat类
(1)基本概念
java.text.SimpleDateFormat类主要用于实现日期和文本之间的转换。
(2)常用的方法
SimpleDateFormat(String pattern)
- 使用参数指定的模式来构造对象,模式字符串为:y-年 M-月 d-日 H-时 m-分 s-秒
public final String format(Date date)
- 用于实现日期类型到文本类型的转换。
public Date parse(String source) throws ParseException
- 用于实现文本类型到日期类型的转换。
3.3 Calendar类
(1)基本概念
java.util.Calendar类用于描述特征的瞬间,取代Date类。
该类是个抽象类,因此不能实例化对象。
(2)常用的方法
static Calendar getInstance()
- 用于获取Calendar类型的引用。
void set(int year, int month, int date, int hourOfDay, int minute, int second)
- 用于设置年月日时分秒信息。
Date getTime() - 用于返回Date类型的对象。
多态的使用场合(重点):
a.在方法体中使用父类的引用指向子类对象的方式形成多态。
Account acc = new FixedAccount(1000);
b.在方法的参数传递过程中形成了多态。
public static void test(Person p){ ... }
test(new Worker("zhangfei", 30, 3000));
c.通过方法的返回值类型形成了多态
Calendar getInstance(){
return new GregorianCalendar(zone, aLocale); //返回子类对象
}
4.集合类(重点)
当需要在程序中记录单个数据内容时,则声明一个变量即可;
当需要在程序中记录多个类型相同的数据内容时,则声明一个一维数组即可;
当需要在程序中记录多个类型不同的数据内容时,则创建一个对象即可;
当需要在程序中记录多个类型相同的对象时,则声明一个对象数组即可;
当需要在程序中记录多个类型不同的对象时,则声明一个集合即可,集合本质上就是容器。
4.1 数组和集合的比较(笔试题)
(1)数组的特点
a.数组本质上就是一段连续存储单元。
b.支持下标访问,可以实现随机访问。
c.数组一旦声明,则内存空间的长度固定无法更改。
d.数组中增删元素不方便,可能导致大量元素移动。
e.元素类型既可以是基本数据类型,也可以是引用数据类型。
(2)集合的特点
a.存储单元可连续也可不连续。
b.部分支持下标部分不支持。
c.集合的长度可以动态调整。
d.增删元素可以不移动大量元素。
e.元素类型只能是引用数据类型,因此需要借助包装类。
4.2 集合的框架
在Java语言中集合的顶层框架是:java.util.Collection接口 和 java.util.Map接口。
其中Collection集合中操作元素的基本单位是:单个元素。
其中Map集合中操作元素的基本单位是:单对元素。
在以后的开发中很少直接使用Collection集合,而是使用该集合的子集合:List集合、Queue集合、Set集合。
4.3 Collection集合的常用方法(练熟、记住)
boolean add(E e) - 用于将参数指定的元素e放入当前集合中。
boolean addAll(Collection<? extends E> c)
- 用于将参数集合c中的所有元素放入当前集合中。
boolean remove(Object o) - 用于将参数指定的元素o从当前集合中删除。
boolean removeAll(Collection<?> c)
- 用于将参数集合c中的所有元素从当前集合中删除。
void clear() - 用于清空当前集合中的所有元素。
boolean contains(Object o) - 用于判断当前集合中是否包含参数指定的元素o。
boolean containsAll(Collection<?> c)
- 用于判断当前集合中是否包含参数c中的所有元素。
boolean isEmpty() - 用于判断当前集合是否为空。
int size() - 用于获取集合中元素的个数。
boolean retainAll(Collection<?> c)
- 用于计算调用集合和参数集合之间的交集并保留到当前集合覆盖原有数据。
- 当前集合若发生改变则返回true,否则返回false。
作业:
1.尝试使用Collection集合的所有方法。
2.提示用户按照指定的格式输入生日信息,计算距离1970年1月1日的天数并打印出来
如输入格式:1998年1月5日
3.首先输入学生人数,循环输入班级的学生信息,然后放入Student数组中,并打印所有姓zhang的学生信息。
要求姓名用拼音(不要用汉字),学生所有信息用String格式输入,中间用逗号隔开。
其中学生信息有:学号、姓名以及年龄。
提示:
需要查询String类中的split()方法进行字符串拆分,实参传递逗号(",")即可。
Student[] arr = new Student[10];