javase笔记4----常用类型
常用类型
包装类
简介
java语言是面向对象的语言,但是其中的八大基本数据类型不符合面向对象的特征。
因此java为了弥补这样的缺点,为这八种基本数据类型专门设计了八种符合面向对象特征的的类型,这八种具有面向对象特征的类型,统称为包装类。
包装类,就是在类的内部,维护了一个基本数据类型的成员变量,以及其他方法,常量等。
装箱和拆箱
装箱boxing : 由基本数据类型转型为包装类型。
- 调用包装类的构造器,进行装箱
- 调用valueOf()静态方法,进行装箱
拆箱 unboxing: 由包装类型转型为基本数据类型。
- 调用xxxValue()非静态方法,进行拆箱
//装箱
Integer num = new Integer(1);
Integer num2 = Integer.valueOf(1);
//拆箱
int i = num.intValue();
自动装箱和拆箱
自动装箱 : 直接使用一个基本数据类型的变量或字面值给一个包装类型的引用进行赋值即可
自动拆箱 : 直接使用一个包装类型的引用给一个基本数据类型的变量进行赋值即可自动的装箱 : 省略掉的是 valueOf 方法
自动的拆箱 : 省略掉的是 xxValue 方法
Integer num = 1;//自动装箱
int x = num;//自动拆箱
int y = new Integer(100);
包装类的常量池
对于装箱操作后的包装类的对象,jvm在堆中,维护了一个常量池,该常量池适用于调用了valueOf()方法产生的包装类对象,以及自动装箱的包装类对象。不适用于new关键字创建的包装类对象。
1. Byte,Short,Integer,Long四种类型的常量池的值范围[-128,127]
2. Character的常量池范围[0,127]
3. Boolean的常量池就只有两个值true和false
4. 浮点数类型没有常量池
包装类的其他常用方法
Integer.toBinaryString(); 转成二进制
Integer.toHexString(); 转成16进制
Integer.toOctalString() 转成8进制
public static int parseInt(String str): 字符串转成int类型
public static Integer valueOf(String str): 字符串转成Integer类型上述两个方法都用Integer类名调用
BigDecimal
java语言提供了BigDecimal这个类来完善这类运算,可以非常精确,可以精确到小数点后无数位。BigDecimal 通常支持任意位数的小数部分,用来对超过16位有效位的数进行精确的运算。
常用构造器
BigDecimal(int v) 创建一个具有参数所指定整数值的对象。
BigDecimal(double v) 创建一个具有参数所指定双精度值的对象。
BigDecimal(long v) 创建一个具有参数所指定长整数值的对象。
BigDecimal(String v) 创建一个具有参数所指定以字符串表示的数值的对象。
常用方法
add(BigDecimal) BigDecimal对象中的值相加,返回BigDecimal对象
subtract(BigDecimal) BigDecimal对象中的值相减,返回BigDecimal对象
multiply(BigDecimal) BigDecimal对象中的值相乘,返回BigDecimal对象
divide(BigDecimal) BigDecimal对象中的值相除,返回BigDecimal对象。该方法可能会遇到无限精度问题,会抛出异常,使用时需注意
BigDecimal b1 = new BigDecimal(3);
BigDecimal b2 = new BigDecimal(1.5);
BigDecimal r1 = b1.add(b2);
BigDecimal r2 = b1.subtract(b2);
BigDecimal r3 = b1.multiply(b2);
BigDecimal r4 = b1.divide(b2);
Date日期类型
简介
1. 是一个用来表示时间、日期的类,这个类在 java.util 包中。
2. java中的时间使用标准类库的Date类型来表示,是用距离某一个固定时间点的毫秒数表达的一个特定的时间点:
3. 固定时间点:1970年1月1日00:00:00
4. UTC(Universal Time Coordinated世界调整时间)与GMT(Greenwich Mean Time格林威治时间)一样,是一种具有实际目的的科学标准时间。
5. Date类的大多数用于进行时间分量计算的方法已经被Calendar取代。
常用构造器
1. Date() :获取当前系统时间
2. Date(long time):设置一个距离固定点的指定毫秒数的时间点。
Date now = new Date();
System.out.println(now);
Date t = new Date(1000*60*60*24);
System.out.println(t);
常用方法
1. long getTime()
2. void setTime(long time)
Calender类型
简介
Calendar: 日历,是用来表示时间、日期的类。在Date类中,有很多的方法都已经废弃了,使用 Caneldar中的某些方法进行实现。
java.util.Calendar类用于封装日历信息,其主要作用在于其方法可以对时间分量进行运算。
Calendar是抽象类型,其具体子类是针对不同国家的日历系统
常用方法
getInstance方法
Calendar提供的get方法与一些常量合用可以获取日期及时间分量
Calendar提供的set方法与一些常量合用可以设置日期及时间分量
Calender c = Calender.getInstance();
int year = c.get(Calender.YEAR);
int month = c.get(Calender.MONTH);