JAVA面向对象进阶--常用API--2023/3/8

一.问题导航

1.Math类的常用方法

二.API--Math

package com.cn.api;

public class Matha {
    public static void main(String[] args) {
        //abs获取绝对值参数
        System.out.println(Math.abs(88));   //88
        System.out.println(Math.abs(-88));   //88
        //ceil向上取整
        System.out.println(Math.ceil(12.56));   //13.0
        System.out.println(Math.ceil(-12.65));   //-12.0
        //floor向下取整,去尾法,去掉小数
        System.out.println(Math.floor(12.3));  //12.0
        System.out.println(Math.floor(-12.2));  //13.0
        //round四舍五入
        System.out.println(Math.round(12.36));  //12
        System.out.println(Math.round(12.66));  //13
        //取最大值
        System.out.println(Math.max(1,2));   //2
        //取最小值
        System.out.println(Math.min(1,3));  //1
        //获取a的b次幂
        System.out.println(Math.pow(2,3));  //8.0
        //如果第二个参数是0~1之间的小数
        //建议:第二个参数,一般大于等于1的正整数
        System.out.println(Math.pow(4,0.5));  //2.0
        //sqrt平方根
        System.out.println(Math.sqrt(4));    //2.0
        //cbrt立方根
        System.out.println(Math.cbrt(8));   //2.0
        for( int i=0;i<10;i++)
        {
            //Math.random获取的是[0.0~1.0)之间的随机数
            System.out.println(Math.floor(Math.random()*100)+1);
        }

二.API--System

package com.cn.api;
public class Systemd {
    public static void main(String[] args) {
       /* 方法的形参,里面是一个状态码,有两种情况,一个是0,表示当前虚拟机正常停止,另一个非0,表示当前虚拟机是异常停止
        System.exit(0);
        System.out.println("看看我执行了吗");*/

        //-------------------------------------------------------------
        
       /* 可以用于获取程序运行的总时间
        long l = System.currentTimeMillis();
        System.out.println(l);*/

        //-------------------------------------------------------------

  /*      public static void arraycopy(数据源数组,起始索引,目的地数组,起始索引,拷贝个数)
        拷贝数组
        细节一:如果数据源数组和目的地数组都是基本数据类型,那么两者的类型必须保持一致,否则会报错
        细节二:在拷贝的时候需要考虑数组的长度,如果超出范围也会报错
        细节三:如果数据源数组和目的地数组都是引用数据类型,那么子类类型可以赋值给父类类型
        把arr1中的数据拷贝到arr2中
        参数一:数据源数组,要拷贝的数据从那个数组中来
        参数二:从数据源数组的第几个索引开始拷贝
        参数三:目的地,我要把数据拷贝到那个数组中
        参数四:目的地数组的索引
        参数五:拷贝的个数,我一共要拷贝几个*/
        int[] arr1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        int[] arr2 = new int[10];
        System.arraycopy(arr1, 0, arr2, 0, 10);
        for (int i = 0; i < arr2.length; i++) {
            System.out.println(arr2[i]);
        }
    }
}
/**
 * 判断一个数是否为质数
 */
package com.cn.api;
public class Prime {
    public static void main(String[] args) {
   //判断1~10000之间有多少个质数
        long start=System.currentTimeMillis();
        for (int i = 1; i <=10000; i++)
        {
            boolean flag = isPrime2(i);//把i传递过去,方法会给我们一个boolean的结果
            if (flag==true)
            {
                System.out.println(i+"是质数");
            }
        }
        long end = System.currentTimeMillis();
        //获取程序运行的总时间
        System.out.println(end - start);

    }
    public static boolean isPrime1(int number) {
        for (int i = 2; i <number; i++) {
            if (number % i == 0) {
                return false;
            }
        }
        return true;
    }
    public static boolean isPrime2(int number) {
        for (int i = 2; i <=Math.sqrt(number); i++) {
            if (number % i == 0) {
                return false;
            }
        }
        return true;
    }
}
package com.cn.api;
public class Test {
    public static void main(String[] args) {
        Student s1 = new Student("王一", 18);
        Student s2 = new Student("王二", 20);
        Student s3 = new Student("王三", 22);
       // 细节三:如果数据源数组和目的地数组都是引用数据类型,那么子类类型可以赋值给父类类型
        Student[] arr1={s1,s2,s3};
        //Student[] arr2=new Student[3];

        // 细节三:如果数据源数组和目的地数组都是引用数据类型,那么子类类型可以赋值给父类类型
        Person[] arr2=new Student[3];
        //把arr1中的地址值赋值给arr2中
        System.arraycopy(arr1,0,arr2,0,3);
        for (int i = 0; i < arr2.length; i++) {
            //Student s = arr2[i];
            Student s = (Student) arr2[i];//强转
            System.out.println(s.getName()+","+s.getAge());
        }
    }
}
    class Person{
      private String name;
       private int age;
        public Person() {
        }

        public Person(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;
        }
    }
    class Student extends Person{
        public Student() {
        }

        public Student(String name, int age) {
            super(name, age);
        }
    }

三.API--Runtime

package com.cn.api;
import java.io.IOException;
public class RuntimeDemo {
    public static void main(String[] args) throws IOException {
        //1.获取runtime对象
      /*  Runtime r1=Runtime.getRuntime();
        Runtime r2=Runtime.getRuntime();
        System.out.println(r1==r2);*/
        //exit停止虚拟机
//        Runtime r1=Runtime.getRuntime();
//        r1.exit(0);
//        System.out.println("看看我执行了吗");

        //获得CPU的线程数
        System.out.println(Runtime.getRuntime().availableProcessors());  //12

        //总内存大小,单位byte字节
        System.out.println(Runtime.getRuntime().maxMemory()/1024/1024);  //1788

        //已经获取的总内存大小,单位byte字节
        System.out.println(Runtime.getRuntime().totalMemory()/1024/1024);  //121

        //已经获得的剩余内存的大小,单位byte字节
        System.out.println(Runtime.getRuntime().freeMemory()/1024/1024);  //117
        //运行cmd命令
        //shutdown:关机
        //加上参数才能执行
        //-s:默认一分钟后关机
        //-s-t:指定关机时间
        //-a:取消关机操作
        //-r:关机并重启
        Runtime.getRuntime().exec("shutdown -a");
    }
}

 四.API--Object

Object是Java中的顶级父类,所有的类都间接或间接继承于Object类
Object类中的方法可以被所有子类访问

toString方法的结论

重写一个对象,要想看到属性值,则重写toString方法,

在重写的方法中,把对象的属性值进行拼接

equals的方法结论如果没有重写equals方法,那么默认使用Object方法中去比较,比较的是地址值是否相等
一般都会重写方法,重写方法之后比较的就是对象内部的属性值
package com.cn.api;
public class ObjectDemo {
    public static void main(String[] args) {
        String s = "abc";
        StringBuilder sb=new StringBuilder("abc");
        System.out.println(s.equals(sb));  //false

       /* 因为equals方法是被s调用的,而s是字符串,
        所以equals要看String类中的
        字符串中的equals方法,先判断参数是否为字符串
        如果是字符串,要比较内部的属性
        但是如果参数不是字符串,直接返回false
*/
        System.out.println(sb.equals(s)); //false

        /*因为equals方法是被sb调用,而sb是stringbuilder
         所以这里的equals方法要看Stringbuilder中的equals方法
        那么在stringbuilder中没有重写equals方法
        使用object中的
        在object当中使用的是==号比较两个对象的地址值
        而这里的s和sb记录的地址值是不一样的,所以结果返回false*/
    }
}

四.API--BigInteger 

1.没有构造方法如何使用类中的成员

看类的成员是否都是静态的,如果是,通过类名就可以直接调用

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值