- /**
- * @src http://eric-619.iteye.com/blog/693185
- * Object类的方法:
- * clone()
- * equals()
- * finalize()
- * hashCode()
- * toString()
- *
- * 1、equals()方法:
- * ^ equals方法强调比较的值的是否相等
- * ==强调对象的地址是否相同
- * ^ s1 和 s2的值都保存在对内存中
- * s3 和 s4的值都保存在占内存的字符串缓冲池中,缓存池的分配原则是按值是否相同来分配。
- * ^ 如果值相同则分在一起,指向他们的引用的hashCode()值也相同。如果不同,则不分在一起,也就不==了。
- * 所以s3和s4是相同的两个引用,而s5和他们俩内存地址不同,hashCode值当然也不同了
- *
- * 2、finalize()方法:
- * 由于在Object()类的以下所有子类中的对象都是在java的垃圾回收前自动调用此Object类(父类)的此finalize方法。
- * 所以可以重写这样运行的过程可以看的更清楚。
- *
- * 3、hashCode()方法:
- * ^ hashCode()方法的返回值调用它的对象的十进制哈希码
- * (不同的对象必有不同的hashCode返回值,但是如果两个引用的值相同则hashCode返回值相同,
- * 因为引用不是对象,不是new出来的。)
- * ^ 总结:两个对象或者引用的hashCode()是否相同,就是看这些对象或引用的地址是否相同,
- * hashCode()方法只看地址。
- * ^ Integer类的静态方法toHexString方法作用是将十进制整型数转化成十六进制数
- *
- * 4、toString()方法:
- * ^ toString 方法功能是以字符串形式返回当前对象的有关信息。
- * ^ 其返回值是调用它的对象的类名加十六进制哈希码。
- *
- */
- public class TestObject {
- public static void main(String[] args) {
- new TestObject().testEquals();
- System.out.println("-------------------------------------");
- new TestObject().testFinalize();
- System.out.println("-------------------------------------");
- new TestObject().testHashCode();
- System.out.println("-------------------------------------");
- new TestObject().testToString();
- }
- // 1、equals()方法:
- public void testEquals(){
- String s1 = new String("aaa");
- String s2 = new String("bbb");
- String s3 = "ccc";
- String s4 = "ccc";
- String s5 = "ddd";
- System.out.println(s3.toString());
- System.out.println(s5.toString());
- System.out.println("-----");
- System.out.println(s3.hashCode());
- System.out.println(s4.hashCode());
- System.out.println(s5.hashCode());
- System.out.println("-----");
- if(s3 == s4){
- System.out.println("true");
- }else{
- System.out.println("false");
- }
- }
- // 2、finalize()方法:
- public void testFinalize(){
- for(int i = 0; i < 100; i++){
- Person2 p = new Person2();
- for(int j = 0; j < 1000; j++){
- String[] test = {"abc", "eft", "java"};
- }
- }
- }
- // 3、hashCode()方法:
- public void testHashCode(){
- Person p1 = new Person(18);
- Person p2 = new Person(18);
- int handlel = p1.hashCode();
- System.out.println("1."+handlel);
- System.out.println("2."+Integer.toHexString(handlel));
- System.out.println("3."+p1);
- System.out.println("4."+p2.hashCode());
- }
- // 4、toString()方法:
- public void testToString(){
- Person p1 = new Person(18);
- System.out.println(p1.hashCode());
- System.out.println(p1);
- System.out.println(p1.toString());
- }
- class Person{
- private int age;
- public Person(){
- System.out.println("创建一个Person对象");
- }
- public Person(int age){
- this.age = age;
- }
- public void setAge(int age){
- this.age = age;
- }
- public int getAge(){
- return age;
- }
- public void finalize(){
- System.out.println("对象被销毁");
- }
- }
- class Person2{
- private int age;
- public Person2(){
- System.out.println("创建一个Person对象");
- }
- public Person2(int age){
- this.age = age;
- }
- public void setAge(int age){
- this.age = age;
- }
- public int getAge(){
- return age;
- }
- public void finalize(){
- System.out.println("对象被销毁");
- }
- }
- }
Java:java.lang.Object常用方法
最新推荐文章于 2021-12-22 15:59:32 发布