DAY02
- 内容回顾:
String
StringBuilder
日期操作:
Date:getTime() setTime(long ms)
System.currentTimeMills() – long ms
Caledar:
对象的创建:
- 阳历
- getInstance();
方法:
get(int Field)
- .日期操作(下)
- SimpleDateFormat
日期转换类: 在指定格式的字符串的日期表示和日期对象之间进行转换
创建对象:
SimpleDateFormat sdf = new SimpleDateFormat(“格式”)
yyyy-MM-dd HH:mm:ss
2017-12-04 09:26:50
使用:转换
String --- >Date parse(String) - Date
Date --à String format(Date) – String
案例:计算你从出生到今天活了多少天?
//计算出到今天为止,你活了多少天
/*
* 思路:
* 1.计算出今天到历元的时间差
* 2.计算出你的生日到历元的时间差
* 3,两者相减 单位ms --- 变成天
*/
//今天的日期
Date today = new Date();
long todayMs = today.getTime();
//你出生的日期 yyyy-MM-dd HH:mm:ss
String birth = "1997-12-4 12:12:12";
SimpleDateFormat sdf =
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date birthday = sdf.parse(birth);
long birthMs = birthday.getTime();
long minus = todayMs - birthMs;
long day = minus/1000/60/60/24;
System.out.println("恭喜你了,你你已经成功活了"+day+"天");
}
方法:
GET方法:
get(int Field)
getTime()
getTimeInMills()
SET方法:
set(int Field,int value)
setTime(Date date)
add(int field,int amount)
getActualMaximum(int field)
练习:
查看3年2个月零5天以后的那周的周一?
获取任意一年的二月有多少天
- Object类
- 在Java类继承结构中,java.lang.Object类位于顶端;
- 如果定义一个Java类时没有使用extends关键字声明其父类,则其父类默认为 java.lang.Object 类;
- Object类型的引用变量可以指向任何类型对象。
方法:
toString():
System.out.print(任意对象),输出内容是? 为什么?
Object类中的重要方法,用于返回对象值的字符串表示: 类名@散列码
如果不重写toString方法,将使用Object的toString方法
强烈建议为自定义的每一个类增加toString方法,toString方法是非常有用的调试工具;
- 格式大多数遵循 “ 类的名字[ 值 ]“
Java 提供的API几乎都重写了 toString()
包括: String StringBuilder Date …..
- equals()
在Object类中,这个方法判断两个对象是否具有相同的引用,即是否为相同的对象;
在实际应用中,一般需要重写该方法,通过比较对象的成员属性,使该方法更有意义 -- 建议重写
案例:Point类中重写此方法,当X,Y坐标相等时,说明两个点对象相等(是同一个点)
String类中的equals()方法
==和equals比较:
- 基本数据类型的包装类
问题: int i = 4; 如何得到一个String类型的i的表示?
String str = 23; 是否可以将此字符转换为int类型得到int类型的表示?
JAVA 中8种基本类型都有一个与之对应的类,即包装类(wrapper)。
基本类型 | 包装类型 | 父类 |
int | java.lang.Integer | java.lang.Number |
long | java.lang.Long | java.lang.Number |
double | java.lang.Double | java.lang.Number |
short | java.lang.Short | java.lang.Number |
float | java.lang.Float | java.lang.Number |
byte | java.lang.Byte | java.lang.Number |
char | java.lang.Character | java.lang.Object |
boolean | java.lang.Boolean | java.lang.Object |
包装类是不可变类,在构造了包装类对象后,不允许更改包装在其中的值;
包装类是final的,不能定义他们的子类。
-
- Number类
抽象类 Number 是 Byte、Double、Float、Integer、Long 和 Short 类的父类;
Number类中抽象方法在子类中的实现以及使用:
-
- Integer类的常用方法:
- static parseInt(String) – int
- toString() – String
- static valueOf(int i) – Integer
- intValue() - int
- Double类的常用方法:
- static parseDouble(String) – double
- toString() – String
- valueOf(double d) – Double
- doubleValue() - double
-
- 自动装箱和拆箱
从Java 5.0版本以后加入到了 autoboxing功能
自动“拆箱”和“装箱”是依靠编译器在编译期的“预处理”(优化)工作
- 正则表达式
- 正则表达式是一串特定字符,组成一个“规则字符串”,这个“规则字符串”是描述文本规则的工具。正则表达式就是记录文本规则的代码。
-
- 字符集:
正则表达式 | 说明 |
[abc] | a、b、c中任意一个字符 |
[^abc] | 除了a、b、c的任意字符 |
[a-z] | a、b、c、……、z中的任意一个字符 |
[a-zA-Z0-9] | a~z、A~Z、0~9中任意一个字符 |
[a-z&&[^bc]] | a~z中除了b和c以外的任意一个字符,其中&&表示“与”的关系 |
-
- 预定义字符集:
正则表达式 | 说明 |
. | 任意一个字符 |
\d | 任意一个数字字符,相当于[0-9] |
\w | 单词字符,相当于 [ a-zA-Z0-9_ ] |
\s | 空白字符,相当于[ \t\n\r ] |
\D | 非数字字符 |
\W | 非单词字符 |
\S | 非空白字符 |
-
- 数量词:
可以利用数量词约定字符出现的次数
正则表达式 | 说明 |
X? | 表示0个或1个X |
X* | 表示0个或任意多个X |
X+ | 表示1个到任意多个X(大于等于1个X) |
X{n} | 表示n个X |
X{ n,} | 表示n个到任意多个X(大于等于n个X) |
X{ n , m } | 表示n个到 m 个 X |
练习:
1.手机号码的验证(1,3,4,5,7,8)
2.校验QQ邮箱(5-11位数字@qq.com)
-
- 分组:():
() 圆括号表示分组,可以将一系列正则表达式看做一个 整体,
练习:
- 检索手机号码: +86 13838389438
- +86 可有可无
- +86与后面的号码之间空格可以没有或者有多个
- 电话号码为11位数字
-
- 边界匹配:
^ 匹配开始,$ 匹配结束
案例:匹配8-10个\w 两种写法的区别
-
- String正则API:
matches(String regex)
split(String regex)
案例:
对一个字符串进行分割,分割符为,加上多个空格
replaceAll(String regex,String replacement)
案例:
1.对一个字符串中的所有数字进行替换
2.敏感字符过滤
问题:
正则表达式中中文如何表示?
Unicode编码来表示中文
[\u4e00-\u9af5]
作业:
1.验证输入的是不是2015-12-12格式