Java学习与复习笔记--Day06

Calendar类:

java.util.Calendar类:日历类

 Calendar类是一个抽象类,里面提供了很多操作日历字段的方法(YEAR、MONTH、DAY_OF_MONTH、HOUR)

Calendar类无法直接创建对象使用,里面有一个静态方法getInstance(),该方法反回了Calendar类的子类对象

static Calendar getInstance()使用默认时区和语言环境获取一个日历

Calendar类的常用成员方法:

/*
    * public int get(int field):返回给定日历字段的值。
    * 参数:传递指定的日历字段(YEAR MONTH...)
    * 返回值:日历字段代表的具体的值*/
    private 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+1);//西方的月份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:给指定字段设置的值*/
private static void demo02() {
    Calendar c = Calendar.getInstance();
    c.set(Calendar.YEAR,9999);//设置年为9999
    c.set(Calendar.MONTH,9);//设置月为9月
    c.set(Calendar.DATE,9);//设置日为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);
    int date = c.get(Calendar.DAY_OF_MONTH);
    System.out.println(date);
}
/*
    * public abstract void add(int field,int amount):根据日历的规则,为给定的日历字段添加或者减去指定的时间量
    * 参数:int field:传递指定的日历字段(YEAR MONTH...)
    *       int amount:增加/减少指定的值
    *           正数:增加
    *           负数:减少*/
    private static void demo03() {
        Calendar c = Calendar.getInstance();
        //把年增加两年
        c.add(Calendar.YEAR,2);
        int year = c.get(Calendar.YEAR);
        System.out.println(year);
        c.add(Calendar.MONTH,-3);
        int month = c.get(Calendar.MONTH);
        System.out.println(month+1);//西方的月份0-11,东方1-12.
        int date = c.get(Calendar.DAY_OF_MONTH);
//        int date = c.get(Calendar.DATE);//效果相同
        System.out.println(date);
    }
/*
* public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。
* 把日历对象,转换为日期对象*/
private static void demo04() {
    Calendar c = Calendar.getInstance();
    Date date = c.getTime();
    System.out.println(date);
}

System类:

/*
* public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)将指定源数组中的数组从指定位置复制到目标数组的指定位置。
* 参数:
*   src - 源数组。
    srcPos - 源数组中的起始位置。
    dest - 目标数组。
    destPos - 目的地数据中的起始位置。
    length - 要复制的数组元素的数量。*/
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把源数组的前三个元素复制到目标数组的前三个位置上
    System.arraycopy(src,0,dest,0,3);
    System.out.println("复制后:"+ Arrays.toString(dest));
}

StringBuilder类:

String类:字符串是常量;它们的值在创建之后不能更改。

字符串的底层是一个被final修饰的数组,不能改变,是一个常量。

进行字符串的相加,内存中就会有多个字符串,占用空间多,效率低下。

StringBuilder类

字符串缓冲区,可以提高字符串的操作效率(看成一个长度可以变化的字符串)

底层也是一个数组,但是没有被final修饰,可以改变长度。

初始容量:byte[] value=new byte[16];

StringBuilder在内存中始终是一个数组,占用空间小,效率高

如果超出了StringBuilder的容量,会自动的扩容

/*
* java.lang.StringBuilder类:字符串缓冲区,可以提高字符串的效率
* 构造方法:
* StringBuilder()
* 构造一个不带任何字符的字符串生成器,其初始容量为16个字符。
* StringBuilder(String str)
  构造一个初始化为指定字符串内容的字符串构建器。*/

public class Demo01StringBuilder {
    public static void main(String[] args) {
        //空参构造方法
        StringBuilder bu1=new StringBuilder();
        System.out.println("bu1:"+bu1);
        //带字符串的构造方法
        StringBuilder bu2 = new StringBuilder("abc");
        System.out.println("bu2:"+bu2);
    }
}
/*
* StringBuilder常用方法:
* public StringBuilder append(...):添加任意类型数据的字符串形式,并返回当前对象自身。*/
public class Demo02StringBuilder {
    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);
        System.out.println(bu2);
        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);
        /*
        * 链式编程:方法返回值是一个对象,可以继续调用方法
        * */
        bu.append("abc").append(1).append(true).append(8.8).append('中');
        System.out.println(bu);
    }
}
/*
* StringBuilder和String可以相互转换:
* String->StringBuilder:可以使用StringBuilder的构造方法
* StringBuilder(String str)
  构造一个初始化为指定字符串内容的字符串构建器
  StringBuilder->String可以使用StringBuilder中的toString方法
  public String toString():将当前StringBuilder对象转换成String对象
  */
public class Demo03StringBuilder {
    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、付费专栏及课程。

余额充值