java13-API-Math-System-Object(toString-equals)-冒泡排序-Arrays

java13-API-Math-System-Object(toString-equals)-冒泡排序-Arrays,第1张

java13-API-Math-System-Object(toString-equals)-冒泡排序-Arrays Math 概述

软件包是java.lang 所以使用它不需要导包public final class Math 说明Math是最终类,不能被继承任何类都直接或间接继承于Object类Math类包含执行基本数字运算的方法Math类中没有构造方法,且成员变量和成员方法都是用static修饰的(也就是静态的),可以直接使用类名进行访问。 常用方法(8) 方法名说明public static int abs(int a)返回参数的绝对值public static double ceil(double a)返回大于或等于参数的最小整数,显示为double类型,xxx.0public static double floor(double a)返回小于或等于参数的最小整数,显示为double类型,xxx.0public static int round(float a)按照四舍五入返回最接近参数的intpublic static int max(int a,int b)返回两个int值的较大值public static int min(int a,int b)返回两个int值的较小值public static double pow(double a,double b)返回a的b次幂的值public static double random()返回值为double的正值,[0.0,1.0)

案例:

public class MathDemo {
    public static void main(String[] args) {
        System.out.println(Math.abs(88));//88
        System.out.println(Math.abs(-88));//88
        System.out.println("-------------");
        System.out.println(Math.ceil(12.33));//13.0
        System.out.println(Math.ceil(12.55));//13.0
        System.out.println("--------------");
        System.out.println(Math.floor(12.33));//12.0
        System.out.println(Math.floor(12.55));//12.0
        System.out.println("--------------");
        System.out.println(Math.min(5, 10));//5
        System.out.println(Math.max(5, 10));//10
        System.out.println("---------------");
        System.out.println(Math.round(12.55));//13
        System.out.println(Math.round(12.33));//12
        System.out.println("----------------");
        System.out.println(Math.pow(2.0, 3.0));//8.0
        System.out.println(Math.random());
    }
}
System 概念

软件包是java.lang,说明不用导包显示是public final class System 说明System是最终类,不能被实例化System类包含几个有用的类字段和方法,并且不能被实例化,也就是不能通过System类创建对象System类中的所有成员都被static修饰,可以直接通过System类名.成员访问 常用方法 方法名说明public static void exit(int status)终止当前运行的java虚拟机,非零表示异常终止public static long currentTimeMillis()返回当前时间(以毫秒为单位)= 当前时间与1970年之间的毫秒值

案例:

System.out.println("开始");
// 调用exit方法,不会输出结束两个字,因为运行exit之后,java虚拟机就关了
System.exit(0);
System.out.println("结束");
// 不调用exit方法,则输出 开始、结束字样。
//System.currentTimeMillis() 的应用
System.out.println(System.currentTimeMillis());
// 看现在时间距离1970年有多少
System.out.println(System.currentTimeMillis()*1.0 / 1000/60/60/24/365);
//计算一段程序耗时多长时间
long start = System.currentTimeMillis();
for(int i = 0; i<10000;i++){
    System.out.println(i);
}
long end = System.currentTimeMillis();
System.out.println("耗时: " + (end-start) + "毫秒");//386 视频中是87
Object 概述

软件包 java.lang,所以使用不用导包public class Object 可以被继承类Object 是类层次 结构的根,每个类都有Objcet作为父类(超类),所有对象(包括数组)都实现了这个类的方法。有无参构造方法Object()。子类访问父类的构造方法,默认第一行是super(),是一个空参的,默认访问父类的无参构造方法。原因是:它们的顶级父类Object类只有无参构造方法。 常用方法 方法名说明public String toString()返回对象的字符串表示形式;
建议所有子类重写该方法,自动生成,快捷键是alt + insertpublic boolean equals(Object obj)比较对象是否相等;
默认比较地址,重写可以比较内容,自动生成alt + insert toString方法

①看方法的源码,选中方法,按下ctrl + B
②System.out.println(对象名) ;对象名.toString  这种方式输出的内容不是能看的懂的内容,建议在创建类的时候,直接重写toString方法
toString方法的重写 快捷键 = alt + insert
public class Student {
    private String name;
    private int age;

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

    public void setName(String name){
        this.name = name;
    }
    public String getName(){
        return name;
    }
    public void setAge(int age){
        this.age = age;
    }
    public int getAge(){
        return age;
    }

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

public class StudentDemo {
    public static void main(String[] args) {
        Student s = new Student();
        s.setName("汪苏泷");
        s.setAge(33);
        System.out.println(s);//com.itheima130.test2.Student@1b6d3586
        //说明println方法底层调用的还是toString方法。
        System.out.println(s.toString());//com.itheima130.test2.Student@1b6d3586
        //上述两者输出内容一致
        // 此时输出s的内容是看不懂的内容。一般的方式是重写toString方法,在Student类中
        //在Student类中重写toString方法后,输出内容为Student{name='汪苏泷', age=33}


        //输出内容是这个 具体的原因是:


    }
}
equals方法

案例:

public class StudentDemo {
    public static void main(String[] args) {
        Student s1 = new Student();
        s1.setName("汪苏泷");
        s1.setAge(33);

        Student s2 = new Student();
        s2.setName("汪苏泷");
        s2.setAge(33);

        //比较两个对象内容是否相同
        System.out.println(s1 == s2);//false
        //原因:类创建对象,对象名在栈内存中表示是堆内存中对象存储区域的地址,对象不同,则对应的地址就不同,所以s1和s2不一样
        System.out.println(s1.equals(s2));//false
        //原因:


//要想实现比较对象的内容是否相等 重写equals方法即可
        //自动生成即可 alt + insert
        //修改之后 可以实现对象内容是否相等的比较
    }
}

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

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

    public Student() {
    }

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

    @Override
    public boolean equals(Object o) {
        //    执行s1.equals(s2)
//        那么方法中的this==》s1;o ==》 s2

        // 判断this 和 o 的地址是否相同,相同则返回true
        if (this == o) return true;
        // 逻辑或 (前)判断o是否为null
        // (后)getClass拿的是对象的字节码文件,简单来说就是判断这两个对象是否来自同一个类
        if (o == null || getClass() != o.getClass()) return false;
        //向下转型,将对象o强制转换为Student类型
        Student student = (Student) o;
        // 比较年龄是否相同,age表示的this.age ==》 s1.age 而student.age ==》 s2.age 不相等则返回false
        if (age != student.age) return false;
        //比较名字是否相同,name表示是this.name 先判断是否为null,不为null再使用【字符串1.equals(字符串2)】比较name字符串是否相等
        return name != null ? name.equals(student.name) : student.name == null;
    }
}
Arrays 冒泡排序

排序: 将一组数据按照固定的规则进行排序
冒泡排序: 一种排序的方式,对要进行排序的数据中相邻的数据进行两两比较,将较大的数据放在后面,依次对所有数据进行 *** 作,直至所有数据按要求完成排序。
原理:
①如果有n个数据进行排序,总共需要比较n-1次
②每一次比较完毕,下一次的比较就会少一个数据参与
案例:

public class ArrayDemo {
    public static void main(String[] args) {
        // 定义一个数组
        int[] arr = {24,69,80,57,13};
        System.out.println("排序前:" + arrayToString(arr));
        arrayToReversear(arr);
        System.out.println("排序后:" + arrayToString(arr));

    }
    //把数组中的元素按照指定的规则组成一个字符串:[元素1,元素2,...,元素n]
    public static String arrayToString(int[] arr){
        StringBuilder sb = new StringBuilder();
        sb.append("[");
        for (int i = 0 ; i  arr[j + 1]) {
                    tep = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = tep;
                }
            }
        }
    }
}
Arrays类 概述

软件包是 java.util 使用的时候需要导包该类包含用于 *** 作数组的各种方法(如排序和搜索)Arrays该类也有无参构造方法,但其中的成员都是用static修饰的,可以直接使用(Arrays.成员)对Arrays中的成员进行访问。为防止使用者通过创建对象的方式对成员进行访问,所以Arrays的无参构造方法采用修饰符private修饰。工具类的设计思想:构造方法用private修饰,防止外部通过类创建对象对成员进行访问;成员用public static 修饰,方便通过类名.成员调用成员。 常用方法 方法名说明public static String toString(int[] arr)返回指定数组的内容的字符串形式public static void sort(int[] arr)按照数字顺序排列指定的数组(从小到大)

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zaji/5719377.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-18
下一篇2022-12-17

发表评论

登录后才能评论

评论列表(0条)

    保存