1.Calendar类的常用方法
package Part2.Day_15;
import java.util.Calendar;
/*
java.util.Calendar类:日历类
Calendar类是抽象类,里面提供了操作日历字段的方法
Calendar类无法直接创建对象使用,
里面有一个静态方法叫getInstance(),该方法返回了Calendar类的子类对象
static Calendar getInstance() 使用默认时区和语言环境获得一个日历
*/
public class demo01Calendar {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();//多态
System.out.println(c);
//java.util.GregorianCalendar[time=1615561712783,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=31,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2021,MONTH=2,WEEK_OF_YEAR=11,WEEK_OF_MONTH=2,DAY_OF_MONTH=12,DAY_OF_YEAR=71,DAY_OF_WEEK=6,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=11,HOUR_OF_DAY=23,MINUTE=8,SECOND=32,MILLISECOND=783,ZONE_OFFSET=28800000,DST_OFFSET=0]
}
}
package Part2.Day_15;
import java.util.Calendar;
import java.util.Date;
public class demo02Calendar {
public static void main(String[] args) {
demo04();
}
/*
public int get(int field): 返回给定日历字段的值
参数:传递指定的日历字段(YEAR,MONTH...)
返回值:日历字段代表具体的值
*/
private static void demo01(){
Calendar c = Calendar.getInstance();
//sout c 这里的toString方法已经重写过了,获取的是当前的时间返回的对象
int year = c.get(Calendar.YEAR);
System.out.println(year);
int month = c.get(Calendar.MONTH);
System.out.println(month); //0-11
int day_of_month = c.get(Calendar.DAY_OF_MONTH);
System.out.println(day_of_month);
}
/*
public void set(int field, int value)
field 传递指定的日历字段
value 传递的字段设置的具体的值
*/
private static void demo02(){
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR,9999);
//设置对象c里的YEAR是9999
int year = c.get(Calendar.YEAR);
System.out.println(year);
//同时设置年月日,可以使用set的重载方法
c.set(8888,8,8);
int month = c.get(Calendar.MONTH);
System.out.println(month); //0-11
int day_of_month = c.get(Calendar.DAY_OF_MONTH);
System.out.println(day_of_month);
}
/*
public abstract void add(int field, int amount)
根据日历的规则,为给定的日历字段添加或者减去指定的时间量
int field : 传递指定的日历字段
int amount: 正数 增加 负数 减少
*/
private static void demo03(){
Calendar c = Calendar.getInstance();
c.add(Calendar.YEAR,2);
c.add(Calendar.MONTH,-2);
}
/*
public Date getTime():
返回一个表示此Calendar时间值的Date对象
把日历对象转换成日期对象
*/
private static void demo04(){
Calendar c = Calendar.getInstance();
Date date = c.getTime();
System.out.println(date);
//Fri Mar 12 23:33:06 CST 2021
}
}
2. System类的常用方法
package Part2.Day_15;
import java.util.Arrays;
/*
public static long currentTimeMills(): 返回以毫秒为单位的当前时间
public static void arraycopy(Object src, int srcPos,Object dest, int destPos, int length):
将数组中指定的数据拷贝到另外一个数组中
*/
public class demo01System {
public static void main(String[] args) {
demo01();
}
/*
public static long currentTimeMills():返回以毫秒为单位的当前时间
用来测试程序的效率
*/
private static void demo01(){
//程序执行前获取一次毫秒值
long s = System.currentTimeMillis();
for (int i = 0; i <=9999 ; i++) {
System.out.println(i);
}//程序执行后获取毫秒值
long e = System.currentTimeMillis();
System.out.println("程序共耗时"+(e-s)+"毫秒");
}
/*
public static void arraycopy(Object src, int srcPos,Object dest, int destPos, int length):
参数:
src - 源数组
srcPos - 源数组中的起始位置
dest - 目标数组
destPos - 目标数据中的起始位置
length - 要复制的数组元素的数量
练习:
将src数组的前三个元素复制到dest数组的前三个位置上
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));//打印dest复制前
System.arraycopy(src,0,dest,0,3);
System.out.println(Arrays.toString(dest));//打印dest复制后
}
}
3.日期相关类的总结
sdf.format(d).var ==>会自动帮我们补齐 变成 String format = sdf.format(d);
package Part2.Day_15.demo02;
import java.util.Calendar;
public class Test02 {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
//get方法
int year = c.get(Calendar.YEAR);
System.out.println(year);
//set方法
c.set(Calendar.YEAR,2088);
//add方法
c.add(Calendar.YEAR,-2);
}
}
4.StringBuilder类的构造方法和append方法
package Part2.Day_15.demo02;
/*
java.long.StringBuilder类:字符串缓冲区,可以提高字符串的效率
构造方法:
public StringBuilder(); 构造一个空的StringBuilder容器
public StringBuilder(String str);
*/
public class demo01StringBuilder {
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
}
}
package Part2.Day_15.demo02;
import java.util.Locale;
/*
StringBuilder类的成员方法
public StringBuilder append()
*/
public class demo02StringBuilder {
public static void main(String[] args) {
StringBuilder bu1 = new StringBuilder();
StringBuilder bu2 = bu1.append("abc");
//append方法返回的是this,调用方法的对象bu1
System.out.println(bu1);//abc
System.out.println(bu2);//abc
System.out.println(bu1==bu2);//true 两个对象是同一个对象,地址相同
//使用append方法无需接收返回值
bu1.append(1);
bu1.append(true);
//链式编程:方法的返回值是一个对象,可以根据此对象继续调用方法
System.out.println("abc".toUpperCase().toLowerCase().toUpperCase());
System.out.println(bu1);//abc1true
}
}
StringBuilder 的常用方法有两个:
public StringBuilder append() //添加任意类型的数据的字符串形式,并返回对象自身
public String toString()//将当前StringBuilder对象转换为String对象
package Part2.Day_15.demo02;
/*
StringBuilder和String可以互相转换
String->StringBuilder可以用StringBuilder的构造方法
StringBuilder->String可以使用StringBuilder中的toString方法
*/
public class demo03StringBuilder {
public static void main(String[] args) {
String str = "Hello";
System.out.println("str:"+str);
StringBuilder bu = new StringBuilder(str);
bu.append("world");
System.out.println(bu);
String s = bu.toString();
}
}
5.System类和StringBuilder类
package Part2.Day_15.demo03;
public class Test01 {
public static void main(String[] args) {
//获取当前系统毫秒时间
long time = System.currentTimeMillis();
System.out.println(time);
int[] arr1= {1,2,3,4,5,6,7,8,9};
int[] arr2= {9,8,7,6,5,4,3,2,1};
//将arr1数组中的前四个数字复制到arr2数组中
System.arraycopy(arr1,0,arr2,5,4);
for (int i = 0; i < arr2.length; i++) {
System.out.println(arr2[i]+" ");
//9 8 7 6 5 1 2 3 4
}
}
}
6.包装类
package Part2.Day_15.demo03;
/*
装箱:把基本类型的数据,包装到包装类中
构造方法:
Integer(int value) 构造一个新分配的Integer对象,表示指定的int值
Integer(String s) 构造一个新分配的Integer,表示String所指的int值
必须是基本类型的字符串,否则抛出异常
静态方法:
Static Integer valueOf(int i) 返回一个表示指定的int值的Integer 实例
static Integer valueOf(String s) 返回保存指定的String的值的Integer对象
拆箱:取出数据
int intValue()
*/
public class demo07Integer {
public static void main(String[] args) {
//装箱:构造方法
Integer in1 = new Integer(1); //方法上有横线,说明方法过时了
System.out.println(in1);//1 重写了toString方法
Integer in3 = Integer.valueOf(1);
Integer in4 = Integer.valueOf("a");//报一个数字格式化的异常
//拆箱:
int i = in1.intValue();
}
}
自动装箱与自动拆箱: JDK1.5
package Part2.Day_15.demo03;
import java.util.ArrayList;
/*
自动装箱与自动拆箱:
基本类型的数据和包装类之间可以自动转换 JDK1.5之后
*/
public class demo02Integer {
public static void main(String[] args) {
/*
自动装箱:直接把int类型的整数赋值给包装类
Integer in = 1; 相当于 Integer in = new Integer(1);
*/
Integer in = 1;
/*
自动拆箱:in是包装类,无法直接参与运算,可以自动转换为基本类型的数据,再参与计算
in +2; 就相当于 in.intValue() + 3 = 3;
in = in + 2; 就相当于 in = new Integer(3) 自动装箱
*/
in = in +2;
//ArrayList 集合无法直接存储整数,可以存储Integer包装类
ArrayList list = new ArrayList<>();
list.add(1); //自动装箱
Integer b = list.get(0);
int a =list.get(0); //自动拆箱
}
}
包装类基本类型与字符串之间的转换:
Character类例外:!!!
package Part2.Day_15.demo03;
/*
基本类型与字符串之间的转换
基本类型->字符串:
1.最简单:基本类型数据的值 + " "
2.static String toString(int i)
3.static String valueOf(int i)
字符串->基本类型:
使用包装类的静态方法parseXX("字符串")
*/
public class demo03Integer {
public static void main(String[] args) {
String s1 = 100+" ";
System.out.println(s1+200); //100200
String s2 = Integer.toString(100);
System.out.println(s2+200);//100200
String s3 = String.valueOf(200);
System.out.println(s3+200);//100200
//字符串->基本类型数据
int i = Integer.parseInt("100");
System.out.println(i+200); //300
//int j = Integer.parseInt("a");
//Exception in thread "main" java.lang.NumberFormatException: For input string: "a"
//数字格式化异常
}
}