您的位置:首页 > 移动开发 > Objective-C

object中常用的方法

2020-02-02 01:12 1121 查看
  1. /** 
  2. * @src  http://eric-619.iteye.com/blog/693185 
  3. * Object类的方法: 
  4. *   clone() 
  5. *   equals() 
  6. *   finalize() 
  7. *   hashCode() 
  8. *   toString() 
  9. *  
  10. * 1、equals()方法: 
  11. *        ^ equals方法强调比较的值的是否相等 
  12. *          ==强调对象的地址是否相同 
  13.      *        ^ s1 和 s2的值都保存在对内存中 
  14. *          s3 和 s4的值都保存在占内存的字符串缓冲池中,缓存池的分配原则是按值是否相同来分配。 
  15. *        ^ 如果值相同则分在一起,指向他们的引用的hashCode()值也相同。如果不同,则不分在一起,也就不==了。 
  16.      *          所以s3和s4是相同的两个引用,而s5和他们俩内存地址不同,hashCode值当然也不同了 
  17. *  
  18. * 2、finalize()方法: 
  19. *          由于在Object()类的以下所有子类中的对象都是在java的垃圾回收前自动调用此Object类(父类)的此finalize方法。 
  20. *          所以可以重写这样运行的过程可以看的更清楚。 
  21. *  
  22. * 3、hashCode()方法: 
  23. *        ^ hashCode()方法的返回值调用它的对象的十进制哈希码 
  24.      *          (不同的对象必有不同的hashCode返回值,但是如果两个引用的值相同则hashCode返回值相同, 
  25.      *           因为引用不是对象,不是new出来的。) 
  26. *        ^ 总结:两个对象或者引用的hashCode()是否相同,就是看这些对象或引用的地址是否相同, 
  27. *           hashCode()方法只看地址。 
  28.      *        ^ Integer类的静态方法toHexString方法作用是将十进制整型数转化成十六进制数 
  29. *  
  30. * 4、toString()方法: 
  31. *        ^ toString 方法功能是以字符串形式返回当前对象的有关信息。 
  32. *        ^ 其返回值是调用它的对象的类名加十六进制哈希码。 
  33. *  
  34. */  
  35.   
  36.   
  37. public class TestObject {  
  38. public static void main(String[] args) {  
  39.    new TestObject().testEquals();  
  40.    System.out.println("-------------------------------------");  
  41.    new TestObject().testFinalize();  
  42.    System.out.println("-------------------------------------");  
  43.    new TestObject().testHashCode();  
  44.    System.out.println("-------------------------------------");  
  45.    new TestObject().testToString();  
  46. }  
  47.   
  48.   
  49. // 1、equals()方法:  
  50. public void testEquals(){  
  51.     String s1 = new String("aaa");  
  52.     String s2 = new String("bbb");  
  53.        String s3 = "ccc";  
  54.     String s4 = "ccc";  
  55.     String s5 = "ddd";  
  56.     System.out.println(s3.toString());  
  57.     System.out.println(s5.toString());  
  58.     System.out.println("-----");  
  59.        System.out.println(s3.hashCode());  
  60.     System.out.println(s4.hashCode());  
  61.     System.out.println(s5.hashCode());  
  62.        System.out.println("-----");  
  63.     if(s3 == s4){  
  64.       System.out.println("true");  
  65.     }else{  
  66.       System.out.println("false");  
  67.     }  
  68. }  
  69.   
  70.   
  71. // 2、finalize()方法:  
  72. public void testFinalize(){  
  73.     for(int i = 0; i < 100; i++){  
  74.        Person2 p = new Person2();  
  75.     for(int j = 0; j < 1000; j++){  
  76.        String[] test = {"abc", "eft", "java"};  
  77.     }  
  78.     }  
  79. }  
  80.   
  81.   
  82. // 3、hashCode()方法:  
  83. public void testHashCode(){  
  84.      Person p1 = new Person(18);  
  85.      Person p2 = new Person(18);  
  86.      int handlel = p1.hashCode();  
  87.   
  88.      System.out.println("1."+handlel);  
  89.      System.out.println("2."+Integer.toHexString(handlel));  
  90.      System.out.println("3."+p1);  
  91.      System.out.println("4."+p2.hashCode());  
  92. }  
  93.   
  94.   
  95. // 4、toString()方法:  
  96. public void testToString(){  
  97.      Person p1 = new Person(18);  
  98.      System.out.println(p1.hashCode());  
  99.      System.out.println(p1);  
  100.      System.out.println(p1.toString());  
  101.      }  
  102.   
  103.   
  104. class Person{  
  105.    private int age;  
  106.    public Person(){  
  107.      System.out.println("创建一个Person对象");  
  108.    }  
  109.    public Person(int age){  
  110.     this.age = age;  
  111.    }  
  112.    public void setAge(int age){  
  113.     this.age = age;  
  114.    }  
  115.    public int getAge(){  
  116.     return age;  
  117.    }  
  118.   
  119.    public void finalize(){  
  120.     System.out.println("对象被销毁");  
  121.    }  
  122. }  
  123.   
  124. class Person2{  
  125.    private int age;  
  126.    public Person2(){  
  127.      System.out.println("创建一个Person对象");  
  128.    }  
  129.    public Person2(int age){  
  130.     this.age = age;  
  131.    }  
  132.    public void setAge(int age){  
  133.     this.age = age;  
  134.    }  
  135.    public int getAge(){  
  136.     return age;  
  137.    }  
  138.   
  139.    public void finalize(){  
  140.     System.out.println("对象被销毁");  
  141.    }  
  142. }  
  143. }  

转载于:https://www.cnblogs.com/bjameng/archive/2011/11/30/2269791.html

  • 点赞
  • 收藏
  • 分享
  • 文章举报
diaoruoyan3561 发布了0 篇原创文章 · 获赞 0 · 访问量 214 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: