java进阶打卡02

日期相关类(续)

  • Calendar类
    java.util.Calendar类:日历类。里边提供了很多操作日历字段的方法(YEAR、MONTH、DAY_OF_MONTH、HOUR)
Calendar类是一个抽象类,无法直接创建对象使用,里边有一个静态方法叫getInstance(),该方法返回了Calendar类的子类对象
1. 创建对象方式
(1)static Calendar getInstance()	使用默认时区和语言环境获得一个日历
例如:	Calendar c = Calendar.getInstance(); // 多态

2. 成员方法
参数:
	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;        秒
	
注意:四方的月份0-11   东方:1-12
	
(1)public int get(int field):返回给定日历字段的值。
例如:	Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);
        System.out.println(year); // 2020
        
(2)public void set(int field, int value):将给定的日历字段设置为给定值。
例如:	Calendar c = Calendar.getInstance();
        c.set(Calendar.YEAR, 2022);
        int year = c.get(Calendar.YEAR);
        System.out.println(year); // 2088
        
注意:	// 同时设置年月日,可以使用set的重载方法
        c.set(2020,10,2);        
        
(3)public abstract void add(int field, int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。(正数:增加;负数:减少)
例如:	Calendar c = Calendar.getInstance();
        c.add(Calendar.YEAR, 2);
        int year = c.get(Calendar.YEAR);
        System.out.println(year); // 2022                   

(4)public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。
例如:	Calendar c = Calendar.getInstance();
        Date date = c.getTime();
        System.out.println(date); // Tue Nov 03 08:07:02 CST 2020

System类

java.lang.System类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作。

在System类的API文档中,常用的方法有:
(1)public static long currentTimeMillis():返回以毫秒为单位的当前时间。
作用:用来测试程序的效率

练习:验证for循环打印数字1-9999所需要使用的时间(毫秒)
		// 程序执行前,获取一次毫秒值
        long s = System.currentTimeMillis();
        for (int i = 1; i <= 9999; i++) {
            System.out.println(i);
        }
        // 程序执行后,在获取一次毫秒值
        long e = System.currentTimeMillis();
        System.out.println("程序共耗时:" + (e - s) + "毫秒");

(2)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]
        		
        int[] src = {1, 2, 3, 4, 5};        
        int[] dest = {6, 7, 8, 9, 10};
        System.out.println("复制前:" + Arrays.toString(dest)); // [6, 7, 8, 9, 10]
        // 将src数组中前3个元素,复制到dest数组的前3个位置上
        System.arraycopy(src, 0, dest, 0, 3);
        System.out.println("复制后:" + Arrays.toString(dest));// [1, 2, 3, 9, 10]

StringBuilder类

A. String类:
	字符串是常量;它们的值在创建之后不能更改。
	字符串的底层是一个被final修饰的数组,不能改变,是一个常量
	private final byte[] value;

进行字符串的相加,内存中就会有多个字符串,占用空间多,效率低下
String s = "a" + "b" + "c" = "abc";
String s :"a","b","c"		3个字符串
	"a"+"b" "ab"	1个字符串
	"ab"+"c" "abc"	1个字符串

B. StringBuilder类:
	字符串缓冲区,可以提高字符串的操作效率(看成一个长度可以变化的字符串)
	底层也是一个数组,但是没有被final修饰,可以改变长度
	byte[] value = new byte[16];

"a" + "b" + "c" = "abc"
"a"	"b"	"c"	""	""
0	1	2	3	4-15

StringBuilder在内存中始终是一个数组,占用空间少,效率高
如果超出了StringBuilder的容量,会自动的扩容

1. 构造方法:
(1)public StringBuilder():创建一个空的字符串缓冲区对象
例如:	StringBuilder bu1 = new StringBuilder();
        System.out.println("bu1:" + bu1); // bu1:
(2)public StringBuilder(String str):根据传入的内容创建一个字符串缓冲区对象
例如:	StringBuilder bu2 = new StringBuilder("abc");
        System.out.println("bu2:" + bu2); // bu2:abc

2.成员方法:
(1)public StringBuilder append(...):添加任意类型数据的字符串形式,并返回当前对象自身。
例如:	StringBuilder bu1 = new StringBuilder();
		bu1.append("abc");
		bu1.append(1);
		System.out.println(bu1); // abc1
		// 链式编程:方法的返回值是一个对象,可以根据对象继续调用方法
		// bu1.append("abc").append(1);
		// System.out.println(bu1); // abc1

注意:
1. 参数可以是任意的数据类型
2. apend方法返回的是this,调用方法的对象bu1,因此使用append方法无需接收返回值

(2)public StringBuilder reverse();	反转内容
例如:	StringBuilder sb = new StringBuilder();
		sb.append("hello").append("world");
		sb.reverse();
		System.out.println(sb); // dlrowolleh

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页

打赏作者

bubupp

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值