b站课程原地址:https://www.bilibili.com/video/BV18J411W7cE?p=194
1 Math
Math类概述
- 在java.lang包下,不需要导包
- public final class Math:没有子类; 继承自Object
- Math包含执行基本数字运算的方法,如基本指数,对数,平方根和三角函数
- 创建Math对象,无构造方法???其成员变量和成员方法都是用static修饰的,可以直接通过类名访问:“Math.”
- 常用方法:float类型: 12.56F
- 可通过强转为int型来获取整数部分
2 System
System类概述
-
在java.lang包下,不需要导包
-
public final class System:最终类,没有子类,继承自Object
-
不能被实例化,成员都被static修饰,不需要创建对象,直接通过类名访问
-
public static void exit ( int status):终止当前运行的Java虚拟机;非零状态码表示异常终止
-
public static long currentTimeMillis():返回当前时间(以毫秒为单位)与1970年1月1日之间的毫秒值
3 Object
- 在java.lang包下
- public class Object:类Object是类层次结构的根,每个类都有Object作为超类。所有对象(包括数组)都实现了这个类的方法。
- 构造方法:public Object()
- 面向对象中,为什么子类的构造方法默认访问的是父类的无参构造方法?因为它们的顶级父类只有无参构造方法
- 看方法的源码:选中方法,ctrl+B;选中->右击->go to->Declaration or Usages
- toString()方法:输出对象其实就是调用了底层的toString()方法
-
- 学生类继承自Object(),可以调用toString()方法:返回的是对象的字符串表示形式,所有的子类重写该方法
- 子类可以自动生成toString()方法,在子类中 Alt+Insert:生成toString()方法
- Object类中的equals()方法:
- s1和s2均为new出来的Student对象,用“==”比较是比较了s1和s2的地址值,输出为false
- equals()底层还是使用了“==”来比较两个对象,因此还是输出false
- 需要重写equals()方法:可以在类中 Alt+Insert,生成equals()+hashCode()方法,可选择模板 IntelliJ Default
- 其中name.equals(Student.name)中的equals()方法是String类中的equals()方法,比较的是两者的内容是否相同,相同则返回true
4 Arrays
- 冒泡排序
- 对要进行排序的数据中相邻的数据进行两两比较,将较大的数据放在后面(若从小到大排序),依次对所有的数据进行操作,直至排序完成
- 比较的次数:arr.length-1;每完成一次比较,就有一个元素不用再参与比较
- Arrays类
- 在java.util下,因此使用需要导包
- 成员都用static修饰,可以直接通过类名调用
其实Arrays、System、和Math在帮助文档中没有构造方法,但是它们在IDEA中的源码提供了一个private修饰的构造方法,其成员同样是使用public static修饰的,强制通过类名调用。