概述
2.1 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
注意点:
SimpleDateFormat对象一旦创建,此对象能做指定格式的字符串类型和Date类型的转换,如果给定字符串的格式不是此对象指向的格式,那么运行期报异常
public static void main(String[] args) throws ParseException {
/*
* 将当前日期输出给用户,以 yyyy/MM/dd HH:mm:ss
*/
Date today = new Date();
SimpleDateFormat dateFormat =
new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
//将当前日期输出给用户 以指定格式
String dateStr = dateFormat.format(today);
System.out.println(dateStr);
/*
* 用户输入一个时间,将此时间转换为Date
*/
String input = "2017-01-23 12:12:12";
Date inputDate =
dateFormat.parse(input);
System.out.println(inputDate);
}
案例:计算你从出生到今天活了多少天?
//计算出到今天为止,你活了多少天
/*
* 思路:
* 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+"天");
}
3 Calendar
方法:
GET方法:
get(int Field):获取指定日历字段的时间分量
getTime() - Date:得到Calendar对象指向日期的Date表示
getTimeInMills() - long
:和Date类中getTime()作用一样
/*
* getTime() :得到指定日期的Date类型表示
* 和Date类中的getTime()作用不一样
*
*/
Date date1 = calendar.getTime();//得到的是有格式的时间
System.out.println(date1);
/*
* getTimeInMills()
* - 和Date类中的getTime()作用相同
*/都是得到long类型的一长串数字
long ms = calendar.getTimeInMillis();
System.out.println(ms);
System.out.println(date1.getTime());
SET方法:
set(int Field,int value):
给指定日历字段赋值
通常用于让Calendar对象指向到给定的时间
注意点:
set之后并不是立即对日历进行计算,而是等到下面第一次执行get方法才对calendar进行计算,所以如果要对星期几操作,注意在设置之后先get再操作
setTime(Date date)
:让calendar指向指定Date对象所指向的时间
add(int field,int amount):
对给定日历字段值进行加减操作
、 注意点:amount变量的值可正可负
getActualMaximum(int field):
获取指定日历字段的最大值,通常用于获取月份的最大天数
/*
* 创建一个Calendar子类对象,让其指向
set(int Field,int value)
* 2000-12-12
*/
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, 2000);
// calendar.set(Calendar.MONTH, 11);
// calendar.set(Calendar.DATE, 12); //星期二
int week = calendar.get(Calendar.DAY_OF_WEEK);
System.out.println(week);
calendar.set(Calendar.DAY_OF_WEEK, 5);
Date date = calendar.getTime();
System.out.println(date);
/*
* setTime(Date date)
* :让calendar对象指向Date对象的时间
*
*/
Date date = new Date();
long ms = date.getTime()+24*60*60*1000;
date = new Date(ms);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int month = calendar.get(Calendar.MONTH)+1;
int day = calendar.get(Calendar.DATE);
System.out.println(month);
System.out.println(day);
练习:
查看3年2个月零5天以后的那周的周一?
/*
* 查看3年2个月零5天以后的那周的周一
*/
//
calendar.add(Calendar.YEAR, 3);
//
calendar.add(Calendar.MONTH, 2);
//
calendar.add(Calendar.DATE, 5);
//
calendar.set(Calendar.DAY_OF_WEEK, 2);
//
//
Date date = calendar.getTime();//返回类型是date类型
//
System.out.println(date);
获取任意一年的二月有多少天
、 /*
*获取任意一年二月的天数
* 思路:
* 用户输入年份,
* 创建Calendar对象指向年份,
* 设置月份
* 获取当月最大值
*
*/
Scanner sc = new Scanner(System.in);
int year
= sc.nextInt();
//创建日期对象
Calendar calendar =
Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, 1);
int day = calendar.getActualMaximum(Calendar.DATE);
System.out.println(day);
sc.close();
}
4 Object类
• 在Java类继承结构中,java.lang.Object类位于顶端;
• 如果定义一个Java类时没有使用extends关键字声明其父类,则其父类默认为 java.lang.Object 类;
• Object类型的引用变量可以指向任何类型对象。
方法:
toString():
System.out.print(任意对象),输出内容是? 为什么?
Object类中的重要方法,用于返回对象值的字符串表示:
类名@散列码
如果不重写toString方法,将使用Object的toString方法
强烈建议为自定义的每一个类增加toString方法,toString方法是非常有用的调试工具;
n 格式大多数遵循 “ 类的名字[ 值 ]“
Java 提供的API几乎都重写了 toString()
包括: String StringBuilder Date …..
5 equals()
在Object类中,这个方法判断两个对象是否具有相同的引用,即是否为相同的对象;
注意点:
Object类中equals()的作用等同于==
在实际应用中,一般需要重写该方法,通过比较对象的成员属性,使该方法更有意义 – 建议重写
案例:Point类中重写此方法,当X,Y坐标相等时,说明两个点对象相等(是同一个点)
String类中的equals()方法
==和equals比较:
==:如果两边是基本数据的数值类型,那么直接进行比较
如果两边是引用类型,此时比较的是两个引用是否指向同一个对象。此时和equals的作用相同
6 基本数据类型的包装类(wrapper)
问题: int i = 4; 如何得到一个String类型的i的表示?
String str = i; //错误的
String - valueOf(i)
String str = 23; 是否可以将此字符转换为int类型得到int类型的表示?
JAVA中为每种基本数据类型都提供了一个包装类
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的,不能定义他们的子类。
6.1 Number类
抽象类 Number 是 Byte、Double、Float、Integer、Long 和 Short 类的父类;
除了boolean 和char是object类以外,剩下的基本类型全是number类
Number类中抽象方法在子类中的实现以及使用:
6.2 Integer类的常用方法:
1. static parseInt(String) – int
2. toString() – String
3. static valueOf(int i) – Integer
4. intValue() – int
/*
* Integer类中的常用方法
*/
/*
* intValue(); - int
* 得到Integer对象中值的int类型表示
*/
Integer integer = new Integer(30);
int i = integer.intValue();
System.out.println(i);
/*
* valueOf(int) - Integer
* 得到一个int类型值的Integer实例
*/
int a = 5;
Integer ite = Integer.valueOf(a);
System.out.println(ite);
System.out.println(ite.getClass());
/*
* parseInt(String) - int
* 得到字符串中数字的int类型表示
*/
String str = "23";
System.out.println(str.getClass());
Integer dest = Integer.parseInt(str);
System.out.println(dest.getClass());
System.out.println(dest);
/*
* toString() - String
* static toString(int i) - String
*/
//
Integer integer2 = new Integer(34);
//
String str1 = integer2.toString();
//
System.out.println(str1.getClass());
//
System.out.println(str1);
int i1 = 90;
String str1 = Integer.toString(i1);
System.out.println(str1);
System.out.println(str1.getClass());
}
6.3 Double类的常用方法:
1. static parseDouble(String) – double
2. toString() – String
3. valueOf(double d) – Double
4. doubleValue() – double
注意点:
1.
8种基本数据类型的包装类都提供了了parseXXX(String) – xxx
用于此数据类型和String类型 的转换
2.调用包装类的parseXX(String) – xx,如果String中的值不可以转换为对应的类型,那么运行期报NumberFormatException
6.4 自动装箱和拆箱
int i = 4;
Integer ite = i;
从Java 5.0版本以后加入到了 autoboxing功能
自动“拆箱”和“装箱”是依靠编译器在编译期的“预处理”(优化)工作
//自动装箱
/*
* 编译器在编译期进行了优化
* 优化过程:
* int –>Integer
* Integer.valueOf(int) - Integer
*/
int i = 4;
Integer x = i;
System.out.println(x);
//自动拆箱
/*
* Integer -- >int
* 编译器在编译期进行了优化
*
.intValue(); - int
*/
Integer ite = new Integer(45);
int m = ite;
System.out.println(m);
int a = 3;
int b = 4;
Integer ab = a+b;
//自动装箱
Integer a1 = 4;
Integer a2 = 4;
Integer aa = a1+a2; //先拆箱后装箱
7 正则表达式
• 正则表达式是一串特定字符,组成一个“规则字符串”,这个“规则字符串”是描述文本规则的工具。正则表达式就是记录文本规则的代码。
7.1 字符集:
正则表达式
说明
[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以外的任意一个字符,其中&&表示“与”的关系
7.2
预定义字符集:
正则表达式
说明
.
任意一个字符
需要转义
d
任意一个数字字符,相当于[0-9]
需要转义
w
单词字符,相当于 [ a-zA-Z0-9_ ] 需要转义
s
空白字符,相当于[ tnr ]
需要转义
D
非数字字符
需要转义
W
非单词字符
需要转义
S
非空白字符
需要转义
7.3 数量词:
可以利用数量词约定字符出现的次数
正则表达式 说明
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邮箱(8-11位数字@qq.com)
最后
以上就是正直茉莉为你收集整理的javaAPI之正则表达式,包装类的全部内容,希望文章能够帮你解决javaAPI之正则表达式,包装类所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复