194 常用API
Math
System
Object
Arrays
基本类型包装类
日期类
Math
(查看帮助文档)
属于lang包
package lang
pubilc class Math extends Object
Math包含执行基本数字运算的方法,如基本指数、对数、平方根、三角函数
> static修饰的变量、方法,可以无需构造方法,直接通过类名被访问
Math类中没有构造方法,但它的字段和方法是static修饰的,故可以通过类名访问这些变量、方法
--------------------------------------------------------------
package itheimaE194;
public class MathDemo {
public static void main(String[] args) {
String line="---";
System.out.println("Math.abs(int n):返回参数的绝对值。"+"5,-5会变成:"+Math.abs(5)+","+Math.abs(-5));
System.out.println(line);
System.out.println("Math.ceil(double n):返回大于等于参数的最小double数,也就是一个整数。"+"double3.4会变成:"+Math.ceil(3.4));
System.out.println(line);
System.out.println("Math.floor(double n):返回小于等于参数的最小double数,也就是一个整数。"+"double3.4会变成:"+Math.floor(3.4));
System.out.println(line);
System.out.println("Math.round(float n):四舍五入。"+"float3.4会变成:"+Math.round(3.4)+",float3.6会变成:"+Math.round(3.6));
System.out.println(line);
System.out.println("Math.max(int n,int o):比较大的数。"+"7,8谁大:"+Math.max(7,8));
System.out.println(line);
System.out.println("Math.min(int n,int o):比较小的数。"+"7,8谁小:"+Math.min(7,8));
System.out.println(line);
System.out.println("Math.pow(double n,double o):a的b次幂。"+"double2.1的double3次幂。"+Math.pow(2.1,3.0));
System.out.println(line);
System.out.println("Math.random():double的正值。"+"0<=n<=1,n取不到1。"+Math.random());
System.out.println(line);
}
}
--------------------------------------------------------------
Math.abs(int n):返回参数的绝对值。5,-5会变成:5,5
---
Math.ceil(double n):返回大于等于参数的最小double数,也就是一个整数。double3.4会变成:4.0
---
Math.floor(double n):返回小于等于参数的最小double数,也就是一个整数。double3.4会变成:3.0
---
Math.round(float n):四舍五入。float3.4会变成:3,float3.6会变成:4
---
Math.max(int n,int o):比较大的数。7,8谁大:8
---
Math.min(int n,int o):比较小的数。7,8谁小:7
---
Math.pow(double n,double o):a的b次幂。double2.1的double3次幂。9.261000000000001
---
Math.random():double的正值。0<=n<=1,n取不到1。0.4445636009040983
---
195 System
(查看帮助文档)
属于lang包
package lang
pubilc class System extends Object
System类包含几个有用的类字段和方法,它不能被实例化(是static的,因此可以直接使用类名进行访问)
System类提供的设施包括标准输入、标准输出、错误输出流;访问外部定义的属性和环境变量;一种加载文件和库的方法;以及用于快速复制阵列的一部分的实用方法。
public static exit(0);终止当前运行的JVM,参数是状态代码;按惯例,非零状态码表示异常终止,0代表一般终止。该方法在runtime调用exit方法,不返回。
System.exit(n);==runtime.getRuntime().exit(n);
public static long correctTimeMillis();返回当前时间(精确到毫秒),是当前时间与1970-1-1的时间
project myJava2021
module mySystem
package e195system
class SystemDemo
--------------------------------------------------------------
package e195system;
//195 System
public class SystemDemo {
public static void main(String[] args) {
//public static long correctTimeMillis();
//返回当前时间(精确到毫秒),是当前时间与1970-1-1的时间
System.out.println("System.currentTimeMillis()\t"+System.currentTimeMillis());
System.out.println("from now\t"+System.currentTimeMillis()*1.0/1000/60/60/24/365+"years");
//执行一个简单的for循环需要多久?
long beginTime = System.currentTimeMillis();
for(int i = 0;i<10000;i++){
System.out.println(i);
}
long endTime = System.currentTimeMillis();
System.out.println("执行一个简单的for循环需要"+(endTime-beginTime)+"毫秒");//输出了93
//public static exit(0);终止当前运行的JVM,参数是状态代码;
// 按惯例,非零状态码表示异常终止,0代表一般终止。
// 该方法在runtime调用exit方法,不返回。
System.out.println("begin");
System.exit(0);
System.out.println("end");
}
}
196 Object类的toSpring()方法
object是所有类的超类,内含一个无参构造方法
2021.9.16
public String toString() | 返回对象的字符串表示形式,建议所有子类重写该方法,自动生成 原有表示形式:getclass().getName() + "@" + Integer.toHexString(hashCode()) 建议的重写形式:generate->toString,选中参数,确定 |
public boolean equals(Object obj) | 比较对象是否相等,默认比较对象的地址,重写后能够比较对象的内容,自动生成 |
--------------------------------------------------------------
myJava2021
myObject
it01e196
--------------------------------------------------------------
package it01e196;
public class Student {
private String name;
private int age;
public Student() {
}
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;
}
//重写带参的toString方法,让toString输出参数,而不是getclass().getName() + "@" + Integer.toHexString(hashCode())
//generate->toString,选中参数,确定
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
--------------------------------------------------------------
package it01e196;
import java.io.PrintStream;
public class ObjectDemo {
public static void main(String[] args) {
Student s1 = new Student();
s1.setName("林");
s1.setAge(30);
System.out.println(s1);
System.out.println(s1.toString());//由此可见,输出对象名==按toString方法输出内容
//it01e196.Student@776ec8df
//为什么输出这个?——查看方法源码->getclass().getName() + "@" + Integer.toHexString(hashCode())
//如何查看方法的源码?——选中方法名,双击,选择go to,或者选中方法名,点击ctrl B
//查看源码可知,这次输出依次调用了println、valueOf、toString,共3个方法
// 建议所有子类覆盖此方法(toString),覆盖==重写
// # ---println---
// public void println(Object x) {
// String s = String.valueOf(x);
// if (getclass() == PrintStream.class) {
// // need to apply String.valueOf again since first invocation
// // might return null
// writeln(String.valueOf(s));
// } else {
// synchronized (this) {
// print(s);
// newLine();
// }
// }
// }x->s1
// # ---valueOf---
// public static String valueOf(Object obj) {
// return (obj == null) ? "null" : obj.toString();
// }obj->x
// # ---toString---
// public String toString() {
// return getclass().getName() + "@" + Integer.toHexString(hashCode());
// }getclass().getName() + "@" + Integer.toHexString(hashCode())
//it01e196.Student@776ec8df
}
}
197 object类的equals()方法
--------------------------------------------------------------
myJava2021
myObject
it02e197
--------------------------------------------------------------
package it02e197;
import java.util.Objects;
public class Student {
private String name;
private int age;
public Student() {
}
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;
}
//override equals() in class-Student
//generate,equals and hashcode,next,next,next,finish,delete code of hashcode
@Override
public boolean equals(Object o) {
// this==s1,o==s2,
// compare two address
if (this == o) return true;
// is two parameters null
// is two objects from the same class
if (o == null || getclass() != o.getclass()) return false;
// DOWNWARD TRANSFORMATION:transfer o to Student,Student is s2
Student student = (Student) o;
// compare four variables
return age == student.age && Objects.equals(name, student.name);
}
//System.out.println(s1.equals(s2));//true
}
--------------------------------------------------------------
package it02e197;
public class ObjectDemo {
public static void main(String[] args) {
Student s1 = new Student("Smith",30);
Student s2 = new Student("Smith",30);
//compare the contains of two objects
System.out.println(s1 == s2);//false,the result is from comparing of two object address
System.out.println(s1.equals(s2));//false
//# ---equals()---
// public boolean equals(Object obj) {
// return (this == obj);
// }this->s1,obj->s2
//override equals() in class-Student
}
}