Java基础(十四)——API(Calendar类、System类、StringBuilder类、包装类)
Calendar类
概念
java.util.Calendar日历类,抽象类,在Date类后出现的,替换掉了很多Date类中的方法。该类将所有的可能用到的时间信息封装成静态成员变量,通过类名.静态成员变量获取时间字段值。
获取方式
由于Calendar类是一个抽象类,语言敏感性,Calendar类并不是直接创建对象来获取时间属性值,而是通过静态方创建,返回子类对象。
静态方法如下:
- public static Calendar getInstance():使用默认的时区和默认的语言环境获取一个日历对象
例如:
1 import java.util.Calendar; 2 public class Demo01Calendar{ 3 public static void main(String[] args){ 4 Calendar claendar = Calendar.getInstance();//获取一个日历的对象 5 } 6 }
常用的方法
- public int get(int field): 获取给定的日历字段值
- public void set(int field,int value):将给定的字段设定为给定的值
- public abstract void add(int field,int amount):根据日历规则,将给定的日历字段添加或者减少指定的时间值
- public Date getTime():把日历对象转换成日期对象
- public long getTimeInMills():获取日历对象对应的毫秒值
Calendar类中提供了很多个成员变量,代表给定的日历字段:
字段值 | 含义 |
---|---|
YEAR | 年 |
MONTH | 月份 |
DATE | 月中的某一天(几号) |
DAY_OF_MONTH | 月中的第几天 |
HOUR | 时(12小时制) |
HOUR_0F_DAY | 时(24小时制) |
MINUTE | 分 |
SECOND | 秒 |
DAY_OF_WEEK | 一周中的第几天(周几,周日为1) |
备注:
- 在西方的星期,开始为周日,中国为周一
- 在Calendar类中,月份的表示是以0-11代表的1-12月
- 日期是有大小关系,时间靠后,时间越大
System类
java.lang.System类中提供了大量的静态方法,主要是用来获取与系统相关的信息或者是进行系统级操作。它不能被实例化,也不能被继承。
常用的api方法:
- public static long currentTimeMills():获取当前系统时间对应的毫秒值
- public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length): 将数组中指定的数据拷贝到另一个数组中
- public static void exit(int status):终止当前正在执行的java虚拟机 0代表正常的退出,非0代表异常退出
currentTimeMills()方法
实际上,它获取到的是距1970年1月1日0时0分0秒到当前时间的毫秒差值
arraycopy()方法
将一个数组当中的元素复制到另一个数组当中,数组的拷贝动作是一个系统级的操作,性能比较高。
array方法当中涉及到5个参数:
参数列表 | 参数名称 | 参数类型 | 参数含义 |
---|---|---|---|
1 | src | Object | 原数组 |
2 | srcPos | int | 源数组索引的起始位置 |
3 | dest | Object | 目标数组 |
4 | destPos | int | 目标数组索引的起始位置 |
5 | length | int |
StringBuilder类
构造方法:
1 public StringBuilder(): 构造一个不带任何字符的字符串生成器,其初始容器为16个字符 2 public StringBuilder(String str):构造一个字符串生成器,并初始化为指定的字符串内容
常用方法:
1.public StringBuilder append(....): 添加任意类型数据的字符串形式,并返回当前对象本身
返回的容量至少与给定的最小容量一样大。
返回当前容量增加相同数量+ 2,如果那就足够了。
不会返回大于{@code MAX_ARRAY_SIZE}的容量 Integer.MAX_ARRAY_SIZE-8
除非给定的最小容量大于该容量。
如果这个最大的容量还不够,内存溢出。 throw new OutOfMemoryError();
2.StringBuilder可以和String进行相互转换
String--->StringBuilder:可以使用StringBuilder的带参构造方法
StringBuilder(String str) 构造一个字符串生成器,并初始化为指定的字符串内容
StringBuilder---->String:可以使用StringBuilder类中的toString()方法
public String toString():将当前的StringBuilder对象转换成String对象
3.public StringBuilder insert(int offset,...)根据指定的位置插入任意类型数据
返回当前对象不管存储什么类型的数据,进入字符串缓冲区都变成了字符串
包装类
装箱:把基本数据类型的数据包装到包装类中(基本数据类型---->包装类型)
以Integer int的包装类为例:
构造方法:
Integer(int value):构造一个新分配的Integer对象,它表示的指定的int类型的值 123
Integer(String s): 构造一个新分配的Integer对象,他表示的String参数类型指定的int值 "123"
静态方法:
static Integer valueOf(int i): 将指定的int类型值转换成Integer实例
static Integer valueOf(String s):将String类型的int值转换成Integer对象
拆箱:在包装类中取出基本数据类型的数据(包装类型------>基本数据类型)
成员方法:
int intValue():将指定的包装类型的对象转换成int类型的值
在JDK1.5之后出现了新特性:自动装箱、自动拆箱----> 基本数据类型和包装类型可以自由的相互转换
自动装箱:直接把int类型值赋值给包装类
如:
Integer int01 = 123; 相当于 Integer int01 = new Integer(123);
自动拆箱:int01是包装类,无法直接参与运算,可以自由转换成基本数据类型,在进行相关的运算
int01 + 2 就相当于 int01.intValue() + 2
当我们把基本数据类型中存储到容器当中,一般不能直接存储
ArrayList集合 容器当中一般存储的都是引用数据类型(对象)
包装类型属于引用数据类型 JDK1.5之后包装类型和基本数据类型可以自由切换
基本数据类型和字符串之间的自由切换:
基本数据---->字符串(String)
1. 基本数据类型值 + "" ----> 最简单的方法(常用)
2. 使用Integer类中的toString(参数): 返回的是表示指定整数的String对象+
static String toString(int i)
3. String类中的静态方法valueOf(参数)
static String valueOf(int i) 返回的是int参数的字符串表示形式
字符串--->基本数据类型
使用包装类中的静态方法parseXxx(字符串);
Integer类: static int parseInt(String s)
Double类: static double parseDouble(String s)