现在的位置: 首页 > 综合 > 正文

java学习笔记

2014年02月23日 ⁄ 综合 ⁄ 共 1054字 ⁄ 字号 评论关闭

1 java中所有类的基类是Object

 

2   java中的 ==      仅仅判断两个对象是否存储在相同位置,如果存储在相同位置(存储在相同位置表示引用同一对象)一定相等,但是不同内存空间的对象可能是一个对象的多个副本。

 

3  String 、Math、还有Integer、Double。。。。等这些封装类重写了Object中的equals()方法,让它不再比较句柄(引用),而是比较对象中实际包含的整数的值,即比较的是内容。

 

 4  而Object的equals()方法比较的是地址值,如果你的自定义类没有重写equals()方法那么也将比较的是地址值

 equals()方法在object类中定义如下:
  public boolean equals(Object obj) {
return (this == obj);
}

 

5java中对象传递都是址传递

 

6 String 是 * Strings are constant; their values cannot be changed after they
                   * are created. String buffers support mutable strings.
                 * Because String objects are immutable they can be shared.

 

7 如果比较两个String对象的内容是否相等请用equals方法,不要用==

 

8  看下边的例子

 String a="Hello World!";
  String b="Hello World!";
  System.out.print(a==b);    结果 True   为什么?

 因为String是一个不可变的对象,而String的直接量赋值会自动寻找以前生成了的内容相同的实例赋给引用 (because String objects are immutable they can be shared),若以前没有内容相同的实例存在,则创建新实例

  String c=new String("Hello World!");
  System.out.print(a==c);  结果  FALSE   为什么?  对象c通过new生成应该是一个新的对象和a、指向不同的引用

 

9    一般来说,如果你要把一个类的对象放入容器中,那么通常要为其重写equals()方法,让他们比较内容值而不是地址值。特别地,如果要把你的类的对象放入散列中,那么还要重写hashCode()方法;要放到有序容器中,还要重写compareTo()方法。

 

 

抱歉!评论已关闭.