Java学习-常用工具-API

Java常用工具-API

1. API简介

什么是API?

Application Programming Interface,应用程序编程接口,这里指的是API文档,通常叫"Java文档",是Java中提供的类的说明书。

为什么学习API文档?

发挥面向对象思想,照到Java提供的对象来实现功能,学习API文档就是学习Java中的类的使用方法。

Java中组件的层次结构

模块(module)-> 包(package) -> 类或接口(class/interface)

什么是模块?

module,自JAVA9起提供的一种新的Java基础组件,在包(package)的基础上又进行了一层封装,是包的容器。

  • JavaSE Modules
        Java语言的核心类库,其下的模块名多以java开头
  • JDK Modules
        Java开发工具相关内容,其下的模块多以jdk开头

2. Object类

在这里插入图片描述

  • 代码演示
/*
    结论:
        java.lang包下的类可以直接使用,不需要导包
 */
public class Test {
    public static void main(String[] args) {
        // 非静态方法的调用方式:通过对象名. 的形式调用
        //1. 创建Object类型的对象
        Object obj1 = new Object();
        Object obj2 = new Object();

        //2. 调试Object类中的成员方法
        //int hashCode();   返回对象的哈希码值 不同对象的哈希码值一般不同
        int code1 = obj1.hashCode();
        int code2 = obj2.hashCode();
        System.out.println(code1);
        System.out.println(code2);
        System.out.println("--------------------");

        // Class<?> getClass(); 返回值调用者的字节码文件对象,一个类只有一个字节码文件对象
        Class clazz1 = obj1.getClass();
        Class clazz2 = obj2.getClass();
        System.out.println(clazz1);
        System.out.println(clazz2);
        System.out.println("--------------------");

        //String toString();    返回值对象的字符串表示形式,默认打印的是地址值,但是不同对象的地址值肯定不同
        //地址值的组成:全类名 + @ + 该对象的哈希码的无符号十六进制形式
        String s1 = obj1.toString();
        String s2 = obj2.toString();
        System.out.println(s1);
        System.out.println(s2);
        System.out.println("--------------------");

        //boolean equals(); 比较两个对象是否相等,默认比较的是地址值,无意义,子类一般都会重写这个方法
        boolean b1 = obj1.equals(obj2);
        System.out.println(b1);

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

在这里插入图片描述

  • 代码演示
import java.util.Objects;

//学生类
public class Student {
    //成员变量
    private int id;     //编号
    private String name;    //姓名
    private int score;      //成绩
    //构造方法


    public Student() {
    }

    public Student(int id, String name, int score) {
        this.id = id;
        this.name = name;
        this.score = score;
    }

    //成员方法

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }

    //toString() 用来将对象转换成其他对应的字符串形式

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", score=" + score +
                '}';
    }


    //equals()方法 用来比较两个对象是否相同的
    //自定义版的重写equals()方法,过程理解即可
    //假设id属性值相同,两个对象就是同一个对象
    /*public boolean equals(Object obj) {     //s1.equals
        *//*
            this. 谁调用, this就表示谁 s1
            obj:s2
         *//*
        //向下转型
        Student s2 = (Student) obj;
        return this.id == s2.id;
    }*/
    //通过快捷键的方式生成,步骤掌握,代码理解


    @Override
    public boolean equals(Object o) {       //s1.equals(s2)
        //this:s1 o:s2
        //比较两个对象的地址值是否相同,提高效率
        //补充:如果if语句控制的语句体只有一行代码,那么()可以省略不写
        if (this == o) return true;
        //判断要比较的两个对象是否是同一个类型的对象,提高程序的健壮性
        if (o == null || getClass() != o.getClass()) return false;
        //向下转型,正常的逻辑代码
        Student student = (Student) o;
        return id == student.id &&
                score == student.score &&
                name.equals(student.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, name, score);
    }
}
/*
    注意:实际开发中,我们把两个对象的各个属性值都相同的情况下,才会认为这两个对象是同一个对象
 */
public class Test {
    public static void main(String[] args) {
        //测试toString() 方法
        //创建学生类的对象
        Student s1 = new Student(1,"欧阳修",66);
        //输出语句直接打印对象,默认调用了该对象的toString()方法
        System.out.println(s1);
        System.out.println(s1.toString());

        //调试equals方法 s1.equals(s2)
        Student s2 = new Student(1, "欧阳修", 66);
        boolean b1 = s1.equals(s2);
        System.out.println(b1);
    }
}
  • 运行结果
    在这里插入图片描述

3. Scanner类

在这里插入图片描述

  • 代码演示
import java.util.Scanner;

/*
    注意:
        在实际开发中,应用到的最多最多的方法就是:
            nextInt();  用来接收整数
            nextLine();     用来接收字符串
 */
public class Test {
    public static void main(String[] args) {
        //创建Scanner类型的对象(注意:要导包)
        //System.in:标准的输入流,默认指向键盘
        Scanner sc = new Scanner(System.in);

        //接收整数
        /*System.out.println("请录入一个整数:");
        //为了解决(避免)InputMismatchException异常,可以加入一个判断
        if (sc.hasNextInt()){   //判断下一个录入的是否是整数,如果是,结果就是true
            int num = sc.nextInt();
            System.out.println("num" + num);
        }*/

        //接收字符串类型的数据
        System.out.println("请录入一个字符串");
        /*String str1 = sc.nextLine();    //结束标记是:换行符
        System.out.println("str1:" + str1);*/

        String str2 = sc.next();    //结束标记:空白字符(空格,tab,enter)
        System.out.println("str2:" + str2);
    }
}
  • 运行结果
    在这里插入图片描述

4. String类

在这里插入图片描述
在这里插入图片描述

Demo1

  • 代码演示
public class Test {
    public static void main(String[] args) {
        //调试 构造方法
        //1. 将指定的字节数组转成字符串
        //'a':97
        byte[] bys = {97, 98, 99};
        String s1 = new String(bys);
        System.out.println("s1:" + s1);

        //2. 将指定的字符数组转成字符串
        char[] chs = {'h', 'e', 'l', 'l','o'};
        String s2 = new String(chs);
        System.out.println("s2:" + s2);

        //在实际开发中,String类非常非常常用,每次都new很麻烦,于是针对String的语法做了优化,省去了new的动作
        String s3 = "abc";  //免new
        //String s2 = new String("abc");
        System.out.println("----------------------");

        //测试成员方法
        String str1 = "abc";
        String str2 = "ABC";
        //boolean equals(String);   判断当前字符串与给定字符串是否相同,区分大小写
        boolean b1 = str1.equals(str2);
        System.out.println("equals():" + b1);
        // boolean equalsIgnoreCase(String);    判断当前字符串与给定字符串是否相同,不区分大小写
        boolean b2 = str1.equalsIgnoreCase(str2);
        System.out.println("equalsIgnoreCase():" + b2);
        //boolean startWith(String)     判断是否以给定字符串开头
        //需求:判断字符串str1,是否以字符串'a'开头
        boolean b3 = str1.startsWith("a");
        System.out.println("startsWith():" + b3);
        //boolean isEmpty();    判断字符串是否为空
        String str3 = "hello";
        boolean b4 = str3.isEmpty();
        System.out.println("str3.isEmpty():" + b4);
    }
}
  • 运行结果
    在这里插入图片描述

Demo2

代码演示

public class Test {
    public static void main(String[] args) {
        //定义一个字符串
        String str = "java 你好呀 java";

        //int length();     获取当前字符串的长度
        //int length = str.length();
        System.out.println(str.length());

        //char charAt(int index);   获取指定索引位置的字符
        char ch = str.charAt(1);

        //int indexOf(String);  获取指定字符(串)第一次出现的索引
        //需求:字符‘a’第一次出现的位置
        int index1 = str.indexOf('a');
        System.out.println("index1:" + index1);

        //int lastIndexOf(String);  获取指定字符(串)最后一次出现的索引
        //需求:字符'a'最后一次出现的位置
        int index2 = str.lastIndexOf('a');
        System.out.println("index2:" + index2);

        //String substring(int);    获取指定索引位置(含)之后的字符串
        //需求:截取从索引5开始的所有元素
        String s1 = str.substring(5);
        System.out.println("s1:" + s1);

        //String substring(int, int);   获取从索引start位置(含)起至索引end位置(不含)的字符串
        //需求:截取索引5,10的所有元素
        String s2 = str.substring(5,10);
        System.out.println("s2:" + s2);
    }
}

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

Demo3

代码演示

public class Test {
    public static void main(String[] args) {
        //定义一个字符串
        String s1 = "abc";

        //byte[] getBytes();    将字符串转换成字节数组
        byte[] bys = s1.getBytes();
        for (int i = 0; i < bys.length; i++) {
            System.out.println(bys[i]);
        }
        System.out.println("----------");


        //char[] toCharArray();     将字符串转换成字符数组
        char[] chs = s1.toCharArray();
        for (int i = 0; i < chs.length; i++) {
            System.out.println(chs[i]);
        }
        System.out.println("----------");

        //static String valueOf(..);    将指定类型数据转换成字符串
        //整数123 -> 字符串"123"
        String s2 = String.valueOf(123);
        System.out.println(s2 + 4);
        //在实际开发中,上诉的方式基本上都会用下边的这行代码代替
        String s3 = "" + 123;
        System.out.println(s3 + 4);

        //String replace(old, new);     将指定字符(串)替换成新的字符(串)
        String s4 = "abc abc abc";
        //'d' 替换 ‘b’
        String s5 = s4.replace('b','d');
        System.out.println(s5);

        //String[] split(String);   切割字符串,返回切割后的字符串数据,原字符串不变
        //将字符串s4,按照空格进行切割
        //"abc" "abc" "abc";
        String[] arr = s4.split(" ");
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }

        //String trim();    去掉字符串两端的空白字符
        String s6 = " a  b  c  ";
        String s7 = s6.trim();
        System.out.println("s6:" + s6);
        System.out.println("s7:" + s7);
    }
}

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

5. StringBuilder和StringBuffer类

在这里插入图片描述
代码演示

public class Test {
    public static void main(String[] args) {
        //测试构造方法
        //测试空参构造
        StringBuilder sb = new StringBuilder();
        StringBuilder sb2 = sb.append("abc");
        System.out.println("sb:" + sb);
        System.out.println("sb2:" + sb2);
        System.out.println("------------------");

        //需求:将String类型的"abc"转成StringBuilder类型的对象
        StringBuilder sb3 = new StringBuilder("abc");
        System.out.println("sb3:" + sb3);
        System.out.println("------------------");

        //测试成员方法
        //需求:将三个字符串拼接成一个新的字符串:你好 我的名字是 张三;
        StringBuilder sb4 = new StringBuilder();
        sb4.append("你好");
        sb4.append("我的名字是");
        sb4.append("张三");
        System.out.println("sb4:" + sb4);
        System.out.println("------------------");
        String s = sb4.toString();
        System.out.println("字符串s:" + s);
    }
}

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

6. Date和Calender类

在这里插入图片描述

Demo1

代码演示

import java.util.Date;

public class Test {
    public static void main(String[] args) {
        //测试Date类
        //测试空参构造,采用当前操作系统的默认时间
        Date date1 = new Date();
        System.out.println("date1:" + date1);

        //获取当前操作系统时间的毫秒值
        long time = date1.getTime();
        System.out.println("time:" + time);

        //Mon Mar 22 14:04:27 CST 2021 -> 1616393067042
        //创建一个指定的时间
        Date date2 = new Date(1616393067042L);
        System.out.println("date2:" + date2);
    }
}

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

Demo2

代码演示

import java.util.Calendar;

public class Test2 {
    public static void main(String[] args) {
        //创建Calendar类型的对象
        Calendar c = Calendar.getInstance();
        System.out.println(c);

        //获取年月日的信息
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH);  //Java中使用0-11的数字表示月份的,对应1-12月
        int day = c.get(Calendar.DATE);
        System.out.println(year + "年" + (month + 1) + "月" + day + "日");

        //设置指定时间对:2022年2月2日
        /*c.set(Calendar.YEAR,2022);
        int year2 = c.get(Calendar.YEAR);
        System.out.println(year2 + "年" + (month + 1) + "月" + day + "日");*/
        c.set(2022,1,2);
        //重新获取年月日的值
        int year2 = c.get(Calendar.YEAR);
        int month2 = c.get(Calendar.MONTH);  //Java中使用0-11的数字表示月份的,对应1-12月
        int day2 = c.get(Calendar.DATE);
        System.out.println(year2 + "年" + (month2 + 1) + "月" + day2 + "日");
    }
}

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

7. 基本类型和包装类

在这里插入图片描述
代码演示

/*
    装箱
        基本类型转包装类型(对象类型)
    拆箱
        包装类型(对象类型)转基本类型
    成员方法
        static 基本类型 parseXxx(String); 将字符串类型的数据转换成对应的基本类型
        例如:
            static int parseInt(String);    将字符串类型的整数转换成对应的int类型的整数
    注意:
        除了Character类以外,其他的7中包装类都有parseXxx()方法
        因为如果字符串想转换成char类型的数据,可以通过:String类中的方法toCharArray(), charAt();
 */
public class Test {
    public static void main(String[] args) {
        //变量a属于基本类型,不能通过 对象名. 的形式调用方法
        //解决方法:将其转换成对应的 包装类(引用类型)即可
        int a = 10;

        //装箱
        Integer i1 = new Integer(20);
        //拆箱
        int b = i1.intValue();
        System.out.println(i1);
        System.out.println(b);
        System.out.println("------------------");

        //JDK5的新特性,自动拆装箱
        Integer i2 = 30;    //装箱
        int c = i2;     //拆箱
        System.out.println("------------------");

        //需求:将字符串类型的“10”,转换成int类型的 10
        String s = "10";
        int num = Integer.parseInt(s);
        System.out.println("num:" + num);
        System.out.println("num + 100 = " + (num + 100));
    }
}

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值