2021-03-12:java第15天:Calendar类,System类,StringBuilder,包装类的总结

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<Integer> 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"
        //数字格式化异常
    }
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值