Math
Math 包含執行基本數字運算的方法
沒有構造方法,如何使用類中的成員呢?
看類的成員是否都是靜態的,如果是,通過類名就可以直接調用
Math類的常用方法.png
- 范例
public static void main(String[] args) {
// 絕對值
System.out.println(Math.abs(88));
System.out.println(Math.abs(-88));
// 返回大于或等于參數的最小double值,等于一個整數
System.out.println(Math.ceil(12.34));
System.out.println(Math.ceil(12.56));
}
System
System 包含幾個有用的類字段和方法,它不能被實例化
System類常用方法.png
public static void main(String[] args) {
/* System.out.println("開始");
System.exit(0); // 終止當前運行的 java 虛擬機,非零表示異常終止
System.out.println("結束");*/
System.out.println("---------");
System.out.println(System.currentTimeMillis()); // 返回當前時間毫秒
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) + "秒");
}
Object
Object 是類層次結構的根,每個類都可以講 Object 作為超類,所有的類都直接或間接的繼承該類
構造方法: public Object()
回想面向對象中,為什么說子類的構造方法默認訪問的是父類的無參構造方法?
因為它們的頂級父類只有無參構造方法
public class student {
// 成員變量
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
public String toString() {
return "student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
public static void main(String[] args) {
student s = new student();
s.setName("孫悟空");
s.setAge(30);
System.out.println(s); //com.student@1b6d3586
System.out.println(s.toString()); //com.student@1b6d3586
/*public void println(Object x) { // s = x
String s = String.valueOf(x);
synchronized (this) {
print(s);
newLine();
}
}
public static String valueOf(Object obj) { // obj = s
return (obj == null) ? "null" : obj.toString(); // s是對象,不是null,所以返回obj.toString();
}
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
// com.student@1b6d3586
}*/
}
Object equals
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
public boolean equals(Object o) {
// this = s1
// o = s2
// 比較地址是否相同,如果相同,直接返回true
if (this == o) return true;
// 判斷參數是否為null 判斷兩個對象是否來自同一個類
if (o == null || getClass() != o.getClass()) return false;
// 向下轉型
Student student = (Student) o; // student = s2
// 比較年齡是否相同
if (age != student.age) return false;
// 比較姓名是否相同
return name != null ? name.equals(student.name) : student.name == null;
}
}
public static void main(String[] args) {
Student s1 = new Student();
s1.setName("孫悟空");
s1.setAge(30);
Student s2 = new Student();
s2.setName("孫悟空");
s2.setAge(30);
// 比較兩個對象的內容是否相同
System.out.println(s1 == s2); // false 因為s1 s2 都是地址值,肯定不同
System.out.println(s1.equals(s2)); // false
/*
public boolean equals(Object obj) {
// this = s1
// obj = s2
// 還是比較的地址值
return (this == obj);
}
*/
}
object常用方法.png