JavaSE再学习笔记(3)

来源:互联网 发布:linux 修改 oracle sid 编辑:程序博客网 时间:2024/05/02 05:06
1.String s1 = "hello";
  String s3 = "hello" ;
  System.out.println(s1 == s3); //true 注意 s1,s3不是new出来的。
  s1 = new String("hello");
  s2 = new String("hello");
  System.out.println(s1 == s2);  //false,s1,s2是两个对象的引用。
  System.out.println(s1.equals(s2)); //true String类重写了equals方法。
2.java.io.File类代表系统文件名(路径和文件名),并不是文件的内容。
  new 一个File是内存中的一个File对象。
3. java.lang.Enum。java使用enum关键字。枚举类型,只能取特定值中的一个。
    public enum  MyColor = {red, green, blue};  定义了一个枚举类型
    MyColor m = MyColor.red;  
4. 集合中存放的都是Object类型。
5. 容器类对象在调用remove,contains等方法时,需要比较对象是否相等这会涉及到对象类型的equals方法和hashCode方法。
   对于自定义的类,需要重写equals和hashCode方法以实现自定义的对象相等的规则。
   重写equals方法,也应该重写hashCode方法。 如果两个对象equals,也应该保证两个对象的hashCode一样。
   一般hashCode方法用于,对象作为Map中的key的时候。这个时候用equals效率太低。
6. Iterator对象称 迭代器。
   Iterator i = c.iterator();
   while(i.hasNext())
   {
Name name = (Name)i.next();
.....
   }


   JDK1.5的增强for循环。很简洁,有一定的缺陷。
   数组的情况:
   int[] arr = {1,2,3,4,5}
   for(int i : arr)
   {
      ....
   }
   不能方便的获取数组的下标,比如单独打印第三个,就还需要定义一个变量。
   集合的情况:
   与使用Iterator相比,不能方便的删除集合中的内容。     
   除了简单遍历并读取其中内容之外,并不是很建议使用这种增强的for循环。
7. 多态,其实简单的说就是 父类引用指向子类对象。
   Set set = new HashSet(); //这就是一种体现
   Animal dog = new Dog();  // 这个时候dog对象只能看到Animal中的相关的东西,并没有Dog新增的方法、变量
8. 所有可排序的类都实现了comparable接口。实现了comparable接口的类,通过实现compareTo方法从而确定该类的排序方式。
9. 泛型。 JDK1.4以前类型不明确:装入集合的类型都被当做Object对待,从而失去了自己的实际类型。从集合中取数据的时候,往往都需要强制类    型转换,效率低,容易产生错误。
   Iterator<String> i = c.iterator() ,List<String>, . 使用集合的时候尽量试用泛型。
原创粉丝点击