JavaSE进阶——Day04 正则、Collection集合

JavaSE进阶——Day04 该篇主要讲解Java中的正则Collection集合

学习目标

  • API

    • BigInteger类

    • BigDecimal类

    • Arrays类

    • 包装类

    • String类

  • 正则

    • 正则表达式的体验

    • 正则表达式的语句及案例

  • Collection集合

    • 集合与数组之间的区别

    • 集合的体系

    • Collection集合中常用方法

    • Collection集合遍历的方式

Math工具类

Math类:针对数字运算提供一系列方法

工具类的编写规则:

  1. 不能被继承,使用final关键字修饰类
  2. 不能创建对象,使用private关键字修饰构造方法
  3. 对外提供静态方法(通过类名访问)

BigInteger

问题:long类型在存储数据时有上限吗?

答案:是有上限

问题:在程序中使用long无法存储整数数字时,怎么办?

答案:使用BigInteger

学习API的套路:

  1. 明确API类归属包
  2. 明确API类可以解决什么问题
  3. 使用API
    • 构造方法
    • 常用方法
1
2
3
4
5
6
7
8
9
10
import java.math.BitInteger;

//使用构造方法,创建对象
BigInteger num1 = new BigInteger("1231231231231231231231");
BigInteger num2 = new BigInteger("1000000000000000");

//四则运算
BigInteger result1 = num1.add( num2 );//加运算

BigInteger result2 = num1.subtract( num2 );//减运算

BigDecimal

BigDecimal类:用来存储超出double范围的小数

1
2
3
4
5
6
7
8
9
10
import java.math.BigDecimal;

//使用构造方法,创建对象
BigDecimal num1 = new BigDecimal("12312312312312311.123123123123");
BigDecimal num2 = new BigDecimal("1000000000000000.9999999999");

//四则运算
BigDecimal result1 = num1.add( num2 );//加运算

BigDecimal result2 = num1.subtract( num2 );//减运算

Arrays工具类

Arrays类:针对数组提供了一系列方法

  • 数组元素排序(默认升序)
  • 数组转换为字符串

包装类

什么是包装类?

1
2
3
Java语言: 万物皆对象

Java把8种基本类型,进行了封装,变为包装类
基本类型 包装类
byte Byte
short Short
int Integer
long Long
float Float
double Double
char character
boolean Boolen

包装类解决程序中的什么问题?

1
2
3
4
1、实现String类型和7种基本类型(没有char)之间的转换
String str = "1234"; => int类型

2、在后面学习mysql时会大量使用到包装类(包装类中可以存储null数据)

包装类怎么使用?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//使用Integer作为代表

Integer num = 100;
Boolean flag = true;
Double num2 = 3.14;
Integer num = null;


//使用包装类:解决String类型和基本类型之间数据转换

//基本类型数据 => String类型
int num =100;
String str = num+""; //任意类型和字符串相加,结果都是String类型

String str = String.valueOf( num );



//String类型 => 基本类型数据
String str ="1234";
int num = Integer.parseInt( str );

String s = "true";
boolean flag = Boolean.parseBoolean( s );

包装类在使用中的细节

  1. 在把String类型数据,转换为基本类型数据时,容易发生:NumberFormatException异常
    • 原因:String类型数据,不符合要转换的基本类型数据格式
  2. 包装类在使用时存在:自动装箱、自动拆箱
    • 自动装箱 : Integer.valueOf( 数值 )
    • 自动拆箱: Integer对象.intValue()
  3. 包装类中有常量池(数据值没有超出常量池范围,就直接从常量池中获取对象)

正则表达式

什么是正则表达式?

1
2
3
由一些特定的字符组成的字符串校验规则,称为:正则表达式

[1-9][0-9]{4,14}

正则表达式解决程序中什么问题?

1
2
3
正则表达式只能针对字符串进行格式校验

正则表达式在开发中的应用场景: 对用户输入的字符串数据进行校验(数据合法性。例:手机号码格式)

正则表达式怎么使用?(开发中基本都是CV)

1
2
//课程学习正则表达式的语法

回顾上午内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Math类: 针对数值进行提供了一些数学运算功能

System类: 获取毫秒值

在开发中,如果整数的范围超出long类型后,使用:BigInteger,
小数的范围超出double类型后,使用:BigDecimal

Arrays类: 针对数组提供了一些功能(例:排序)
Arrays.sort( 数组 ) //默认排序方式:升序
String s = Arrays.toString( 数组 );//把数组转换为字符串。 格式:"[元素,元素,...]"


包装类:
基于8种基本类型,进行封装,封装为类(包装类)
int Integer

作用:实现String类型和基本类型之间的转换
int num = Integer.parseInt( "1234" );

Integer num = 10;//自动装箱
num++; //自动拆箱


正则表达式:
针对字符串进行校验,校验字符串格式是否符合规则。


qq号码验证: 5~15位、首位不为0、 全部是数字
[1-9]\d{4,14}

集合

三种集合:List 、Set 、Map

集合有什么好处?

  1. 大小可变(随意扩容)
  2. 集合中可以存储多种不同类型数据
  3. 底层使用数据结构(存取效率高)

集合:不能存储基本类型数据

1
2
ArrayList list = new ArrayList();
list.add(100);//自动装箱: list.add( Integer.valueOf(100) )

Collection集合: 是一个接口

  • 子接口: List 、 Set
    • 子类: ArrayList

ArrayList集合对象可以使用传统的for循环,进行遍历

  • ArrayList集合有索引

Collection集合: 没有索引。 遍历集合使用专用方式:迭代器

迭代器

迭代器:Iterator

  • 作用:用于集合的遍历

Iterator迭代器中常用方法:

1
2
boolean  hasNext();   //检查迭代器对象中是否有下一个元素
Object next(); //利用迭代器,取出下一个元素

Iterator迭代器在使用中的细节:

  1. 在迭代器完成集合的遍历后,不要在使用:next()方法
  2. 在迭代器遍历集合的过程中,不能使用集合对象来增删元素
    • 删除元素: 使用迭代器对象中的remove方法实现
    • 增加元素: 不用考虑(解决方案:使用其他的集合对象。例:List集合)

增强for循环

什么是增强for?

  • 就是基于普通的for循环,进行强化(底层使用:迭代器)

增强for的应用:

  • 针对数组或集合,进行遍历

增强for的语法:

1
2
3
4
5
6
7
8
9
10
for( 元素类型 变量 : 容器 )
{
//从容器中获取出一个元素,赋给变量

//下次:继承从容器中获取一个元素, 赋给变量

//......

//停止条件 : 容器没有元素了
}