Calendar类
Calendar为抽象类,Calendar类在创建对象时并非直接创建,而是通过静态方法创建,返回子类对象,Calendar静态方法如下:
Calendar.getInstance()//使用默认时区和语言环境获得一个日历
Calendar cal = Calendar.getInstance();
常用方法
根据Calendar类的API文档,常用方法有:
- int get(int field):返回给定日历字段的值。
- set(int field, int value):将给定的日历字段设置为给定值。
- add(int field, int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。
- Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。
Calendar类中提供很多成员常量,代表给定的日历字段:
import java.util.Calendar;
import java.util.Date;
public class CalendarTest {
public static void main(String[] args) {
calendar();
}
private static void calendar() {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH,2);//add方法,根据日历规则,为给定日历字段添加或减去指定的时间量
int year = cal.get(Calendar.YEAR);//getf方法,返回给定日历字段的值
int month = cal.get(Calendar.MONTH);
System.out.println("今年是"+year+","+month+"月");
System.out.println(month);
cal.set(2022, 12, 11);//set方法。给给定的日历字段设置给定值
System.out.println("今年是"+year+","+month+"月");
System.out.println();
Date date =cal.getTime();//返回calendar的时间值
System.out.println(date);
}
}
System类
java.lang.System类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作,在System类的API文档中,常用的方法有:
- public static long currentTimeMillis():返回以毫秒为单位的当前时间。
- public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length):将数组中指定的数据拷贝到另一个数组中。
currentTimeMillis方法
实际上,currentTimeMillis方法就是 获取当前系统时间与1970年01月01日00:00点之间的毫秒差值
arraycopy方法
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length):将数组中指定的数据拷贝到另一个数组中
数组的拷贝动作是系统级的,性能很高。System.arraycopy方法具有5个参数,含义分别为:
public class SystemTimeTest {
public static void main(String[] args) {
long start = System.currentTimeMillis();
for (int i = 0; i < 5000; i++) {
System.out.println(i);
}
long end = System.currentTimeMillis();
System.out.println("共耗时毫秒:"+(end-start));
}
}
StringBuilder类
StringBuilder是个字符串的缓冲区,即它是一个容器,容器中可以装很多字符串。并且能够对其中的字符串进行各种操作。它的内部拥有一个数组用来存放字符串内容,进行字符串拼接时,直接在数组中加入新内容。StringBuilder会自动维护数组的扩容。原理如下图所示:(默认16字符空间,超过自动扩充)
构造方法
根据StringBuilder的API文档,常用构造方法有2个:
- public StringBuilder():构造一个空的StringBuilder容器。
- public StringBuilder(String str):构造一个StringBuilder容器,并将字符串添加进去。
StringBuilder sb1 = new StringBuilder();//(空白)
StringBuilder sb2 = new StringBuilder("itcast");//itcast
常用的方法
StringBuilder常用的方法有2个:
- public StringBuilder append(…):添加任意类型数据的字符串形式,并返回当前对象自身
- public String toString():将当前StringBuilder对象转换为String对象。
public class StringBuilderTest {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
StringBuilder sb1 = sb.append("hello");
System.out.println(sb1);
String sb2 = sb1.toString();
System.out.println(sb2);
}
}
装箱与拆箱
装箱:把基本类型的数据,包装到包装类中(基本类型数据→包装类)
构造方法:
Integer(int value)构造以新分配的Integer对象,它表示指定的int值
Integer(String s)构造一个新分配的Integer对象,它表示String参数所指示的int值
传递的字符串,必须是基于基本类型的字符串,否则会抛出异常,eg“100”正确,“a”抛出异常
静态方法:
static Integer valueOf(int i)返回一个表示指定int值的Integer实例
static Integer valueOf(String s)返回一个表示指定String值的Integer对象
Integer i = new Integer(4);//使用构造函数函数
Integer iii = Integer.valueOf(4);//使用包装类中的valueOf方法
拆箱:在包装类中取出基本类型的数据(包装类–>基本类型的数据)
成员方法:
int intValue() 以int类型返回该Integer的值
int num = i.intValue();
自动装箱与自动拆箱
由于我们经常要做基本类型与包装类之间的转换,从Java 5(JDK 1.5)开始,基本类型与包装类的装箱、拆箱动作可以自动完成。例如:
Integer i = 4;//自动装箱。相当于Integer i = Integer.valueOf(4);
i = i + 5;//等号右边:将i对象转成基本数值(自动拆箱) i.intValue() + 5;
//加法运算完成后,再次装箱,把基本数值转成对象。
基本类型与字符串之间的转换
基本类型–>字符串
1、基本类型数据的值+“”最简单的方式(工作中常用)
String s =100+"" ;
2、使用包装类中静态方法
static String toString(int i)返回一个表示指定整数的String对象
3、使用String类中的静态方法
static String valueOf(int i)返回int参数的字符串表示形式
字符串–>基本类型
除了Character类之外,其他所有包装类都具有parseXXX(“字符串”)的静态方法:
public static byte parseByte(String s):将字符串参数转换为对应的byte基本类型。
public static short parseShort(String s):将字符串参数转换为对应的short基本类型。
public static int parseInt(String s):将字符串参数转换为对应的int基本类型。
public static long parseLong(String s):将字符串参数转换为对应的long基本类型。
public static float parseFloat(String s):将字符串参数转换为对应的float基本类型。
public static double parseDouble(String s):将字符串参数转换为对应的double基本类型。
public static boolean parseBoolean(String s):将字符串参数转换为对应的boolean基本类型。
eg:
int num = Integer.parseInt("100");