Java基础知识章节梳理(十五)

文字数:约4000字  阅读时间:45分钟

此文章为学习总结类型,文字很多且皆为基础知识

一.Date

    1. 概念:类 Date 表示特定的瞬间,精确到毫秒(时间点)

        1.1 规则:规定从1970年1月1日0点0分0秒开始,作为开头(0)使用,如果在此时间之前,则值为负数。如果在此时间之后,则为正数

        1.2 作用:任何一个时间点在Java中都可以通过Date类型的对象来表示,也可以使用long类型的数字值来表示时间点(数字值代表毫秒)

    2. 构造方法

        2.1 new Date()

    创建一个空参的Date对象,默认为系统当前时间创建

        2.2 new Date(long date)

    创建一个以毫秒数为单位的对象,括号里的数据代表从 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数(会有八 小时时期差)

    3. 成员方法

        3.1 toString()

    把此 Date 对象转换为dow mon dd hh:mm:ss zzz yyyy 格 式的字符串(输出的样式:Thu Jun 10 10:00:03 CST  2018)

        3.2 toLocalString()

               以本地时间格式返回一个时间字符串(已过时,但很好用)

        3.3 getTime()

    返回当前Date对象表示的毫秒数(自1970 年 1 月 1 日 00:00:00 GMT)以来)

(就是返回从这个Date对象表示的时间到1970年1月1日0分0秒一共过了多少毫秒的时间)

测试代码:

Date date = new Date();
System.out.println(date);//Fri Jun 15 20:15:49 CST 2018
Date date1 = new Date(10000);
System.out.println(date1);//Thu Jan 01 08:00:10 CST 1970
long time = date1.getTime();
System.out.println(time);//10000

 

二.DateFormat

 

        是日期/时间格式化子类的抽象类

         1. 作用:既可以将一个 Date 对象转换为一个符合指定格式的字符串,也可以将一个符合指定格式的字符串转为一个 Date 对象。格式化(也就是日期 -> 文本)、解析(文本-> 日期)

          2. SimpleDateFormat

                 2.1 定义

     是DateFormat的子类用来完成父类的功能,SimpleDateFormat对象在创建的时候,程序员需要自定义日期格式化的格式

                  2.2 构造方法

                   2.2.1 new SimpleDateFormat()

                    用默认的格式创建一个对象(本地的时间格式)

                   2.2.2 new SimpleDateFormat(String pattern)

      用给定字符串的格式和默认语言格式创建一个对象,如yyyy-MM-dd hh:mm:ss,y表示年,M表示月(年中),d表示天(月中),h表示小时数(天中),m表示分钟(小时中),s表示秒数(分钟中),E表示星期几,a表示Am/Pm

                   2.3 成员方法

                    2.3.1 format(Date date)(格式化的过程)

        将一个Date对象转换为时间/字符串格式

                    2.3.2 parse(String source)(解析的过程)

        用来将 String 字符串转换成 Date对象(转换时,该 String 要符合指定格式,否则不能转换)

                    2.3.3 applyPattern(String pattern)

                         将给定模式字符串应用于此日期格式。

测试代码:

DateFormat df = new SimpleDateFormat("yyyy-HH-dd HH:mm:ss");
String datestr = df.format(new Date());
System.out.println(datestr);//2018-20-15 20:42:01
Date date = df.parse(datestr);
System.out.println(date);//Mon Jan 15 20:42:17 CST 2018

 

三.Calendar

 

        1. 概念:Calendar 是日历类,是一个抽象类,创建时是通过一个静态方法创建,不需要创建对象,可以操作日期,偏重于操作时间的推移

            2. 创建对象

                Calendar c = Calendar.getInstance();

               2.1 成员方法

                2.1.1 getInstance()

                    这是一个静态成员方法(可以直接通过类名调用,不需要创建对象),使用默认时区和语言环境获得一个日历

                2.1.2 add(int field, int amount) (推移)

      根据日历的规则,为给定的日历字段添加或减去指定的时间量。field就是要操作的字段值(Calendar里提供的每一个常量);amount是推移的时间量,向未来的时间推移就是正数,向过去的时间推移就是负数

                 2.1.3 get(int field)

                    返回给定日历字段的值。

                  2.1.4 getTime()

      返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象。

                  2.1.5 set(int field, int value)

      将给定的日历字段设置为给定值,通过set方法的重载方法可以对多个字段值同时修改

测试代码:

Calendar c = Calendar.getInstance();
System.out.println(c.get(Calendar.YEAR)+"年"+c.get(Calendar.MONTH)+"月"+c.get(Calendar.DAY_OF_MONTH)+"日");//2018年5月15日
c.add(Calendar.YEAR, -10);//2008
c.add(Calendar.MONTH, 1);//7
System.out.println(c.get(Calendar.YEAR)+"年"+c.get(Calendar.MONTH)+"月"+c.get(Calendar.DAY_OF_MONTH)+"日");//2008年6月15日
c.set(2018, 4,29,13,30,32);
System.out.println( c.get(Calendar.YEAR)+"年"+c.get(Calendar.MONTH)+"月"+c.get(Calendar.DAY_OF_MONTH)+"日"+" "+c.get(Calendar.HOUR_OF_DAY)+":"+c.get(Calendar.MINUTE)+":"+c.get(Calendar.SECOND));//2018年4月29日 13:30:32
Date date = c.getTime();
System.out.println(date);//Tue May 29 13:30:32 CST 2018

 

四.工具类

 

    1. System类(系统类)

        1.1概述:程序所在系统类,提供了对应的一些系统属性信息,和系统操作,包含一些有用的类字段和方法,这个类的构造方法被私有了,不能直接实例化,其成员方法基本都为静态方法(可以直接通过类名调用)

        1.2 常用属性

            static PrintSteam err:标准错误输出流

            static InputSteam in:标准输入流

            static PrintSteam out:标准输出流

      1.3成员方法

            1.3.1 currentTimeMillis()

     获取当前系统时间与 1970 年 01 月 01 日 00:00 点之间的毫秒差值

            1.3.2 exit(int  status)

     用来结束正在运行的 Java 程序。参数传入一个数字即可。通常传入 0 记为正常状态,其他为异常状态

            1.3.3 gc()

                 运行垃圾回收器

            1.3.4 getProperty(String key)

     用来获取指定 键(字符串名称)中所记录的系统属性信息

            1.3.5 getProperties()

     获取当前的系统的所有属性信息。

 2. Math 类

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

        2.1 成员方法

            2.1.1 abs(double a)

     返回double值的绝对值,有多种重载方式

            2.1.2 ceil(double a)

     返回一个大于参数的最小的double类型的整数

            2.1.3 floor(double a)

     返回一个小于参数的最大的double类型的整数

            2.1.4 max(double a,double b)

     返回两个double值中较大的一个

            2.1.5 min(double a,double b)

     返回两个double值中较小的一个

            2.1.6 pow(double a,double b)

                 返回第一个参数第二个参数次幂的值

            2.1.7 random()

     返回带正号的double值,该值大于等于0.0且小于0.1

            2.1.8 round(double a)

     返回最接近参数的long的值(四舍五入)

 

五.基本数据类型包装类

  1. 概述

  由于一些特殊的场景需要使用基本数据类型而本身又必须要求使用引用数据类型,例如ArrayList集合就只能存引用数据类型的数据,那么此时java将八种基本数据类型都提供了一个对应的包装数据类型

 

  2. 八种基本类型对应的包装类

 

 

基本类型

对象

字节型

byte

Byte

短整型

short

Short

整型

int

Integer

长整型

long

Long

单精度浮点型

float

Float

双精度浮点型

double

Double

字符型

char

Character

布尔型

boolean

Boolean

 

   3. 包装数据类型的属性与常用方法

3.1 两个属性
MAX_VALUE
当前调用数据类型的范围的最大值
MIN_VALUE
当前调用数据类型的范围的最小值
3.2 将字符串转换成基本类型
parseByte(String s)
将String字符串解析为有符号的十进制的byte
parseShort(String s)
将String字符串解析为有符号的十进制的short
parseInt(String s)
将String字符串解析为有符号的十进制的整数
parseLong(String s)
将String字符串解析为有符号的十进制的long
parseFloat(String s)
将String字符串解析为一个float值
parseDouble(String s)
将String字符串解析为一个double值
parseBoolean(String s)
将String字符串参数解析为boolean值
3.3 基本数据类型转换成字符串
与空字符串相连接即可

 

 

    4.基本数据类型与包装数据类型的转换

 

4.1 JDK1.5之后可以自动装箱拆箱

           在需要的情况下,基本类型与包装类型可以通用

 

4.1.1 自动装箱:基本数值转成对象
   Integer i = 4;//自动装箱。相当于 Integer i = Integer.valueOf(4);
4.1.2 自动拆箱:对象转成基本数值
i = i + 5;//等号右边:将 i 对象转成基本数值(自动拆箱)
i.intValue() + 5; 加法运算完成后,再次装箱,把基本数值转成对象。

 

4.2 JDK1.5之前需要手动转换(了解一下就行~)

 

4.2.1 基本数据类型转包装数据类型
基本转包装需要使用对应包装数据类型的构造方法
例如: int ------->Integer
Integer a=new Integer(基本数据类型的值)
4.2.2 包装数据类型转基本数据类型
包装数据类型转基本数据类型需要使用xxxValue
例如:Integer---->int

 

int a=Integer类型的对象.intValue()

 

六.正则表达式

  正则表达式是一个字符串,使用该字符串可以对别的字符串进行规则的限定与检测(检测个数与内容)

   1.正则表达式的应用场景

邮箱格式检测,手机号格式验证,QQ号格式验证,网络爬虫

1. 字符串类中涉及正则表达式的常用方法

  1.1 matches(String regex)

    返回一个boolean值,告知此字符串是否与给定的正则表达式匹配

  1.2 split(String regex)

    根据给定的正则表达式拆分此字符串,当第一个位置符合要求的话会留下一个空字符串,当最后一个位置符合要求的话不会留下空字符串(舍弃),含头不含尾

 

    2. 正则表达式附录:

字符:x
含义:代表的是字符x
例如:匹配规则为 "a",那么需要匹配的字符串内容就是 ”a”

字符:\\
含义:代表的是斜线字符'\' 
例如:匹配规则为"\\" ,那么需要匹配的字符串内容就是 ”\”

字符:\t
含义:制表符
例如:匹配规则为"\\t" ,那么对应的效果就是产生一个制表符的空间

字符:\n
含义:换行符
例如:匹配规则为"\\n",那么对应的效果就是换行,光标在原有位置的下一行

字符:\r
含义:回车符
例如:匹配规则为"\\r",那么对应的效果就是回车后的效果,光标来到下一行行首

字符类:[abc]
含义:代表的是字符a、b 或 c
例如:匹配规则为"[abc]",那么需要匹配的内容就是字符a,或者字符b,或字符c的一个

字符类:[^abc]
含义:代表的是除了 a、b 或 c以外的任何字符
例如:匹配规则为"[^abc]",那么需要匹配的内容就是不是字符a,或者不是字符b,或不是字符c的任意一个字符

字符类:[a-zA-Z]
含义:代表的是a 到 z 或 A 到 Z,两头的字母包括在内
例如:匹配规则为"[a-zA-Z]",那么需要匹配的是一个大写或者小写字母

字符类:[0-9]
含义:代表的是 0到9数字,两头的数字包括在内
例如:匹配规则为"[0-9]",那么需要匹配的是一个数字

字符类:[a-zA-Z_0-9]
含义:代表的字母或者数字或者下划线(即单词字符)
例如:匹配规则为" [a-zA-Z_0-9] ",那么需要匹配的是一个字母或者是一个数字或一个下滑线

预定义字符类:.
含义:代表的是任何字符
例如:匹配规则为" . ",那么需要匹配的是一个任意字符。如果,就想使用 . 的话,使用匹配规则"\\."来实现

预定义字符类:\d
含义:代表的是 0到9数字,两头的数字包括在内,相当于[0-9]
例如:匹配规则为"\\d ",那么需要匹配的是一个数字

预定义字符类:\w
含义:代表的字母或者数字或者下划线(即单词字符),相当于[a-zA-Z_0-9]
例如:匹配规则为"\\w ",,那么需要匹配的是一个字母或者是一个数字或一个下滑线

边界匹配器:^
含义:代表的是行的开头
例如:匹配规则为^[abc][0-9]$ ,那么需要匹配的内容从[abc]这个位置开始, 相当于左双引号

边界匹配器:$
含义:代表的是行的结尾
例如:匹配规则为^[abc][0-9]$ ,那么需要匹配的内容以[0-9]这个结束, 相当于右双引号

边界匹配器:\b
含义:代表的是单词边界
例如:匹配规则为"\\b[abc]\\b",那么代表的是字母a或b或c的左右两边需要的是非单词字符([a-zA-Z_0-9])
		String regex = ".*\\b[abc]\\b.*";
		String str = "abc a bbc";
		booleanflag = str.matches(regex);

数量词:X?
含义:代表的是X出现一次或一次也没有
例如:匹配规则为"a?",那么需要匹配的内容是一个字符a,或者一个a都没有

数量词:X*
含义:代表的是X出现零次或多次
例如:匹配规则为"a*",那么需要匹配的内容是多个字符a,或者一个a都没有

数量词:X+
含义:代表的是X出现一次或多次
例如:匹配规则为"a+",那么需要匹配的内容是多个字符a,或者一个a

数量词:X{n}
含义:代表的是X出现恰好 n 次
例如:匹配规则为"a{5}",那么需要匹配的内容是5个字符a

数量词:X{n,}
含义:代表的是X出现至少 n 次
例如:匹配规则为"a{5, }",那么需要匹配的内容是最少有5个字符a

数量词:X{n,m}
含义:代表的是X出现至少 n 次,但是不超过 m 次
例如:匹配规则为"a{5,8}",那么需要匹配的内容是有5个字符a 到 8个字符a之间

逻辑运算符:XY
含义:代表的是X后跟Y
例如:匹配规则为"ab",那么需要匹配的字符串内容就是 ”ab”

逻辑运算符:X|Y
含义:代表的是X 或 Y
例如:匹配规则为"a|b",那么需要匹配的字符串内容就是 ”a”或”b”

逻辑运算符:(X)
含义:代表的是()括号内的数据作为一组数据出现,(X)的方式称为正则表达式中的组
例如:匹配规则为"(hello)+",那么需要匹配的内容是组内数据要出现多次,如”hellohellohello”;或者组内数据出现一次,如”hello”。
注意实现:
在定义正则表达式的匹配规则字符串的里面,想再次使用组中的内容,可通过\\1来进行使用
例如:正则表达式的匹配规则为"(a) == \\1";
使用数据"a == a"进行匹配结果为true;使用数据"a == b"进行匹配结果为false。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值