Java学习笔记⑬(Calendar类、Calendar类常用的成员方法、System类的常用方法、StringBuilder的原理、StringBuilder的常用方法)

一、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类常用的成员方法:
  1. public int get(int field):返回给定日历字段的值。
  2. public void set(int field,int value):将给定的日历字段设置为给定值
  3. public abstract void add(int field,int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。
  4. 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);
    }
}

运行结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值