黑马程序员技术交流社区

标题: 常见API [打印本页]

作者: 大蓝鲸Java    时间: 2019-7-12 12:29
标题: 常见API
1,Math
        应用场景:
                只要是数学运算就可以使用到这个类。
        特点:
                所有的方法都是静态的,需要用类名点去调用。

        需要掌握的:
                Math.PI;//圆周率
                返回值 = Math.abs(数值); //取绝对值

                double cbrt = Math.cbrt(8); //开三次方。得到立方根
                double sqrt = Math.sqrt(4);      //开平方根。


                ceil(double a) //向上取整   --- 进一法
                floor(double a) //向下取整  --- 去尾法

                pow(double a, double b) //返回 a的b次方
                //求圆的面积:
                        Math.PI * Math.pow(r,2);




,2.System类
        掌握:
                System.exit(0); //停止虚拟机。

                System.currentTimeMillis(); //返回当前时间的毫秒值。
                什么是毫秒?
                        1秒 = 1000 毫秒 //因为window系统只能精确到毫秒。

                计算机中的时间原点:
                        1970年1月1日 00:00:00 但是我天朝大国是在东八区。所以有时差。
                        针对于我天朝大国来讲,时间原点 1970年1月1日 08:00:00

                //所以,这个System.currentTimeMillis()返回是从时间原点开始到现在的这个时间过了多少毫秒。返回值是一个long类型的。

        了解:
                arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
                //用来进行数组的拷贝。

                //后面会讲一些源码,在源码中,有的就使用到了这个方法。

                案例:
                             // arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
        //src 源数组
        //srcPos 从源数组的第几个索引开始拷贝
        //dest 拷贝目的地
        //destPos 拷贝到哪个索引开始
        //length 拷贝几个

        int [] arr1 = {1,2,3,4,5};
        int [] arr2 = new int[5];
        System.arraycopy(arr1,0,arr2,0,arr1.length);
        for (int i = 0; i < arr2.length; i++) {
            System.out.println(arr2[i]);
        }

3.Object类
        Object类是所有类的直接或者间接父类。
        如果一个类没有指定继承关系,此时虚拟机默认认为这个类继承于Object类。
        所有的类都可以使用Object中的方法。
        所有的对象都可以使用Object类型的变量去接收。



4.Object类中的toStirng方法
        Student s = new Student();
        ArrayList<String> list = new ArrayList<>();
        String str = "abc";
       
        System.out.println(s);//地址值
        System.out.println(str);//字符串的属性值
        System.out.println(list);//集合中的元素值


        为什么我们自己写的类,创建出来的对象,直接打印是一个地址值。
        而Java中提供的类,创建出来的对象,直接打印不是地址值呢?
        System.out.println(s);



总结:
        Student s = new Student();
        System.out.println(s);
        打印一个对象,其实就是先通过这个对象调用他的toString方法,再打印这个toString方法的返回值。


        所以当我们打印一个学生对象时。其实就是调用了Student类中的toString方法。
        我们之前没有在Student类中写toString方法,所以到父类Object中找。
        而Object的toString方法返回的就是对象的地址值。


        而,String类,ArrayList类,重写了toString方法,所以当打印一个字符串或者打印一个集合的时候就是属性值。


简单来说:
        要知道什么就可以了?
        "以后show方法一律写成toString"


5,Object类中的equals方法
        不是每次都必须重写的。
        当我们需要比较对象内部的属性值时需要重写。

        equals方法:
                只能比较引用数据类型。
                如果这个类里面重写了equals方法,那么比较的就是内部的属性值。
                如果这个类没有重写equals方法,那么使用的就是父类Object类中的equals方法,比较的就是地址值。


        案例:
                String s1 = "abc";
                String s2 = new String("abc");
                System.out.println(s1.equals(s2));//true 因为String类重写了。

                StringBuilder sb1 = new StringBuilder("abc");
                StringBuilder sb2 = new StringBuilder("abc");
                System.out.println(sb1.equals(sb2));//false 因为StringBuilder类没有重写。








欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2