javaSE(包装类,日期设置(date,Calendar))

包装类
在进行类型转换的范畴内,有一种特殊的转换,需要将int这样的基础数据类型转换为对象

所有基本类型都有一个与之对应的类,即包装类.
包装类的两大特征
1.包装类是不可变类,在构造器类对象后,不允许更改包装在其中的值.
2.包装类是final,不能定义他们的子类.均来自java.lang包.

final  修饰类  不能被继承,没有子类,final类中的方法默认是final的
final  只修饰方法,则类可以被继承 但是方法不能被子类重写.
final  修饰成员变量 只能被赋值一次,赋值后不能被修改
final  不能修饰构造方法

 

说明:  valueOf   哪个包装类调用他,得到的就是这个包装类的类型
以Integer包装类为例
intValue:  将包装类拆箱成基本数据类型     其他的: 类型+Value   哪个类型调用Value就是哪个类型的基本类型
其他的包装类也是一样  :例如:Double  类等

parseInt()是包装类将其表示数值的字符串转换成其对应的基本数据类型

基本类型                  基本类型                                                  父类
int          java.lang.Integer         java.lang.Number
long         java.lang.Long            java.lang.Nuberb
double       java.lang.Double          java.lang.Number
short        java.lang.Short           java.lang.Number
float        java.lang.Folat           java.lang.Number
byte         java.lang.Byte            java.lang.Number
char         java.lang.Character       java.lang.Object
boolean      java.lang.Boolean         java.lang.Object

抽象类Number 是Byte,Double,Float.Intege,Long,和Short类的父类
Number的子类必须提供方法将表示的数字转换为其所对应的基本数据类型
doubleValue() 以double形式返回指定的数值
intValue() 以int形式返回指定的数值
floatValue() 以float形式返回指定的数值.


如果不声明,默认小数为double类型,所以如果要用float的话,必须进行强转
float  a=1.3; 会编译报错,
正确的写法 float a = (float)1.3;或者float a = 1.3f;(f或F都可以不区分大小写)

Number d = (Double)2.123;//d的类型是什么:Double
        Number n = 4;    //Integer
        
        System.out.print(d.getClass().getName());//java.lang.Double
        System.out.print(n.getClass().getName());//java.lang.Integer

解析:
从输出结果看:  d的所属类型为Double,n的所属类型为Integer,这是因为
2.123该直接量的类型为double,经过自动装箱以后转换为Double类型
Double类型是Number类型的子类,子类类中转换为父类类型属于自定类型转换,因此
d的所属类型为Double,同理,n的所属类型为Integer.

int intValue = d.intValue();
       double doubleValue = d.doubleValue();
       System.out.println(intValue+","+doubleValue);
       
//       n.intValue();
//       n.doubleValue();
       System.out.println(n.intValue()+","+n.doubleValue());

上述的转换属于包装类型自己转换成自己所对应的基本数据类型
下面的转换属于包装类调用方法将其他类型转换为其所对应的基本数据类型
Integer
该类提供很多方法,最重要的就是能在int类型之间相互转换,还挺一些常量
static int MAX_VALUE  表示int类型最大值
static int MIN_VALUE  表示int类型最小值

Integer的静态方法parseInt用于将字符串转换为int

String str1 = "123";
       int value = Integer.valueOf(str1);
       //System.out.println(value);
       
       String str2 ="一二三";
       //int value2 = Integer.parseInt(str2);
       //System.out.println(value2);//java.lang.NumberFormatException
ps:如果字符串的格式不是整数形式将无法转换
 

从jdk5.0版本以后加入autoboxing功能自动"拆箱"和"装箱"是依靠JDK5的编译器的"预处理"工作
下面代码写法均为正确行使
自动装箱和拆箱操作
Integer a = 100;
其实发生了自动装箱(自动将100这个基本类型转换为Integer类型)的操作
Integer a = 100;--->Integer a = Integer.valueOf(100);
Integer b = 200;
Integer c = a+b;先拆箱后装箱
---> Integer c= Interger.valueOf(a.intvalue()+b.intValue());
System.out.println(c);//自动拆箱过程

小结:
包装类型使用intValue/doubleValue等方法完成拆箱
基本数据类型使用"包装类.valueOf()"方法完成自动装箱过程
valueOf()和parseInt()区别
valueOf()是将其他类型转换成其所调用者的类型
parseInt()是包装类将其表示数值的字符串转换成其对应的基本数据类型

共同点:
int value = Integer.parseInt();等效于int value = Integer.valueOf()
因为JDK5以后提供自动装箱和拆箱的功能.


1.日期操作
Java中的时间使用标准类库的java.util.Date类表示,是用一个固定时间的毫秒数
(可正可负,long类型)表达一个特定的时间点
固定的时间点叫纪元(epoch),是UTC时间1970年1月1日00:00:00
UTC(Universal  Time Corrdinated 世界调整时间)与GMT(Greewich Mean Time格林威治时间);
是一种具有实际目的的科学标准时间


Date类的简介
java.util.Date类封装了日期及时间信息
Date类大多数用于时间分量计算的方法已经被Calendar取代

long startTime = System.currentTimeMillis();
//        for(int i= 0 ;i<100000;i++){
//            System.out.println("CPU正在运行....");
//        }
//        long endTime = System.currentTimeMillis();
        //System.out.println("一共花费:"+(endTime-startTime)+"ms");
        //获取当前时间
        Date date = new Date();
        System.out.println(date);//Wed Nov 28 14:34:10 CST 2018
        //获取从1970年到现在经历的毫秒数
        long time =date.getTime();
        System.out.println("date:"+time);
        System.out.println("System:"+System.currentTimeMillis());

setTime()和getTime()方法
//使用setTime()和getTime()设置或获取时间
//输出明天这个时候的时间
        time +=1000*60*60*24;
        date.setTime(time);
        System.out.println(date);
ps:date.toString()无法修改格式
js中如何修改时间格式 :tolocaleString

simpleDateFormat简介
java.text.SimpleDateFormat是一个以与语言有关的方式来格式化和解析日期的具体类
它允许进行格式化(日期->文本),解析(文本->日期)和规范化

date-->String
final String format(Date date);


String --> Date
Date parse(String source)throw ParseException;

simpleDateFormat();无参构造函数,使用默认格式
simpleDateFormat(String pattern):
用给定的模式和默认语言环境的日期格式符号构造simpleDateFormat.

日期模式匹配字符
字符                               含义                                    示例
y               年                                         yyyy年-2013年;yy-13年
M               月                                         MM月-01月;M-1月
d               日                                        dd日-06日;d日-6日
E               星期                                    E-星期日
a               AM或PM表示                      上午(AM) 下午(PM)
H               小时(24小时)        
h               小时(12小时)
m                分钟
s                秒


Calendar  简介
java.util.Calendar类用于封装日历信息,其主要作用在于其方法可以对时间分量进行计算
Calendar 是一个抽象类,其具体子类针对不同国家的日历系统,其中应用范围最广的是"格里高里历,通用的阳历"
对应世界上绝大多数国家/地区使用的标准日历系统.

getInstance方法
Calendar提供了一个类方法getInstance,以此获得一个通用对象.
Calendar的getInstance方法返回一个Calendar对象
Calendar  c = Calendar.getInstance();
//获取了该抽象类的具体实例.(Calendar的一个子类).

设置日期和时间分量

Calendar  c = Calendar.getInstance();
        c.set(Calendar.YEAR,2013);
        c.set(Calendar.MONTH,Calendar.DECEMBER);
        c.set(Calendar.DATE,25);
        System.out.println(c.getTime());
        
        //如果日期出现不合法的时间,Calendar将自动进行换算,将时间合法化.
        c.set(Calendar.DATE,32);
        System.out.println(c.getTime());

获取日期和时间分量
使用Calendar提供的get方法及一些常量可以获取和时间分量
static  int YEAR 指示年份的资源数字
static  int  MONTH 指示月份的资源数字
static  int DATE 指示一个月份中的第几天
static  int  DAY_OF_WEEK 指示一个星期中的某天,1位于星期日

getActualMaximum(int field)方法
返回指定日历字段中可能拥有的最大值.

add方法
void add(int filed,int mount)为给定的时间分量的值加上给定的值,诺给定的值为负数,则减去给定的值.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值