一、Object类
- getClass()方法
1.返回值为class,即返回实际对象类型
2.多应用于对比两个对象实际类型是否相同
- hashCode()方法
1.返回值为int,返回对象的哈希码值
2.用于判断两个对象是否相同,若相同则返回相同的哈希码
3.哈希值是根据对象的地址或字符串或数字使用哈希算法计算出来的int数值
- toString()方法
1.返回值为String,返回该对象的字符串表现形式:
getClass().getName() + ‘@’ + Integer.toHexString(hashCode()) - equals()方法
1.返回值为boolean,判断两个对象是否相等
2.boolean equals(Obj obj){return this==obj} - finalize()方法
1.当对象被判定为垃圾对象时,由JVM自动调用此方法,用以标记垃圾对象,进入回收队列
2.垃圾对象:没有有效引用指向该对象时,被称为垃圾对象
3.自动回收机制:当JVM内存耗尽,一次性回收所有的垃圾对象
4.手动回收机制:使用system.gc();通知JVM执行垃圾回收
二、包装类
- Java中的基本数据类型没有方法和属性,而包装类就是为了让这些拥有方法和属性,实现对象化交互。所谓包装类,就是能够直接将简单类型的变量表示为一个类
- 装箱:将栈中的基本数据类型转换为堆中的引用类型
- 拆箱:将堆中的引用类型转换为栈中的基本数据类型
ps:对class文件进行反编译,可以看到自动装箱和拆箱系统实际上还是执行了手动装箱和拆箱,调用的不是构造方法而是integer.valueof() - 字符串和基本数据类型的转换
ps:当类型不兼容时,就会抛出NumberFormatException异常
- Integer缓存区
第二个是true第三个是false,具体原因查看valueof()源码
三、String类
- 字符串字面值存在字符串池中,可以共享
- 使用String s=“hello”,则只在字符串缓冲池中开辟一块空间
ps:定义String s="hello"后hello被存在在字符串池中,而栈中存储的的是指向字符串池中hello的地址,若是在定义一个s2=“hello”,则首先会找字符串池中是否有hello,若有在栈中会开辟一块空间,指向hello,即栈中s和s1指向的地址是一样的 - 若使用String s=new String(“java”),则在字符串缓冲区和堆中都会开辟空间,先指向堆中,堆在指向字符串池中, 要是再创建一个String s2=new String(“java”),则在堆中会开辟一个新空间,指向字符串池中相应的“java”,所以二者的地址是不同的
- String类常用方法
ps:下标都是从0开始,toLowerCase()是将大写转换成小写,startWith(str)判断是否以str开开头 - splite方法小技巧,要想使用多个分隔符system.out.println("[,.]")用小括号括起来(直接连着写),将,和.都分开,若要分离多个,和.则system.out.println("[,.]+")
compareTo(str),比较字符大小,返回的是差值
replace可以实现插入
char的包装类中有toUpperCase(),作用是将一个字符变成大写
ps:上面这些常用的方法StringBuilder和StringBuffer都具备,可以互换,下标一般是包含头部不包含尾部。
四、BigDecimal类
ps:在进行加减乘除时不可以直接用数学符号,因为创建的是对象,不可直接运算,需要调用方法,并且要注意在复制时,采用的是字符串形式,要是采用浮点数形式很可能导致计算结果出错。
五、Calendar类
ps:Calendar.YEAR是Calendar中的一个常量,具体可进入Calendar中进行查看
toLocalString()是以较简洁的方式展现日期和时间即:年-月-日 时:分:妙
六、SimpleDateFormat类
七、System类
ps:因为system类构造方法是私有的,因此可以不创建对象,直接用System