Java常用API

一、什么是API

  • API(Application Programming interface)应用程序编程接口。
  • 简单来说:就是Java帮我们写好的一些方法,我们直接拿过来用就可以了。

二、Object类

1、Object类的作用:

  • 一个类要么默认继承了Object类,要么间接继承了Object类,Object类是Java中的祖宗类。
  • Object类的方法是一切子类都可以直接使用的,所以我们要学习Object类的方法。

2、Object类的常用方法
请添加图片描述
3、Object的toString方法:

public String toString()
默认是返回当前对象在堆内存中的地址信息:类的全限名@内存地址

问题引出:

  • 开发中直接输出对象,默认输出对象的地址其实是毫无意义的。
  • 开发中输出对象变量,更多的时候是希望看到对象的内容数据而不是对象的地址信息。

toString存在的意义

  • 父类toString() 方法的存在意义就是为了被子类重写,以便返回对象的内容信息,而不是地址信息。

示例:输出学生对象的信息

/*
toString方法默认返回变量地址
重写Object类的toString方法返回对象的内容
*/
@Override
public String toString(){
	return "Student { name" + name + ", Sex = " + Sex + ", age = " + age + "}";

//直接调用重写toString方法
 @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", sex=" + sex +
                ", age=" + age +
                '}';
    }

4、object的equals方法:
请添加图片描述

问题思考:

  • 直接比较两个对象的地址是否相同完全可以用“==”替代equals。

equals存在的意义:

  • 父类的equals方法存在的意义就是为了被子类重写,以便用子类自己来定制比较规则。

示例:自己重写equals,自己制定规则
两个对象的内容一样就认为是相等的

自己重写方法

/*	s1.equals(s2)
	比较者 s1 ==> s2
	被比较者 this ==> o
*/

 @Override
    public boolean equals(Object o) {
        //1、判断是不是Student类型
        if(o instanceof Student) {
            Student s2 = (Student) o;
            //2、判断2个对象的内容是否相同
            if (this.name.equals(s2.name) &&
                    this.age == s2.age && this.sex == s2.sex) {
                    return true;
            } else {
                return false;
            }
        }else{
            //学生只能和学生比较,否则结果只能是false
            return false;
        }
    }
	

官方重写

  /*
          重写equals方法两个对象的内容相同就认为是相等的
       */
	@Override
    public boolean equals(Object o){
        //1、判断是否是同一对象比较,如果是返回true.
        if(this == o) return true;
        //2、如果o是null返回false  如果o不是学生类型返回false
        if(o == null || this.getClass() != o.getClass())  return false;
        //3.说明o一定是学生类型而不是null
        Student student = (Student) o;//将Object类型强制转换为Student
        return sex == student.sex&& age == student.age&& name == student.name;

三、Objects类

1、概述:

  • Objects类是与Object还是继承关系,Objects类是从JDK 1.7开始之后才有的。

2、Objects的常见方法
请添加图片描述
请添加图片描述
4、对象进行内容比较的时候建议使用什么?为什么?

  • 建议使用Objects 提供的equals方法。
  • 比较的结果是一样的,但是更安全。(objects的equals方法底层会先进行非空判断)
四、StringBulider类

1、概述

  • StringBuilder是一个可变的字符串类,我们可以把它看成是一个对象容器。
  • 作用:提高字符串的操作效率,例如拼接、修改等等。

2、StringBulider的构造器
请添加图片描述
3、StringBuilder常用方法
请添加图片描述

public class Test_method {
    public static void main(String[] args) {
        StringBuilder s = new StringBuilder("{");
        //拼接
        s.append("a ,");
        s.append("b ,");
        s.append("o ,").append("w ,").append("s }");
        System.out.println(s);//{a,b ,o ,w ,s }
        System.out.println(s.toString());//{a,b ,o ,w ,s }
        //反转
        s.append("123");
        System.out.println(s.reverse());//321} s, w, o, b,a{
        //返回长度
        System.out.println(s.length());//18

        //注意:StringBuilder只是拼接字符串的手段,效率好
        //最终目的还是要恢复成String类型
        StringBuilder s2 = new StringBuilder("123");
        s2.append("456");
        String rs = s2.toString();
        check(rs);
    }

    public static void check(String s){
        System.out.println(s);//123456
    }
}

4、为什么拼接、反转字符串建议使用StringBuilder?

  • String:内容是不可变的、拼接字符串的性能差。
  • StringBuilder:内容是可变的、拼接字符串的性能好、代码优雅。

5、注意

  • 定义字符串用String
  • 拼接修改等操作字符串使用StringBuilder

6、案例
请添加图片描述

public class Test {
    public static void main(String[] args) {
        int[] arr1 = null;
        System.out.println(toString(arr1));

        int[] arr2 = {11,22,33,44};
        System.out.println(toString(arr2));
    }

    public static String toString(int[] arr) {
        if (arr != null) {
            //开拼拼接内容
            StringBuilder sb = new StringBuilder("[");
            for (int i = 0; i < arr.length; i++) {
                sb.append(arr[i]).append(i == arr.length-1 ? "" : ",");
            }
            sb.append("]");
            return sb.toString();//StringBuilder中toString方法可以实现把StringBuilder转换成String
        } else {
            return null;
        }
    }
}

五、Math类

1、概述

  • 包含执行基本数字运算的方法,Math类中没有提供公开的构造器。
  • 如何使用类中的成员? 看类的成员是否都是静态的,如果是,通过类名就可以直接调用。

2、Math类常用的方法
请添加图片描述
3、使用操作
请添加图片描述

六、System类

1、System类概述

  • System的功能是通用的,都是直接用类名调用即可,所以System不能被实例化。

2、System类的常用方法
请添加图片描述

3、时间毫秒值
请添加图片描述
4、数组拷贝

public static void arraycopy(数组源数组,起始索引,目的地数组,起始索引,拷贝个数)

请添加图片描述

七、BigDeimal类

1、BigDecimal作用

  • 用于解决浮点型运算精度失真的问题。

2、使用步骤

  • 创建对象BigDecimal封装浮点型数据(最好的方法是调用方法)

public static BigDecimal valueOf(double val): 包装浮点数成为BigDecima对象

3、BigDecimal的对象如何获取?

  • BigDecimal b1 = BigDecimal.valueOf(0.1);

4、BigDecimal常用API
请添加图片描述
4、使用BigDecimal解决精度失真问题

package d5_BigDecimal;

import java.math.BigDecimal;
import java.math.RoundingMode;

public class Test {
    public static void main(String[] args) {
        double a = 0.1;
        double b = 0.2;
        double c = a + b;
        System.out.println(c);
        System.out.println("-----解决精度失真------");
        //包装浮点数数据成为大数据对象BigDecimal
        BigDecimal a1 = BigDecimal.valueOf(a);
        BigDecimal b1= BigDecimal.valueOf(b);
        BigDecimal c1 = a1.add(b1);
        System.out.println(c1);//加0.3
        System.out.println(a1.subtract(b1));//减-0.1
        System.out.println(a1.multiply(b1));//乘0.02
        System.out.println(a1.divide(b1));//除0.5

        //目的:转变成double
        System.out.println("-----变为double类------");
        double rs = c1.doubleValue();
        System.out.println(rs);//0.3

        System.out.println("-------精度计算---------");
    /*
            BigDemical一定要进行精度计算的,10/3 = 3.333333....
         */
        BigDecimal a2 = BigDecimal.valueOf(10.0);
        BigDecimal b2 = BigDecimal.valueOf(3.0);
        //System.out.println(a2.divide(b2));报错无法确认精度
        System.out.println(a2.divide(b2,2, RoundingMode.HALF_UP));
                        //(另一个BigDecimal对象,精确几位,舍入模式)
    }
}

请添加图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值