12--API-包装类-Date类

包装类

Number

​ java.lang.NumberNumber类是Byte, Integer, Double, Float, Short, Long`包装类的父类, Number继承自Object.是所有数字类型包装类的 抽象父类

常用方法

Modifier and Type Method and Description
byte byteValue() 返回指定号码作为值 byte ,这可能涉及舍入或截断。
abstract double doubleValue() 返回指定数字的值为 double ,可能涉及四舍五入。
abstract float floatValue() 返回指定数字的值为 float ,可能涉及四舍五入。
abstract int intValue() 返回指定号码作为值 int ,这可能涉及舍入或截断。
abstract long longValue() 返回指定数字的值为 long ,可能涉及四舍五入或截断。
short shortValue() 返回指定号码作为值 short ,这可能涉及舍入或截断。

Integer

java.lang.*是为了给对应着的基本类型, 提供丰富的功能,包装类的方法大同小异,都是模板.

1 对应关系
基本类型 包装类 父类
byte Byte Number
short Short Number
int Integer Number
long Long Number
float Float Number
double Double Number
boolean Boolean Object
char Character Object
2 构造方法
Integer(int value)  构造一个新分配的 Integer 对象,该对象表示指定的 int 值。
Integer(String s)  构造一个新分配  Integer 对象,表示 int 由指示值  String 参数。
3 常用静态方法
返回值 方法 说明
int intValue() Integer转为int类型(拆箱) 其他包装类的方法名字例如: DoubleValue()
Integer valueOf(int i) int类型转为Integer(装箱)
int parseInt(String str) 将一个String转为int类型的十进制数
4 自动拆箱装箱
// 自动装箱
Integer a = 100; 
// Integer a = new Integer(100); //  不推荐使用

// 自动拆箱
int b = a;
5 创建方式对比
Integer in = new Integer(2);
Integer in2 = Integer.valueOf(2);// 高效, 如果是相同的数据, 则不会开辟新的空间, 但是有特殊情况, 请见下面的Integer缓存

验证

Integer in2 = Integer.valueOf(2);
Integer in3 = Integer.valueOf(2);
System.out.println(in2 == in3); // 结果: true

由此可见, 使用valueOf()如果存在相同的数据, 则不会开辟新的空间, 建议使用!

6 Integer的缓存

Integer里有一个缓存空间(源码中可见, 是一个缓存数组), 范围是一个字节的范围, 即-128~127, 上面说到Integer in2 = Integer.valueOf(2);高效, 是因为 如果是相同的数据, 则不会开辟新的空间. 但是如果范围超出了这个缓存范围, 那么还是会开辟新的空间的

代码示例:

Integer x1 = 127;
Integer x2 = 127;

Integer x3 = 128;
Integer x4 = 128;

System.out.println(x1 == x2);
System.out.println(x3 == x4);

// 或者你可以这么写(等效上面的写法)
// Integer x1 = Integer.valueOf(127);
// Integer x2 = Integer.valueOf(127);

// Integer x3 = Integer.valueOf(128);
// Integer x4 = Integer.valueOf(128);

// System.out.println(x1 == x2);
// System.out.println(x3 == x4);

运行结果:

true
false

所以, 当使用==比较Integer时, 可能会出现意外的结果, 所以推荐使用Inteherequals()进行比较

7测试
package cn.tedu.number;

			//这个类用来测试  包装类型
			public class Test1_Integer {
				public static void main(String[] args) {
					//1、创建Integer对象---目的就是把基本类型  包装成  包装类型
					Integer in = new Integer(5) ;
					Integer in2 = Integer.valueOf(5) ;  
                    //高效,底层显示:如果你的数据在-128~127范围内,直接放如缓存数组中(相同数据不再存)。
					Integer in3 = Integer.valueOf(5) ; 
					//测试,静态方法valueOf,相同数据不再开辟空间存放了吗?--是的,节省内存和时间,高效。
					System.out.println( in2 == in3 );//true
					
					//2、常用方法
					int value = in.intValue() ;  // 把包装类型的值  变成 基本类型
					System.out.println(value);
					
					int intValue = Integer.parseInt("123");//把  字符串类型的数字转成 基本类型
					System.out.println(intValue);
					
					//1、创建Double对象 -- 目的就是把一个 基本类型  转成  包装类型
					Double d = new Double(5.5);
					Double d2 = Double.valueOf(5.5);//高效?不高效,底层显示和new一样
					
					//2、常用方法
					double value1 = d2.doubleValue(); //把  包装类型 变回成 基本类型
					System.out.println(value1);
					
					double doubleVal = Double.parseDouble("5.5"); //把 字符串类型的小数 变成  基本类型
					System.out.println(doubleVal);
					
				}
			}

日期类Date

1 概念

​ 表示特定的瞬间,精确到毫秒。

2 创建对象

​ 分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)。

​ 常用无参构造进行创建对象 , 例如: Date date = new Date();

3 常见方法

对于日期的年月日, 时分秒 进行操作, 其中 带删除线的是已过时

返回值 方法 说明
int getYear() 获取从1900到现在多少年了
int getDate() 获取今天是一个月中的第几天
int getDay() 获取今天是一周中的第几天
int getHours() 获取现在几点了(小时)
int getMinutes() 获取现在是多少分
int getMonth() 获取现在是当前月份-1(源码中月份是从0~11)
int getSeconds() 获现在取多少秒
int getTime() 获取1970年1月1日0点到现在的毫秒值
String toLocaleString() 输出例如: 2020-5-16 12:50:18格式的日期时间

4 测试案例

package cn.tedu.number;
		import java.util.Date;
		//这个类用来测试 Date
		public class Test2_Date {
			public static void main(String[] args) {
				//1、创建对象
				Date date = new Date(); 
				//2、常用方法
				System.out.println( date.getYear()  );//获取从1900到现在多少年了
				System.out.println( date.getDate()  );//获取今天是一个月中的第几天
				System.out.println( date.getDay()  );//获取今天是一周中的第几天
				System.out.println( date.getHours()  );//获取现在是几点了
				System.out.println( date.getMinutes()  );//获取现在是多少分钟
				System.out.println( date.getMonth()  );//获取月份,4   ---  底层源码显示:会获取到当前月份-1。
				System.out.println( date.getSeconds()  );//获取多少秒
				System.out.println( date.getTime()  );//获取1970 年 1 月 1 日 0点到现在的毫秒值
				System.out.println( date.toLocaleString() );//2020-5-16 11:46:32
				
			}
		}

posted on 2020-05-16 13:06  liqiangbk  阅读(131)  评论(0编辑  收藏  举报

导航