第12章 Object类,Math类,System类

作者: yangsg | 来源:发表于2019-04-10 15:18 被阅读443次

1. Object类

java.lang.Object类是所有引用类型的父类。定义在Object类中的方法,在所有的类中都会被继承到

1.1 构造方法

new Object(); 构建一个普通的Object对象

1.2 API方法
  • equals(Object o)返回值:boolean
    比较当前对象与参数对象o,是否“相等”
    Object类equals方法的源码

可以看出,在Object类中equals方法的功能与==是一样的
有些类在继承Object类后,会对equals方法进行重写,比如java.lang.String

String类重写了equals方法

x instanceof A 判断对象x是否是类A的对象
instanceof的作用判断x是否为A的一个实例
String类的equals方法比较的是String的内容是否一致。

可以通过重写equals方法,达到判断自己的类是否“相等”的逻辑

  • toString()返回值:String
    显示当打印该类的对象时,输出的字符串内容。
    学生类
public class Student {
    
    public int sno;
    public String sname;

    @Override
    public String toString() {
        return sno+"\t"+sname;
    }   
}

测试类

public class Test2 {

    public static void main(String[] args) {
        Student s1 = new Student();
        s1.sno = 101;
        s1.sname = "杨超越";
        
        System.out.println(s1);//默认调用了toString
    }
}
运行结果

其他API方法参照API文档

2. Math类

Math类提供了基本的数学操作。如基本指数、对数、平方根和三角函数。
它将构造方法私有,不能创建Math类的实例对象,Math类本身还被final修饰,不能被继承。

2.1 静态常量
  • PI类型是double
    圆周率的近似值

  • E类型是double
    自然对数底数的近似值

2.2 静态方法
  • abs(double | float | int | long a); 返回参数对应类型double | float | int | long
    计算参数a的绝对值并返回
  • cbrt(double a)返回值:double
    计算参数a的立方根并返回
double a = Math.cbrt(8); //结果是2
  • sqrt(double a)返回值:double
    计算参数a的平方根并返回
double a = Math.cbrt(4); //结果是2
  • ceil(double a)返回值:double
    返回比a大的最小整数(进一法)
  • floor(double a)返回值:double
    返回比a小的最大整数(退一法)
  • round(double a)返回值:double
    对a进行四舍五入
  • pow(double a, double b)返回值:double
    计算a的b次方
double a = Math.pow(2,3); //结果是8
  • random() 返回值:double
    返回[0,1)区间的随机浮点数

3. System类

System也是一个私有构造方法并且是final的类,它提供了一些静态属性和方法完成一些常规功能

3.1 静态属性
  • in 标准输入流 主要指控制台输入
  • out 标准输出流 主要指控制台输出
  • err 标准错误输出流 一般用于显示异常信息
3.2 静态方法
  • arraycopy(Object src, int srcPos, Object dest, int destPos, int length)返回值:void
    数组拷贝方法,在src数组中的srcPos位置起,复制length个长度的元素至dest数组的destPos位置。
int[] a = {0,1,2,3,4,5,6,7,8,9};
int[] b = {0,0,0,0,0,0,0,0,0,0};
System.arraycopy(a, 3, b, 3, 5);

for(int i = 0; i < b.length; i++) {
    System.out.print(b[i]+"\t");
}
System.out.println();

运行结果


运行结果

如果b的位置不足以放入拷贝内容,会抛出下标越界异常


  • currentTimeMillis()返回值:long
    由时间原点(1970年1月1日0时0分0秒 GMT+0)(1970年1月1日8时0分0秒 GMT+8)至当前瞬间的所经历的毫秒数

一般使用这个方法可以计算一段程序的执行时间。

long l1 = System.currentTimeMillis();
int sum = 0;
for(int i = 0; i < 10000; i++) {
    sum += i;
}
long l2 = System.currentTimeMillis();
System.out.println("程序耗时:"+(l2-l1)+"ms");

  • exit(int status)返回值:void
    退出Java虚拟机(关闭当前的Java程序)
    System.exit(0); 正常退出虚拟机
    System.exit(-1); 异常退出虚拟机

  • gc()返回值:void
    呼唤垃圾回收线程执行垃圾回收任务,执行后可能没有效果

  • getProperties() 返回值:Properties
    得到系统的当前各项属性的集合,根据key值得到具体Java安装信息和操作系统的基本信息
Properties p = System.getProperties();
String value = p.getProperty("key");  
System.out.println(value);

key可以使用下图中的具体内容进行替代


key值的一览

4. Properties类(了解)

Properties类是一种“键-值对”存储结构。一个数据包含“Key-Value”两部分,不同数据间,Key不能重复。
myfile.properties配置文件


配置文件内容

读取配置文件(Test类必须与配置文件在同一个包下)

public class Test {
    public static void main(String[] args) throws IOException {
        Properties p = new Properties();
        p.load(Test.class.getResourceAsStream("myfile.properties"));
        String username = p.getProperty("username");
        String password = p.getProperty("password");
        String sex = p.getProperty("sex");
        
        System.out.println(username);
        System.out.println(password);
        System.out.println(sex);
    }
}

运行结果


运行结果

相关文章

网友评论

    本文标题:第12章 Object类,Math类,System类

    本文链接:https://www.haomeiwen.com/subject/dyvniqtx.html