包装类
虽然Java是面向对象的语言,但是它所包含的8个数据类型不是面向对象的,因为他们没有自己的属性和方法。所以JDK中提供了一系列的包装类,通过这些包装类可以将基本数据类型的值包装为引用数据类型的值。
包装类和基础类型相互转换时,引入了两个概念:自动装箱和自动拆箱。
自动装箱指的是将基本数据类型的变量赋值给对应的包装类变量
自动拆箱指的是将包装类变量类型直接赋给一个对应的基本数据变量
public class Example{
public static void main(String[]args){
int a=20;
Integer b = a;//将a装箱给b
System.out.println(b);
int c = b;
System.out.println(c);
除了Character类之外,包装类都有valueOf(String s)方法,可以根据String类型的参数创建包装类对象,但参数字符串不能为null,也不能是非法字符串:
Integer i = Integer.valueOf("123");//合法
Integer j = Integer.valueOf("12m");//不合法
除了Character类之外,包装类都有parseXxx(String s)的静态方法,将字符串转换为对应的基本类型的数据,参数s不能为null,并且必须是可以解析为相同数据类型的数据。
int i = Integer.parseInt("123");//合法
Integer in = Integer.parseInt("iniini")//不合法
日期与时间类
Date类
Date类有两个构造方法可以使用:
Date():创建当前时间的Date对象
Date(long date):用于创建指定时间的Date对象,其中date参数指毫秒数,即时间戳。
import java.util.*;
public class Example{
public static void main(String[]args){
Date date1 = new Date();//创建一个Date类的实例对象
Date date2 = new Date(System.currentTimeMillis()+1000);
System.out.println(date1);
System.out.println(date2);
第一条语句是用来计算当前时间的,第二条语句是用来计算加一秒后的时间的。
Calendar类
Calendar类用于完成日期和时间字段的操作。可通过特定的方法来设置和读取日期的特定部分。Calendar类是一个抽象类,不可以被实例化。在程序中需要使用getInstance()方法来获取Calendar对象,来调用该类的方法。
方法声明 | 功能描述 |
int get(int field) | 返回指定日历字段的值 |
int add(int filed,int amount) | 根据日历规则,给日历的字段增加或减去指定的时间量 |
void set(int field,int value) | 为指定的日历字段设置指定值 |
void set(int year,int month,int date) | 设置Calendar类对象的年月日三个值 |
void set(int year,int month,int date,int hourOfDay,int minute,int seconed) | 设置Calendar对象的年月日时分秒六个值 |
其中field属于Calander类中指定字段的值,例如Calander.YEAR表示年份,Calander.MONTH表示月份,Calendar.SECONED表示秒等等。注意Calendar类的month月份是从0-11的,所以需要在后面+1
import java.util.*;
public class Example{
public static void main(String[]args){
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);//获取当前年份
int month = c.get(Calendar.MONTH)+1;//获取取当前月份
int date = c.get(Calendar.DATE);//获取当前日
System.out.println("现在是"+year+"年,"+month+"月,"+date+"日");
}
}
Calendar的日历容错模式和非容错模式
什么是容错模式:我们知道一年有12个月,如果你在系统中将MONTH 的值赋值为13,正常情况下会出错。但是容错模式不会出错,他会进位,如果输入13个月,那么它会自动进位到1年1月。
什么是非容错模式:如果我们输入的月份值为13,则出现错误。
import java.util.*;
public class Example{
public static void main(String[]args){
Calendar c = Calendar.getInstance();
c.set(Calendar.MONTH,13);
c.setLenient(false);//关闭容错模式
c.setLenient(true);//开启容错模式
如何实现Calendar类和Date类的相互转换
Calendar有一个getTime()方法,getTime()方法会返回一个表示Calendar时间值的Date对象,同时Calendar有一个setTime(Date date)方法,setTime()方法接受一个Date对象,将Date对象表示的时间值设置给Calander对象