11.2常用类(Arrays类,Bigdecimal类,BigInteger类,System类,Calendar类,Date类,Math类,Random类,正则表达式)

时间:2022-04-25 19:28:46

一、Arrays

1)数组工具类,由sun公司提供的官方文档中已经声明的类(底层已经实现了一些功能:java开发者只是纯粹的调用就可以了)

2)常用方法:

publicstatic String toString(int[] a)将数组转换成字符串

publicstatic void sort(int[] a)int类型的数组进行排序(升序),底层是一种快速排序法

publicstatic int binarySearch(int[] a,int key)二分查找法

 

二、BigDecimal

1)由于float类型以及double类型:浮点类型在存储数据的时候和整数类型是不一样的,存储的是有效位数字,浮点类型容易损失精度,导致数据的不精确,针对这种情况,java就提供了BigDeicmal类:(作用:运算数据的时候更加精确)

2)构造方法:

public BigDecimal(String val)

3)成员方法:

public BigDecimal add(BigDecimal augend)

public BigDecimal subtract(BigDecimal subtrahend)

public BigDecimal multiply(BigDecimal multiplicand)

public BigDecimal divide(BigDecimal divisor)

public BigDecimal divide(BigDecimaldivisor,int scale,RoundingMode,roundingMode)参数1:表示除数      参数2:取的有效数字      参数3:舍入的一种模式

 

三、BigInteger

1)用来计算超出int范围的数据的运算

2)常用的构造方法:

public BigInteger(String val)以字符串的形式表现一个十进制数据

3)常用的方法:

public BigInteger add(BigInteger val)

public BigInteger subtract(BigInteger val)

public BigInteger multiply(BigInteger val)

public BigInteger divide(BigInteger val)

public BigInteger[]divideAndRemainder(BigInteger val)返回的是数组(商和余数)

应用举例:

BigIntegerb1 = new BigInteger("100");

BigIntegerb2 = new BigInteger("50");

BigInteger[]bi = b1.divideAndRemainder(b2);

System.out.println("bi[0]:"+bi[0]);//2

System.out.println("bi[0]:"+bi[1]);//0

 

四、System

1)概述:System类包含一些有用的类字段和方法。它不能被实例化。

创建键盘录入对象:

Scannersc = new Scanner(System.in);

InputStream(字节输入流) is = System.in ; //抽象类的多态形式

System.out.println();输出语句

System.out:标准输出流返回的是一个打印输出流:PrintStream------>对象.println()

2)常用的方法:

public static void gc()运行垃圾回收器,最终调用的是finalize()方法

final,finalize,finally(异常类的时候讲它:是用来释放资源的)的区别?(重点)

final:最终的,无法更该的,可以修饰类,成员变量,成员方法。

修饰类,该类不能被继承

修饰成员方法,该方法不能被重写

修饰成员变量,该变量是常量,属于自定义常量

fianlize:和垃圾回收器有关系,当内存中存在不用的对象的时候,启用gc()运行垃圾回收器去回收对象,释放资源,最终调用的还是finalize()(在自定义的类中一定要写Object中的方法)

3)其他方法:

public static void exit(int status)表示终止当前正在运行的java虚拟机,0状态,表示异常终止,一般情况:参数为0

举例:System.out.println("我喜欢运动....");

System.exit(0) ;//应用场景:也会用在循环语句中

System.out.println("我也喜欢音乐....");

运行结果:我喜欢运动....

public static long currentTimeMillis()返回以毫秒为单位的当前时间

单独使用,非常少,一般用在记录耗时的操作:循环语句

4)常用方法:复制数组

public static void arraycopy(Object src,int srcPos, Object dest, int destPos,int length)

从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束

举例:int[] arr ={11,22,33,44,55} ;

int[] arr2 = {6,7,8,9,10} ;      

System.arraycopy(arr, 1,arr2, 2, 2);

System.out.println("arr:"+Arrays.toString(arr));

System.out.println("arr2:"+Arrays.toString(arr2));

运行结果:arr:[11, 22, 33, 44, 55]

arr2:[6, 7, 22, 33, 10]

 

五、Calendar

1)日历类,Calendar类是一个抽象类,它为特定瞬间与一组诸如 YEARMONTHDAY_OF_MONTHHOUR日历字段之间的转换提供了一些方法

瞬间指定的是一个毫秒值

2)由于Calendar是抽象类:

 public static CalendargetInstance()通过这个方法进行实例化:抽象类多态

public int get(int field)返回给定日历字段的值

3)字段:

publicstatic final int YEAR:年份

publicstatic final int MONTH在格里高利历和罗马儒略历中一年中的第一个月是JANUARY,它为 0;最后一个月取决于一年中的月份数。

publicstatic final int DATE:月份中的某天

4)和日历有关的添加的方法:

publicabstract void add(int field,int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量

publicvoid set(int field int value)将给定的日历字段设置为给定值

5)程序测试:获取任意一年的二月有多少天,使用键盘录入改进

importjava.util.Calendar;

importjava.util.Scanner;

publicclass CalendarTest {

     public static void main(String[] args) {

          //创建键盘录入对象

          Scanner sc = new Scanner(System.in);

 

          //录入并接收数据

          System.out.println("请输入一个年份:");

          int year = sc.nextInt() ;

          

          //创建日历类对象

          Calendar c = Calendar.getInstance() ;

          

          //去给日历对象设置日历时间

          c.set(year, 2, 1);//其实31

          

          //在使用add指定时间量,往前推一天

          c.add(Calendar.DATE, -1) ;

          

          //输出即可

          System.out.println(c.get(Calendar.DATE));

     }

}

 

六、Date

1)日期类,表示特定的瞬间,精确到毫秒。

2)构造方法:

public Date()空参构造(使用这个获取系统当前的日期时间)

public Date(long date)指定一个时间毫秒值

3)两个常用的成员方法:

public long getTime()获取自197011日的表示Date对象的一个毫秒数

public void setTime(long time)指定一个毫秒数

如果用Date对象获取时间毫秒值getTime():获取当前的时间毫秒值,一般用System.currentTimeMillis(),替换掉它

如果给Date对象指定一个毫秒值时间用:setTime()

4Date(Date对象)String(日期的字符串类型)类型的相互转换(重点)

Date---->String:格式化(也就是日期 ->文本)

DateFormat:但是该类是一个抽象类,不能直接实例化,所以不能直接使用它进行中间桥梁的转换!就用DateFormat的子类:SimpleDateFormat:格式化和解析日期或者解析时间的具体类;

SimpleDateFormat

两个构造方法;

publicSimpleDateFormat():无参构造:使用默认的模式构造一个对象

publicSimpleDateFormat(String pattern):将一个 Date格式化为日期/时间字符串指定一种模式;可以写xxx年xx月xx日 、 xxxx-xx-xx

方法(继承自DateFormat类):

publicfinal String format(Date date)将一个 Date格式化为日期/时间字符串。

String(字符串的日期/时间的表现形式)---->Date对象:解析(文本->日期)

使用SimpleDateFormat类的另一个方法:(继承自DateFormat类)

publicDate parse(String source)该方法会抛出一个异常:解析异常:parseException

这个转换里面的字符串的内容必须和模式的内容一致,否则抛异常!

【日期和时间模式】

年:                       y             例如:2017                yyyy

年中的月份:         M                  8,11                   MM

月份中的天数:      d                 24,25                    dd

小时:                  H                                             HH

分钟数               m                                            mm

秒数                     s                                               ss

 

七、Math

1)该类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数

2)字段:

publicstatic final double E

publicstatic final double PI

3)常用的成员方法:

publicstatic int abs(int a)绝对值

publicstatic double ceil(double a)向上取整(重点)

publicstatic double floor(double a)向下取整

publicstatic double pow(double a,double b)ab次幂

publicstatic double random()获取一个随机数:[0.0,1.0)(重点)

publicstatic long round(double a)四舍五入,取整(重点)

publicstatic int max(int a, int b)取最大值

publicstatic double sqrt(double a)正平方根

 

八、Random

1)表示产生一个随机的类:

2)构造方法:

publicRandom():无参构造,创建一个产生随机数的类对象,就是用构造形式

publicvoid setSeed(long seed):指定一个种子,这个种子(时间的毫秒值)

3)成员方法:(重要)

nextInt():产生的随机数的范围在int类型的范围之内

nextInt(intn):删除的随机的范围在[0,n),能包括0不包括n这数据

 

九、正则表达式

常见的语法:

A:字符

x字符  举例:a代表'a'

\\         反斜线字符            代码中:两个反斜线表示一个反斜线

\t         制表符

\n        新行(换行)符

\r         回车符

B:字符类

[abc]         ab c

[^abc]       任何字符,除了 ab c(否定) 

[a-zA-Z]      a z A Z,两头的字母包括在内(范围)

C:预定义字符类

.          如果本身表示的就是一个.,怎么办? \.:表示点(代码中写正则表达式的时候:\\.)

\d        数字:[0-9]

\w       单词字符:[a-zA-Z_0-9] :举例邮箱zhangsan_isSone123456@163.com

D:边界匹配器

\b        单词边界:hello;world;haha;Xixi

^         以什么开头        ^0     :表示以0开头

$          以什么结尾

E:Greedy数量词(重点)

X?,x出现1次或者0

X*,x出现了0次或多次

x+,x出现了1次或多次

x{n}:x恰好出现n

x{n,}:x至少出现了n

x{n,m}:x至少n,不超过m