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

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);
    }
}

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,667评论 5 472
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,361评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,700评论 0 333
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,027评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,988评论 5 361
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,230评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,705评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,366评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,496评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,405评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,453评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,126评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,725评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,803评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,015评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,514评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,111评论 2 341

推荐阅读更多精彩内容

  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 2,727评论 2 9
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,204评论 0 4
  •   引用类型的值(对象)是引用类型的一个实例。   在 ECMAscript 中,引用类型是一种数据结构,用于将数...
    霜天晓阅读 1,031评论 0 1
  • 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物...
    sinpi阅读 1,038评论 0 4
  • 四、集合框架 1:String类:字符串(重点) (1)多个字符组成的一个序列,叫字符串。生活中很多数据的描述都采...
    佘大将军阅读 730评论 0 2