java常用API,例Object,Objects,Math,System,Arrays,BigDecinmal

API(Application Programming interface)  :应用程序编程接口

            就是写好的一些类和方法,我们直接拿过来用

目录

1.Object

2.Objects

3. Math类

4.System类       

5.Arrays类

6.BigDecimal    


1.Object

        Object类是Java中所有类的祖宗类,因此,Java中所有类的对象都可以直接使用Object类中提供的一些方法。

      常用的方法java常用API,例Object,Objects,Math,System,Arrays,BigDecinmal_第1张图片

toString存在的意义:就是为了被子类重写,返回对象具体的内容(输出对象默认执行的就是toString,  sout(对象的变量名) 默认就是sout(对象的变量名.toString) 在idea种显示toString灰色 )

equals存在的意义:为了让子类重写,比较对象的内容,不重写比较的是地址

package com.itheima.day02.teacher.api01_object;
/**
    测试类toString
*/
public class Demo01 {
    public static void main(String[] args) {
        Student stu1 = new Student("鸿福王",21);

        //String s = stu1.toString();//不报错原因是 父类中有

        System.out.println(stu1.toString());
        System.out.println(stu1);//相当于调用toString
        // 我们没有写toString 用的Object的toString方法
        /*
         public String toString() {
             return getClass().getName() + "@" + Integer.toHexString(hashCode());
                    包名+类名 + @  + 理解为是一种地址展示效果
        }

         */
        //  com.itheima.api01_object.Student@3b07d329
        /*
         我们 希望 把对象变成一个字符串之后 展示对象中的内容(属性)
          想看内容 发现父类中toString 没法满足了,就做重写。

          在Student类中 重写 toString
          重写之后
            就是 拼接了一个字符串(展示对象中属性内容)
         */
    }
}
---------------

package com.itheima.day02.teacher.api01_object;

/**
 * 测试类equals
 */
public class Demo02 {

    public static void main(String[] args) {
        /*
          Object 里面提供的equals源码
             boolean equals(Object obj)
                当前对象和传递对象 是否 "相等"
               public boolean equals(Object obj) {
                  return (this == obj);
               }
               默认情况比较的是地址值 我们希望比较内容
               不满足就重写
         */
        Student stu1 = new Student("士磊",21);
        Student stu2 = new Student("士磊",21);
        Student stu3 = new Student("天柱",21);
        /*
         用 没有重写之前的equals做判断
         //false
         //false
         重写之后  比较的是内容(属性)
           true
           false
         */
        System.out.println("stu1.equals(stu2):"+stu1.equals(stu2));
        System.out.println("stu1.equals(stu3):"+stu1.equals(stu3));

    }
}


------------------
package com.itheima.day02.teacher.api01_object;

/**
 * 学生类
 */

import java.util.Objects;

public class Student {
    private String name;
    private int age;

    public Student() {
      super();//ctrl+左键
    }


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

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
    // alt+insert 选择 toString
    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    @Override
    public boolean equals(Object o) {//Object 接收
        if (this == o) // 判断两个对象 是不是一个地址
            return true;
        if (o == null || getClass() != o.getClass())
            // 另外一个对象是null 或者 两者类型不一样 没有必要判断 返回false
            return false;
        // 向下转型 目的 进行属性的比较
        Student student = (Student) o;
              //   基本类型属性比较了    引用类型比较
        return age == student.age && Objects.equals(name, student.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
}

总结一下Object的toString方法和equals方法

public String toString()

          返回对象的字符串表示形式。默认的格式是:“包名.类名@哈希值16进制”

        【子类重写后,返回对象的属性值】

public boolean equals(Object o)

         判断此对象与参数对象是否"相等"。默认比较对象的地址值,和"=="没有区别

       【子类重写后,比较对象的属性值

------------------------------------------------

2.Objects

     java常用API,例Object,Objects,Math,System,Arrays,BigDecinmal_第2张图片

       Objects的equlas方法,直接拿来进行判断,因为我们自己很容易漏掉一些判断

        isNull和nonNull可以忽略,底层源码就一个 == 没啥可写的,不建议用,自己写判Null

          

package com.itheima.day02.teacher.api01_object;

import java.util.Objects;

public class ObjectsDemo {

    public static void main(String[] args) {
        // 对象比较的时候  我们的想法很简单 相比较对象里面的内容
        //  但是 由于经验不足 我们可能会忘记进行 非空校验。从而会导致 比较的时候出现  NullPointerException

        String a = "aaa";
        String b = "aaa";
//        a.equals(b)  忘记做非空校验 或者  还得写 if判断 非空校验
        boolean b1 = Objects.equals(a, b);
        /*
          public static boolean equals(Object a, Object b) {
              return (a == b) || (a != null && a.equals(b));
          }
          比较 两个对象 a b 内容是否一样 说白 增强安全性 从而避免了 空指针异常
         */
        System.out.println(Objects.isNull(a));
        System.out.println(a==null);

        System.out.println(Objects.nonNull(a));
        System.out.println(a!=null);

    }
}

3. Math类

java常用API,例Object,Objects,Math,System,Arrays,BigDecinmal_第3张图片

直接上代码演示

package com.itheima.day02.teacher.api02;

public class MathDemo {

    public static void main(String[] args) {
        //演示 Math的使用
        //目标 了解Math常见的方法
        // pulic static int abs(int a)// 求该数的绝对值
        System.out.println(Math.abs(-5));//5
        System.out.println(Math.abs(3.14));//3.14
        System.out.println(Math.abs(-1.1));//1.1
        System.out.println("-----------------");
        // 向上取整  小数 ceil(小数)
        System.out.println(Math.ceil(4.99));//5.0
        System.out.println(Math.ceil(-3.14));//-3.0
        System.out.println(Math.ceil(4.0));// 4.0
        System.out.println("-----------------");
        // 向下取整  floor
        System.out.println(Math.floor(4.99));//4.0
        System.out.println(Math.floor(-3.14));//-4.0
        System.out.println(Math.floor(-4.0));//-4.0
        System.out.println("-----------------");
        //四舍五入   round 把小数四舍五入成整数
        System.out.println(Math.round(3.4999));// 3
        System.out.println(Math.round(3.5));//  4
        System.out.println(Math.round(-3.6));// -4
        System.out.println("-----------------");
        // max min
        System.out.println(Math.max(3,4));//4
        System.out.println(Math.min(3,4));//3
        System.out.println("-----------------");
        // a的b次方  pow(a,b)
        System.out.println(Math.pow(2,10));
        // random 随机数 [0.0 , 1.0)
        System.out.println(Math.random());
       }
}

4.System类        

       java常用API,例Object,Objects,Math,System,Arrays,BigDecinmal_第4张图片java常用API,例Object,Objects,Math,System,Arrays,BigDecinmal_第5张图片

package com.itheima.day02.teacher.api02;

public class SystemDemo {

    public static void main(String[] args) {
        // static void exit(int status)  终止当前的jvm 后面的代码不再执行了
        //
//        System.exit(0);//人为进行停止虚拟机
        System.exit(0);//系统内存不够了...
        // static long currentTimeMillis() 返回当前时间的毫秒值
        //   1秒 = 1000毫秒  毫秒值 指的是 与计算机的 时间原点 为基准的时间区间值。
        long l = System.currentTimeMillis();
        System.out.println(l);

    }
}

   5.Arrays类

        Arrays是操作数组的工具类,它可以很方便的对数组中的元素进行遍历、拷 贝、排序等操作

java常用API,例Object,Objects,Math,System,Arrays,BigDecinmal_第6张图片

6.BigDecimal    

        作用,浮点数加减乘除会出现失真情况,浮点数基本数据类,转成引用类型BigDecimal就不会报错(比如我们的微信转账角分,就是先转整分,在转会double,保留两位小数,下舍入)

java常用API,例Object,Objects,Math,System,Arrays,BigDecinmal_第7张图片

BigDeciaml的常用方法

      java常用API,例Object,Objects,Math,System,Arrays,BigDecinmal_第8张图片

package com.itheima.day02.teacher.api02;

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

public class BigDecimalDemo {

    public static void main(String[] args) {

        System.out.println(0.1 + 0.2);// 0.3
        System.out.println(1.0 - 0.32);//0.68
        System.out.println(1.015 * 100);//101.5
        System.out.println(1.301 / 100);//0.01301
        System.out.println("=====================");

        // 目标:掌握BigDecimal进行精确运算的方案。
        double a = 0.1;
        double b = 0.2;

        // 1、把浮点型数据封装成BigDecimal对象,再来参与运算。
        // a、public BigDecimal(double val) 得到的BigDecimal对象是无法精确计算浮点型数据的。 注意:不推荐使用这个,
        // b、public BigDecimal(String val)  得到的BigDecimal对象是可以精确计算浮点型数据的。 可以使用。
        // c、public static BigDecimal valueOf(double val): 通过这个静态方法得到的BigDecimal对象是可以精确运算的。是最好的方案。
        BigDecimal a1 = BigDecimal.valueOf(a);
        BigDecimal b1 = BigDecimal.valueOf(b);


        // 2、public BigDecimal add(BigDecimal augend): 加法
          // a1+b1
        BigDecimal c1 = a1.add(b1);
        System.out.println(c1);

        // 3、public BigDecimal subtract(BigDecimal augend): 减法
        BigDecimal c2 = a1.subtract(b1);
        System.out.println(c2);

        // 4、public BigDecimal multiply(BigDecimal augend): 乘法
        BigDecimal c3 = a1.multiply(b1);
        System.out.println(c3);

        // 5、public BigDecimal divide(BigDecimal b): 除法
        BigDecimal c4 = a1.divide(b1);
        System.out.println(c4);

        System.out.println("================================");

        // 6、public BigDecimal divide(另一个BigDecimal对象,精确几位,舍入模式) : 除法,可以设置精确几位。
        BigDecimal d1 = BigDecimal.valueOf(1.0);
        BigDecimal d2 = BigDecimal.valueOf(3.0);
        BigDecimal f = d1.divide(d2,2, RoundingMode.HALF_UP);  //精确小数点后2位,舍入模式,看源码自选方法
        System.out.println(f);


        // 7、public double doubleValue() : 把BigDecimal对象又转换成double类型的数据。
        double v = f.doubleValue();
        System.out.println(v);
    }
}

你可能感兴趣的:(java,开发语言)