文章图片及参考资料均来自黑马成程序员B站课程:https://www.bilibili.com/video/BV17F411T7Ao,侵删。
idea常用快捷键
选中类名按ctrl+B | 查看该类源码 |
进入Java类中后按ctrl+F12 | 在该类中搜索 |
ctrl+alt+v | 自动补全左边代码 |
ctrl+shift+u | 快速切换大小写 |
alt+insert | 插入构造方法 |
ctrl+O | 重写方法 |
ctrl+shift+向上箭头 | 把代码上移一行 |
ctrl+alt+m | 抽取方法 |
ctrl+alt+左箭头 | 返回上一步 |
Math类
System类
![]](https://ucc.alicdn.com/images/user-upload-01/c8f96e79610c4400abb7d4c7305692ab.png)
runtime类
Runtime表示当前那虚拟机的运行环境,由于由于这个类里面的对象不是static的,调用方法前需要线获取Runtime对象。
Runtime无法直接new一个对象,查看源码可知,Runtime在自己的类里边new了一个Runtime对象,并用final修饰(无法修改),然后用一个静态方法getRuntime返回,而把自己的构造方法写成了私有,即无法从类的外部再创建对象。
这样写的一个好处就是,外界调用getRuntime方法时,不管什么时候调用在哪里调用,所调用的都是同一个对象,无法new出很多个对象来(因为虚拟机只有一个)。
public class RuntimeTest { public static void main(String[] args) throws IOException { Runtime rt1 = Runtime.getRuntime(); Runtime rt2 = Runtime.getRuntime(); System.out.println(rt1 == rt2); rt1.exit(0);//退出虚拟机 System.out.println("看看执行了没"); System.out.println(rt1.availableProcessors());//获取CPU线程数 System.out.println(rt1.maxMemory()/1024/1024);//总内存大小,单位byte System.out.println(rt1.totalMemory() / 1024 / 1024);//已经获取的内存大小 System.out.println(rt1.freeMemory()/1024/1024);//剩余内存大小 //运行CMD命令 rt1.exec("notepad");//打开记事本 /*关机操作shutdown -s:默认一分钟后关机 -s -t 指定时间:再指定时间后关机 -a:取消关机操作 -r:关机并重启*/ rt1.exec("shutdown -s -t 3600"); rt1.exec("shutdown -a"); } }
Object类
Object类是Java中的顶级父类,所有类都直接或间接地继承于Object类。
Object类中的方法可以被所有子类访问。
Object类中一共有11个成员方法。
toString方法
toString()方法返回对象的地址值。
如下图,Object类中的toString()方法与sout打印出来的效果是一样的,因为sout方法在底层就是调用了Object类中的toString方法。
如果不想打印地址值,而希望打印子类中的属性值,那么可以直接重写(@override)子类中的toString方法。
Equals方法
Object类中的equals()方法默认比较两个对象的地址值,String类中对其进行了重写。
clone方法
对象克隆:把A对象属性值完全拷贝给B对象,即为对象克隆。
用protected修饰的方法可以在本包中的类和其他包中的子类被调用。
clone方法前用protected修饰,用protected修饰的方法可以在其他包中的子类当中访问,但不能在其他类中用子类对象访问。
即:不能再测试类中通过子类对象调用clone方法。
因此,子类要调用clone方法,需要在子类中重写一下clone方法:
@Override protected Object clone() throws CloneNotSupportedException { return super.clone(); }
另外,需要在子类定义的开头加上一个implement Cloneable接口,变成一个实现类。
但是实际上,Cloneable是一个没有任何抽象方法的接口:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3Vz5Uh7o-1669103793390)(C:\Users\cong\AppData\Roaming\Typora\typora-user-images\image-20221112200234063.png)]
如果一个接口中没有抽象方法,表示这个接口是一个标记性的接口。
如,Cloneable接口一旦被实现,表示当前类的对象就可以被克隆,若没有实现,当前类对象就不能被克隆。
浅克隆,基本数据类型复制其数据,引用数据类型复制其地址值。
弊端:修改一个对象中的引用数据(如修改数组中的值),会同步修改另一个克隆对象的引用数据。
浅克隆VS深克隆:
object中默认的clone方法是浅克隆,要实现深克隆需要在子类中重写clone方法。
Objects工具类
Objects是一个工具类,提供了一些方法去完成一些功能。
BigInteger和BigDecimal类
BigInteger类的构造方法
BigInteger对象一旦创建,内部记录的值将不再改变。
Java常用的API(2)https://developer.aliyun.com/article/1540975