一、Calendar类
- java.until.Calendar类,日历类
- Calendar类是一个抽象类,里边提供了很多操作日历字段的方法(YEAR,MONTH,DAY_OF_MONTH,HOUR)
- Calendar类无法直接创建对象使用,里边有一个静态方法叫getInstance(),该方法返回了Calendar类的子类对象
- static Calendar getInstance() 使用默认时区和语言环境获得一个日历
package day14.demo01;
import java.util.Calendar;
public class demo01calendar {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();//多态
System.out.println(c);
}
}
运行结果:
二、Calendar类常用的成员方法
- Calendar类常用的成员方法:
- public int get(int field):返回给定日历字段的值。
- public void set(int field,int value):将给定的日历字段设置为给定值
- public abstract void add(int field,int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。
- public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏差量)的Date对象
- 成员方法的参数:
- int field:日历类的字段,可以使用Calendar类的静态成员变量获取
- public static final int YEAR = 1; 年
- public static final int MONTH = 2; 月
- public static final int DATE = 5; 月中的某一天
- public static final int DAY_OF_MONTH = 5; 月中的某一天
- public static final int HOUR = 10; 时
- public static final int MINUTE = 12; 分
- public static final int SECOND = 13; 秒
package day14.demo01;
import java.util.Calendar;
import java.util.Date;
public class Demo01calendar1 {
public static void main(String[] args) {
demo01();
System.out.println("================");
demo02();
System.out.println("================");
demo03();
System.out.println("================");
demo04();
}
/*
public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏差量)的Date对象
把日历对象,转化为日期对象
*/
public static void demo04() {
//使用getInstance()方法获取Calendar对象
Calendar c= Calendar.getInstance();
Date date = c.getTime();
System.out.println(date);
}
/*
public abstract void add(int field,int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。
把指定的字段增加/减少指定的值
参数:
int field:传递指定的日历字段(YEAR,MONTH...)
int amount:增加/减少指定的值
正数:增加
负数:减少
*/
public static void demo03() {
//使用getInstance()方法获取Calendar对象
Calendar c= Calendar.getInstance();
//把年增加2年
c.add(Calendar.YEAR,2);
//把月份减少3个月
c.add(Calendar.MONTH,-3);
int year =c.get(Calendar.YEAR);
System.out.println(year);
int month = c.get(Calendar.MONTH);
System.out.println(month);//西方的月份0-11 东方:1-12
//int date = c.get(Calendar.DAY_OF_MONTH);//与下一条语句作用相同
int date = c.get(Calendar.DATE);
System.out.println(date);
}
/*
public void set(int field,int value):将给定的日历字段设置为给定值
参数:int field:传递指定的日历字段(YEAR,MONTH....)
int value:给指定字段设置的值
*/
public static void demo02() {
//使用getInstance()方法获取Calendar对象
Calendar c= Calendar.getInstance();
//设置年为9999
c.set(Calendar.YEAR,9999);
//设置月为9月
c.set(Calendar.MONTH,9);
//设置日为9日
c.set(Calendar.DATE,9);
//同时设置年月日,可以使用set的重载方法
c.set(8888,8,8);
int year =c.get(Calendar.YEAR);
System.out.println(year);
int month = c.get(Calendar.MONTH);
System.out.println(month);//西方的月份0-11 东方:1-12
//int date = c.get(Calendar.DAY_OF_MONTH);//与下一条语句作用相同
int date = c.get(Calendar.DATE);
System.out.println(date);
}
/*
public int get(int field):返回给定日历字段的值。
参数:传递指定的日历字段(YEAR,MONTH...)
返回值:日历字段代表的具体的值
*/
public static void demo01() {
//使用getInstance()方法获取Calendar对象
Calendar c= Calendar.getInstance();
int year =c.get(Calendar.YEAR);
System.out.println(year);
int month = c.get(Calendar.MONTH);
System.out.println(month);//西方的月份0-11 东方:1-12
//int date = c.get(Calendar.DAY_OF_MONTH);//与下一条语句作用相同
int date = c.get(Calendar.DATE);
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):将数组中指定的数据拷贝到另一个数组中
package day14.demo02;
import java.util.Arrays;
public class Demo02System1 {
public static void main(String[] args) {
demo01();
System.out.println("===========");
demo02();
}
/*
public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length):将数组中指定的数据拷贝到另一个数组中
参数:
src - 源数组。
srcPos - 源数组中的起始位置(起始索引)。
dest - 目标数组。
destPos - 目标数据中的起始位置。
Length - 要复制的数组元素的数量。
练习:
将src数组中前3个元素,复制到dest数组的前3个位置上复制元素前:
src数组元素[1,2,3,4,5],dest数组元素[6,7,8,9,10]复制元素后:
src数组元素[1,2,3,4,5],dest数组元素[1,2,3,9,10]
*/
private static void demo02() {
//定义源数组
int[] src = {1,2,3,4,5};
//定义目标数组
int[] dest = {6,7,8,9,10};
System.out.println("复制前:"+ Arrays.toString(dest));
//使用System类中的arraycopy把源数组的前三个元素复制到目标数组的前3个位置上
System.arraycopy(src,0,dest,0,3);
System.out.println("复制后:"+ Arrays.toString(dest));
}
/*
public static long currentTimeMIllis():返回以毫秒为单位的当前时间。
用来程序的效率
验证for循环打印数字1-9999所需要的时间(毫秒)
*/
private static void demo01() {
//程序执行前,获取一次毫秒值
long s=System.currentTimeMillis();
//执行for循环
for (int i = 0; i <= 9999 ; i++) {
System.out.println(i);
}
//程序执行后,获取一次毫秒值
long e=System.currentTimeMillis();
System.out.println("程序共耗时:"+(e-s)+"毫秒");//程序共耗时:570毫秒
}
}
运行结果:
四、StringBuilder的原理
- java.lang.StringBuilder类:字符串缓冲区,可以提高字符串的效率
- 构造方法:
1. StringBuilder() 构造一个不带任何字符的字符串生成器,其初始容量为16个字符。
2. StringBuilder(String str)构造一个字符串生成器,其初始化为指定的字符串内容。
package day14.demo03;
public class StringBuilder01 {
public static void main(String[] args) {
//空参数构造方法
StringBuilder bu1 =new StringBuilder();
System.out.println("bu1:"+bu1);//bu1:
//带字符串的构造方法
StringBuilder bu2 = new StringBuilder("abc");
System.out.println("bu2:"+bu2);//bu2:abc
}
}
运行结果:
五、StringBuilder的常用方法
- StringBuilder的常用方法:
public StirngBuilder append(…):添加任意类型数据的字符串形式,并返回当前对象自身。
package day14.demo03;
public class StringBuilder02 {
public static void main(String[] args) {
//创建StringBuilder对象
StringBuilder bu = new StringBuilder();
//使用append方法往StringBuilder中添加数据
//append方法返回的是this,调用方法的对象bu,this==bu
// StringBuilder bu2=bu.append("abc");//把bu的地址赋值给了bu2
// System.out.println(bu);//abc
// System.out.println(bu2);//abc
// System.out.println(bu==bu2);//比较的是地址 true
//使用append方法无需接收返回值
// bu.append("abc");
// bu.append(1);
// bu.append(true);
// bu.append(8.8);
// bu.append('中');
// System.out.println(bu);//abc1true8.8中
/*
链式编程:方法返回值是一个对象,可以继续调用方法
*/
System.out.println("abc".toUpperCase().toLowerCase().toUpperCase().toLowerCase());
bu.append("abc").append(1).append(true).append(8.8).append('中');
System.out.println(bu);//abc1true8.8中
}
}
运行结果:
- StringBuilder和String可以相互转换:
- String->StringBuilder:可以使用StringBuilder的构造方法
- StringBuilder(String str) 构造一个字符串生成器,其初始化为指定的字符串内容。
- StringBuilde->String:可以使用StringBuilder中的toString方法
- public String toString():将当前StringBuilder对象转换为String对象
package day14.demo03;
public class StringBuilder03 {
public static void main(String[] args) {
//String->StringBuilder
String str = "hello";
System.out.println("str:"+str);
StringBuilder bu = new StringBuilder(str);
//往StringBuilder中添加数据
bu.append("world");
System.out.println("bu:"+bu);
//StringBuilder->String
String s = bu.toString();
System.out.println("s:"+s);
}
}
运行结果: