1:正则表达式(理解),今天小编就来聊一聊关于java中date和calendar的区别?接下来我们就一起去研究一下吧!

java中date和calendar的区别(java常用类-PatternDateCalendar)

java中date和calendar的区别

1:正则表达式(理解)

(1)就是符合一定规则的字符串

(2)常见规则

A:字符

x 字符 x。举例:'a'表示字符a

\\ 反斜线字符。

\n 新行(换行)符 ('\u000A')

\r 回车符 ('\u000D')

B:字符类

[abc] a、b 或 c(简单类)

[^abc] 任何字符,除了 a、b 或 c(否定)

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

[0-9] 0到9的字符都包括

C:预定义字符类

. 任何字符。我的就是.字符本身,怎么表示呢? \.

\d 数字:[0-9]

\w 单词字符:[a-zA-Z_0-9]

在正则表达式里面组成单词的东西必须有这些东西组成

D:边界匹配器

^ 行的开头

$ 行的结尾

\b 单词边界

就是不是单词字符的地方。

举例:hello world?haha;xixi

E:Greedy 数量词

X? X,一次或一次也没有

X* X,零次或多次

X X,一次或多次

X{n} X,恰好 n 次

X{n,} X,至少 n 次

X{n,m} X,至少 n 次,但是不超过 m 次

(3)常见功能:(分别用的是谁呢?)

A:判断功能

String类的public boolean matches(String regex)

B:分割功能

String类的public String[] split(String regex)

C:替换功能

String类的public String replaceAll(String regex,String replacement)

D:获取功能

Pattern和Matcher

Pattern p = Pattern.compile("a*b");

Matcher m = p.matcher("aaaaab");

find():查找存不存在

group():获取刚才查找过的数据

2:Math(掌握)

(1)针对数学运算进行操作的类

(2)常见方法

/** *Math.sqrt()//计算平方根 *Math.cbrt()//计算立方根 *Math.pow(a, b)//计算a的b次方 *Math.max( , );//计算最大值 *Math.min( , );//计算最小值 */ System.out.println(Math.sqrt(16)); //4.0 System.out.println(Math.cbrt(8)); //2.0 System.out.println(Math.pow(3,2)); //9.0 System.out.println(Math.max(2.3,4.5));//4.5 System.out.println(Math.min(2.3,4.5));//2.3

/** * abs求绝对值 */ System.out.println(Math.abs(-10.4)); //10.4 System.out.println(Math.abs(10.1)); //10.1 /** * ceil天花板的意思,就是返回大的值 */ System.out.println(Math.ceil(-10.1)); //-10.0 System.out.println(Math.ceil(10.7)); //11.0 System.out.println(Math.ceil(-0.7)); //-0.0 System.out.println(Math.ceil(0.0)); //0.0 System.out.println(Math.ceil(-0.0)); //-0.0 System.out.println(Math.ceil(-1.7)); //-1.0

/** * floor地板的意思,就是返回小的值 */ System.out.println(Math.floor(-10.1)); //-11.0 System.out.println(Math.floor(10.7)); //10.0 System.out.println(Math.floor(-0.7)); //-1.0 System.out.println(Math.floor(0.0)); //0.0 System.out.println(Math.floor(-0.0)); //-0.0 /** * random 取得一个大于或者等于0.0小于不等于1.0的随机数 */ System.out.println(Math.random()); //小于1大于0的double类型的数 System.out.println(Math.random()*2);//大于0小于1的double类型的数 System.out.println(Math.random()*2 1);//大于1小于2的double类型的数

/** * rint 四舍五入,返回double值 * 注意.5的时候会取偶数 异常的尴尬=。= */ System.out.println(Math.rint(10.1)); //10.0 System.out.println(Math.rint(10.7)); //11.0 System.out.println(Math.rint(11.5)); //12.0 System.out.println(Math.rint(10.5)); //10.0 System.out.println(Math.rint(10.51)); //11.0 System.out.println(Math.rint(-10.5)); //-10.0 System.out.println(Math.rint(-11.5)); //-12.0 System.out.println(Math.rint(-10.51)); //-11.0 System.out.println(Math.rint(-10.6)); //-11.0 System.out.println(Math.rint(-10.2)); //-10.0 /** * round 四舍五入,float时返回int值,double时返回long值 */ System.out.println(Math.round(10.1)); //10 System.out.println(Math.round(10.7)); //11 System.out.println(Math.round(10.5)); //11 System.out.println(Math.round(10.51)); //11 System.out.println(Math.round(-10.5)); //-10 System.out.println(Math.round(-10.51)); //-11 System.out.println(Math.round(-10.6)); //-11 System.out.println(Math.round(-10.2)); //-10 } }

3:Random(理解)

(1)用于产生随机数的类

(2)构造方法:

A:Random() 默认种子,每次产生的随机数不同

B:Random(long seed) 指定种子,每次种子相同,随机数就相同

(3)成员方法:

A:int nextInt() 返回int范围内的随机数

B:int nextInt(int n) 返回[0,n)范围内的随机数

4:System(掌握)

(1)系统类,提供了一些有用的字段和方法

(2)成员方法

* public static void gc()

* public static void exit(int status)

* public static long currentTimeMillis()

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

A:运行垃圾回收器

B:退出jvm

C:获取当前时间的毫秒值

D:数组复制

5:BigInteger(理解)

(1)针对大整数的运算

(2)构造方法

BigInteger(String val); //将指定字符串转换为十进制表示形式

BigInteger(String val,int radix); //将指定基数的 BigInteger 的字符串表示形式转换为 BigInteger

(3)成员方法

.add() //相加

.subtract(); //相减

.multiply(); //相乘

.divide(); //相除取整

.remainder(); //取余

.pow(); //a.pow(b)=a^b

.gcd(); //最大公约数

.abs(); //绝对值

.negate(); //取反数

.mod(); //a.mod(b)=a%b=a.remainder(b);

.max(); //min();

.boolean equals(); //是否相等

.compareTo(BigInteger val); //Returns:-1, 0 , 1, 对应小于, 等于或大于

————————————————

6:BigDecimal(理解)

(1)浮点数据做运算,会丢失精度。所以,针对浮点数据的操作建议采用BigDecimal。(金融相关的项目)

(2)构造方法

A:BigDecimal(String s)

(3)成员方法:

BigDecimal b1 = new BigDecimal("20");

BigDecimal b2 = new BigDecimal("30");

b1.add(b2) :加法,求两个BigDecimal类型数据的和。

b1.subtract(b2):减法,求两个BigDecimal类型数据的差。

b1.multiply(b2):乘法,求两个BigDecimal类型数据的积。

b1.remainder(b2):求余数,求b1除以b2的余数。

b1.max(b2) : 最大数,求两个BigDecimal类型数据的最大值

b1.min(b2) : 最小数,求两个BigDecimal类型数据的最小值。

bi.abs():绝对值,求BigDecimal类型数据的绝对值。

b1.negate():相反数,求BigDecimal类型数据的相反数。

7:Date/DateFormat(掌握)

(1)Date是日期类,可以精确到毫秒。

A:构造方法

Date()

Date(long time)

B:成员方法

getTime()

setTime(long time)

C:日期和毫秒值的相互转换

案例:你来到这个世界多少天了?

(2)DateFormat针对日期进行格式化和针对字符串进行解析的类,但是是抽象类,所以使用其子类SimpleDateFormat

A:SimpleDateFormat(String pattern) 给定模式

yyyy-MM-dd HH:mm:ss

B:日期和字符串的转换

a:Date -- String

format()

b:String -- Date

parse()

8:Calendar(掌握)

(1)日历类,封装了所有的日历字段值,通过统一的方法根据传入不同的日历字段可以获取值。

(2)如何得到一个日历对象呢?

Calendar rightNow = Calendar.getInstance();

本质返回的是子类对象

(3)成员方法

1.get(int field) :获取指定属性的值。

例如获取年月日:

System.out.println(ca.get(Calendar.YEAR) "-" (ca.get(Calendar.MONTH) 1) "-" ca.get(Calendar.DAY_OF_MONTH) " " ca.get(Calendar.HOUR_OF_DAY) ":" ca.get(Calendar.MINUTE) ":" ca.get(Calendar.SECOND));

输出结果:2015-10-14 14:13:53

2.getActualMaximum(int field):获取指定属性当前的最大值;

例如:System.out.println("本月有多少天:" ca.getActualMaximum(Calendar.DATE));

3.getMaximum(int field):获取指定属性的最大值(与上个的区别是:不仅限于当前时间,例如如果当前是2月份,用此方法获取月的最大天数,结果为31天)

4.add(int field, int amount):修改指定属性的日期时间。

例如: Calendar ca = Calendar.getInstance();

ca.add(Calendar.DAY_OF_MONTH, 1); //天数 1, ca表示明天此时的日期,负数表示前一天。

5.set(int year, int month, int date) :为日历设置指定的日期;

例如:设置日历当前时间为,2016年10月14日

Calendar ca = Calendar.getInstance(); ca.set(2016, 9, 14);//月是从0开始的

6.set(int field,int value) :设置指定属性的日期。

例如:

ca.set(Calendar.YEAR, 2010);

//设置年份为 2010年,

ca.set(Calendar.DAY_OF_MONTH, 1)

//设置天为本月第一天

Calendar calendar = Calendar.getInstance();

//获取年月日时分秒

calendar .get(Calendar.YEAR);

calendar .get(Calendar.MONTH) ;

// 0-11,分别表示1-12月

calendar .get(Calendar.DATE);

//1-31 calendar .get(Calendar.HOUR_OF_DAY);

//24小时制 calendar .get(Calendar.MINUTE);

calendar .get(Calendar.SECOND);

//设置年月日时分秒

calendar .set(Calendar.HOUR_OF_DAY, 17);

calendar .set(Calendar.MINUTE, 30);

//获取明天的日历信息

calendar .add(Calendar.DAY_OF_YEAR, 1);

//获取昨天的日历信息

calendar .add(Calendar.DAY_OF_YEAR, -1);

//获取当前时间的毫秒显示

calendar .getTimeInMillis()

//常用field

Calendar.YEAR——年份

Calendar.MONTH——月份

Calendar.DATE——日期

Calendar.DAY_OF_MONTH——日期,和上面的字段完全相同

Calendar.HOUR——12小时制的小时数

Calendar.HOUR_OF_DAY——24小时制的小时数

Calendar.MINUTE——分钟

Calendar.SECOND——秒

Calendar.DAY_OF_WEEK——星期几

,