【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类


专栏【JavaSE】
喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。
音乐分享【如愿】
欢迎并且感谢大家指出小吉的问题

文章目录

  • System类
    • ⭐exit()
    • ⭐currentTimeMillis()
      • 用处
    • ⭐arraycopy()
  • Runtime类
    • ⭐创建对象
    • ⭐exit()
    • ⭐availableProcessors()
    • ⭐maxMemory()
    • ⭐totalMemory()
    • ⭐freeMemory()
    • ⭐exec()
  • Object类
    • ⭐toString()
    • ⭐equals()
    • ⭐clone()
      • 注意
      • 浅克隆
      • 深克隆
  • Objects类
    • ⭐isNull()
    • ⭐nonNull()

图片[1] - 【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类 - MaxSSL

System类

⭐exit()

终止当前运行的Java虚拟机

执行这段代码后,后面的代码都不再执行

System.exit(0);

图片[2] - 【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类 - MaxSSL

⭐currentTimeMillis()

返回当前系统的时间(用毫秒表示)

记录的是从1970.1.1 0时0分0秒 到现在有多长时间

System.currentTimeMillis();

图片[3] - 【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类 - MaxSSL

用处

可以比较两个程序的运行时间,从而判断哪个程序效率更高

 long start=System.currentTimeMillis(); //调用函数 long end=System.currentTimeMillis(); //获取程序运行的总时间 System.out.println(end - start);

⭐arraycopy()

数组拷贝

System.arraycopy(num1,num2,num3,num4,num5);

num1:被拷贝的数组
num2:从哪个索引开始拷贝
num3:数据被拷贝到的数组(目标数组)
num4:目标数组 开始的索引
num5:拷贝长度
图片[4] - 【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类 - MaxSSL
这种情况的也可以
图片[5] - 【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类 - MaxSSL

Runtime类

可以用来监控虚拟机的内存

⭐创建对象

错误写法
Runtime r1=new Runtime();

类 Runtime 是 Java 标准库中的一个类,用于与运行时系统进行交互,但它不允许通过 new Runtime() 的方式实例化对象,因为其构造函数是私有的(private)。这意味着不能直接使用 new 关键字来创建 Runtime 类的实例。
图片[6] - 【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类 - MaxSSL

Java 中对于某些类,特意将构造函数设计为私有,这是为了确保该类只能通过特定的方法来获取其实例。对于 Runtime 类,获取其实例的方法是使用静态方法 Runtime.getRuntime()。

正确写法
Runtime r1=Runtime.getRuntime();

⭐exit()

停止虚拟机

Runtime.getRuntime().exit(0);

图片[7] - 【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类 - MaxSSL

⭐availableProcessors()

获取CPU的线程数

Runtime.getRuntime().availableProcessors();

图片[8] - 【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类 - MaxSSL

⭐maxMemory()

虚拟机可以从系统中获取的总内存的大小

Runtime.getRuntime().maxMemory();

单位为b
图片[9] - 【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类 - MaxSSL
单位是kb
图片[10] - 【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类 - MaxSSL

单位是mb
图片[11] - 【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类 - MaxSSL

⭐totalMemory()

虚拟机已经获取的总内存的大小

Runtime.getRuntime().totalMemory();

图片[12] - 【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类 - MaxSSL

⭐freeMemory()

虚拟机剩余内存大小

Runtime.getRuntime().freeMemory();

图片[13] - 【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类 - MaxSSL

⭐exec()

运行cmd命令

//打开记事本Runtime.getRuntime().exec("notepad");

图片[14] - 【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类 - MaxSSL

//shutdown 关机
//-s 默认1分钟后关机
//-s -t 指定时间 : 指定关机时间
//-a 取消关机操作
//-r 关机并重启
Runtime.getRuntime().exec("shutdown -s -t 3600");
//3600秒后关机

Object类

Object是Java的顶级父类,Java的所有类都直接或间接地继承于Object类

⭐toString()

返回对象的字符串格式

objects.toString();

图片[15] - 【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类 - MaxSSL
我们先把Student类中的toString()方法给注释掉
图片[16] - 【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类 - MaxSSL

图片[17] - 【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类 - MaxSSL

⭐equals()

s1.equals(s2);

图片[18] - 【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类 - MaxSSL

图片[19] - 【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类 - MaxSSL

这里,我们重写equals方法,看看效果

按快捷键Alt+insert
图片[20] - 【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类 - MaxSSL
图片[21] - 【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类 - MaxSSL
运行,发现变成true了
图片[22] - 【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类 - MaxSSL
图片[23] - 【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类 - MaxSSL

如果没有重写equals方法,默认使用Object的方法进行比较,比较的是地址值是否相等
重写后,比较的就是对象内部的属性值了

⭐clone()

对象克隆
就是把A对象的属性值完全拷贝给B对象,也叫对象拷贝,对象复制。
方法在底层会帮我们创建一个对象,并把原对象中的数据拷贝过去。
图片[24] - 【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类 - MaxSSL
图片[25] - 【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类 - MaxSSL

图片[26] - 【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类 - MaxSSL

注意

  • 一定要重写Object中的clone方法

因为我们通过看源码可以发现,clone方法是protected修饰的
图片[27] - 【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类 - MaxSSL
由于protected修饰的成员在同一包内或子类中被访问,而对于其他包中的类,需要继承来实现
图片[28] - 【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类 - MaxSSL

  • 让Javabean类实现Cloneable接口

浅克隆

不管对象内部的属性是基本数据类型还是引用数据类型,都完全拷贝过来
图片[29] - 【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类 - MaxSSL

深克隆

基本数据类型拷贝过来
字符串复用
引用数据类型会重新创建新的
图片[30] - 【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类 - MaxSSL
图片[31] - 【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类 - MaxSSL

Objects类

⭐isNull()

Objects.isNull(s3);

图片[32] - 【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类 - MaxSSL

源码分析
图片[33] - 【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类 - MaxSSL

⭐nonNull()

Objects.nonNull(s3)

图片[34] - 【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类 - MaxSSL
源码分析
图片[35] - 【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类 - MaxSSL

如果大家有不明白的地方,或者文章有问题,欢迎大家在评论区讨论,指正

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享