一.问题导航
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.没有构造方法如何使用类中的成员
看类的成员是否都是静态的,如果是,通过类名就可以直接调用 |