java学习笔记

java学习笔记(十四)常用API第二部分

2020-03-17  本文已影响0人  Broken故城

1、object类

1.1、tostring

用于返回对象的字符串表示,比如数组,使用该方法后可以查看对应的字符串表示而无需遍历

String s = Arrays.toString(dest);

1.2、equals方法

用于比较两个参数是否相等,返回布尔类型

A.equals(B)

这个方法在object中,原始的代码对于引用数据类型来说只会比较地址值,没有意义。所以其他的类中(如String)重写了该方法,使得它可以比较引用数据类型的属性。

以下为String类中重写该方法的代码

    public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String anotherString = (String)anObject;
            int n = value.length;
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                while (n-- != 0) {
                    if (v1[i] != v2[i])
                        return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }

2、Date类

与时间和日期相关的类(单位是毫秒)

时间原点:1970年1月1日0点(格林威治时间)

2.1、无参构造

Date date = new Date();
//直接输出date可查看当前时间

2.2、带参构造

Date date = new Date(0L);
//传递一个long类型的毫秒值,获得一个对应时间的date对象

2.3、gettime()方法

date.getTime()
//返回date对象到时间原点的毫秒值

3、DateFormat类

对日期进行格式化的类,是一个抽象类,功能借助子类SimpleDateFormat实现

日期模式:y年 M月 d日 H时 m分 s秒(区分大小写)

使用这些字母组合成日期的表达模式

3.1、SimpleDateFormat类

构造

传递一个模式作为构造方法,例如

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-mm-ss");

常用方法:

格式化:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-mm-ss");
        //创建对象并传递模式
        Date date = new Date();//获取一个时间
        String format = sdf.format(date);//格式化并存储
        System.out.println(date);//输出格式化之前的
        System.out.println(format);//输出格式化之后的

如上format方法将日期按模式转换为对应模式的字符串

解析:按模式将字符串解析成日期(模式和字符串不符会抛出异常)

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-mm-ss");
        //注意,解析的字符串如果跟模式不一样,会给异常
        Date parse = sdf.parse("2020-03-10-14-07");
        System.out.println(parse);

3、Calendar类

日历类,可以操作年月日等属性

是个抽象类,通过静态方法getInstance可以直接获得子类对象(多态)

常用成员方法:

*     get(int field)
*           返回给定日历字段的值。
*     set(int field, int value)
*           将给定的日历字段设置为给定值。
*     add(int field, int amount)
*           根据日历的规则,为给定的日历字段添加或减去指定的            时间量。
*     getTime()
*           返回一个表示此 Calendar 时间值(从历元至现在的            毫秒偏移量)的 Date 对象。

演示:

get方法

/**
     * public int get(int field),返回给定日历字段的值
     * 参数:传递指定日历字段(YEAR,MONTH。。。)
     * 返回值:日历字段代表的具体的值
     */
    private static void demo01() {
        //getDemo
        //使用getinstance方法
        Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);//获取当前年份
        System.out.println(year);

        int mouth = c.get(Calendar.MONTH);//获取月份
        System.out.println(mouth);//注意,月份为西方月份,从0到11

        int date = c.get(Calendar.DATE);//获取日
        System.out.println(date);
    }

set方法:

private static void demo02() {
        //steDemo
        /**
         * public void set(int field,int value)将给定日历字段设置为给定值
         * 参数:
         *      同get
         */
        Calendar c = Calendar.getInstance();//获取对象
        //设置年为9999
        c.set(Calendar.YEAR,9999);//设置对象的年份
        int year = c.get(Calendar.YEAR);
        System.out.println(year);

        //同时设置年月日
        c.set(8888,8,8);
    }

add方法:

private static void demo03() {
        //addDemo
        /**
         * 根据日历的规则,为给定的日历字段增加或减少相应的值
         * 正数增加,负数减少
         */
        Calendar c = Calendar.getInstance();
        //增加两年
        c.add(Calendar.YEAR,2);
        int year = c.get(Calendar.YEAR);
        System.out.println(year);
    }

getTime方法:

private static void demo04() {
        //getTimeDemo,把Calendar的时间值转化成Date对象
        Calendar c = Calendar.getInstance();
        Date date = c.getTime();
        System.out.println(date);
    }

4、System类

可以获取与系统相关信息或系统级操作

这里介绍获取当前时间和复制数组两个方法

4.1、currentTimeMillis方法

可以获取当前时间(毫秒级)可用于测试程序运行时间

private static void demo01() {
        /**
         * currentTimeMillis;返回毫秒级单位的当前时间
         * 用来测试程序运行耗时
         * 执行前获取一次,执行后获取一次
         * 下面以测试for循环输出1-9999为例,看耗时多少
         */
        long s = System.currentTimeMillis();
        //获取第一次时间
        for (int i = 0; i < 9999; i++) {
            System.out.println(i);
        }
        long s2 = System.currentTimeMillis();
        //获取第二次时间
        System.out.println(s2-s);
        //输出测试结果
    }

4.2、copyarray方法

将数组中指定的数据拷贝到另一数组

public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)

参数含义如下

src - 源数组。
srcPos - 源数组中的起始位置。
dest - 目标数组。
destPos - 目标数据中的起始位置。
length - 要复制的数组元素的数量。

举例,将src数组中的前三个元素复制到dest数组的前三位

//定义原数组
int[] src = {1,2,3,4,5};
int[] dest = {6,7,8,9,10};

System.arraycopy(src,0,dest,0,3);
 String s = Arrays.toString(dest);
System.out.println(s);//dest的前三个被替换了

5、StringBuilder类

字符串缓冲区,可看做长度可变的字符串,可以提高字符串的操作效率

5.1、构造方法:

StringBuilder()构造一个不带任何字符的字符串生成器,其初始容量为 16 个字符。
StringBuilder(String str)构造一个字符串生成器,并初始化为指定的字符串内容。可用于将字符串转化成StringBuilder

5.2、append方法:

private static void demo01() {
        StringBuilder bu = new StringBuilder();
        //使用append方法
        //返回的是this 调用方法的对象
        StringBuilder bu2 = bu.append("abc");//把bu的地址值给了bu2,其实不用接受返回值
        System.out.println(bu);
        System.out.println(bu2);
        System.out.println(bu==bu2);//比较的是地址
    }

append方法可接受任何类型的字符串形式

5.3、toString方法

private static void demo02() {
        //toString
        /**
         * StringBuilder可以和String相互转换
         *      String-->StringBuilder可以使用StringBuilder的构造方法
         *      StringBuilder-->String使用StringBuilder中的toString
         */
        //String-->StringBuilder
        String str = "hello";
        System.out.println(str);
        StringBuilder bu =new StringBuilder(str);
        //添加数据
        bu.append("world");
        System.out.println(bu);

        //StringBuilder-->String
        String s = bu.toString();
        System.out.println(s);
    }

6、包装类

用一个类把基本数据类型包装起来,使其可以被当成对象使用

装箱:把基本数据类型的数据放到包装类中

方法:

构造方法:Integer(int value)构造一个新的Integer对象,表示指          定的int值
        Integer(String s)构造一个新分配的Integer对象,注            意:传入的参数必须为基本类型的字符串,否则异常
静态方法:valueOf(String s)
        valueOf(String s, int radix)返回一个 Integer 对          象,该对象中保存了用第二个参数提供的基数进行解析时从          指定的 String 中提取的值。

示范

        //传整数建立对象
        Integer in1 = new Integer(1);//方法过时了
        System.out.println(in1);

        //传字符串建对象
        Integer in2 = new Integer("1");
        System.out.println(in2);

        //传整数
        Integer in3 = Integer.valueOf(1);//过时
        System.out.println(in3);

        //传字符串
        Integer in4 = Integer.valueOf("1");
        System.out.println(in4);

拆箱:在包装类中取出基本数据类型

成员方法:inValue()

示范:

  //拆箱
        int i = in1.intValue();
        System.out.println(i);

6.1、自动拆箱与装箱:

//自动装箱,相当于Integer in = new Integer(1);
        Integer in = 1;

        //自动拆箱,包装类无法进行计算,因此在计算时会拆箱,但是计算完后又会自动装箱
        in = in+2;

6.2、基本数据类型与字符串之间的转换

/**
 * 基本数据类型与字符串类型之间的相互转换
 * 基本类型-->字符串:
 *      1、基本类型的值+“”  最简单的
 *      2、包装类的静态方法toString(参数),
 *      3、String类的静态方法valueof(参数)
 * 字符串-->基本类型:
 *      1、包装类的静态方法parsexxx("数字类的字符串")
 *          Integer类:static int parseInt(String s)
 */

示范:

public class translateDemo {
    public static void main(String[] args) {
        int i1 = 100;
        String s1 = i1 + "";
        System.out.println(s1);

        String s2 = Integer.toString(100);
        System.out.println(s2);

        String i3 = String.valueOf(1);
        System.out.println(i3);


        int i = Integer.parseInt(s1);
        System.out.println(i-10);
    }
}

上一篇下一篇

猜你喜欢

热点阅读