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
时, 可能会出现意外的结果, 所以推荐使用Inteher
的equals()
进行比较
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 | 获取从1900到现在多少年了 | |
int | 获取今天是一个月中的第几天 | |
int | 获取今天是一周中的第几天 | |
int | 获取现在几点了(小时) | |
int | 获取现在是多少分 | |
int | 获取现在是当前月份-1(源码中月份是从0~11) | |
int | 获现在取多少秒 | |
int | getTime() | 获取1970年1月1日0点到现在的毫秒值 |
String | 输出例如: 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
}
}