Posts Tagged ‘java基础’

List中的remove使用注意

先来看API是怎样写的。 boolean remove(Object o) 从此列表中移除第一次出现的指定元素(如果存在)(可选操作)。如果列表不包含元素,则不更改列表。更确切地讲,移除满足 (o==null ? get(i)==null : o.equals(get(i))) 的最低索引 i 的元素(如果存在这样的元素)。如果此列表已包含指定元素(或者此列表由于调用而发生更改),则返回 true。 可以看到是用o.equals来判断是否删除的,在一般情况下使用都没有问题。但我有一次犯了一个错误。 有一个List<子类> list,我用 list.remve(父类对象);这样很明显是不行的,equals不了,所以就删除不了。 解决方法:1,是remove同一类对象 2,在父类覆盖equals方法,用instanceof来判断是不是子类,然后判断相等。 方法2较为麻烦。还是建议方法1。


JAVA的==与Equals

以下是我的理解,可能有误 Java中的“==”用来判断是否是同一个对象(对象的引用是不是一样),equals方法一般会被覆盖,主要是比较值,而且一般只和同一类对象比较。 String的比较 public class TestEqual {   public static void main(String[] args) { String a = "abc"; String b = "abc"; String c = new String("abc");//新建了一个对象 String d = new String("abc"); String e = "ab"+"c";//使用常量池中的对象 String f = "ab"; String g = f + "c";//string是固定字符,需要新建对象 System.out.println(a == b);//true,第一次a把字符串放在常量池,那b继续用这个常量,e也一样 System.out.println(a.equals(b));//true System.out.println("a == c?"+(a == c));//false [...]


Comparator和Comparable的区别使用

Camparable与Comparator的区别 简单说: 实现Camparable接口可以直接使用sort方法Collections.sort(List list)排序 实现Comparator接口的可以用Collections.sort(List list, Comparator c)排序 一个类实现了Camparable接口则表明这个类的对象之间是可以相互比较的,这个类对象组成的集合就可以直接使用sort方法排序。 Comparator可以看成一种算法的实现,将算法和数据分离,Comparator也可以在下面两种环境下使用: 1、类的设计师没有考虑到比较问题而没有实现Comparable,可以通过Comparator来实现排序而不必改变对象本身 2、可以使用多种排序标准,比如升序、降序等 Camparable实例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 [...]


Java的访问控制

包(Package) 创建自己的包时,要求 package语句必须是文件中的第一个“非注释”代码。 如果类名冲突时,可这样写java.util.Vector v = new java.util.Vector(); 可能(但并常见)有一个编译单元根本没有任何公共类。此时,可按自己的意愿任意指定文件名。 访问控制 修饰符 类内部 同一个包 子类 任何地方 private √ default √ √ protected √ √ √ public √ √ √ √ 类的修饰符只有public 和 default,默认时只能被同一个文件或包内访问。


Java运算符优先级(表格)

Java运算符优先级参考图表 本文来源 http://blog.csdn.net/xiaoli_feng/archive/2009/09/18/4567184.aspx 优先级 运算符 结合性 1 () [] . 从左到右 2 ! +(正)  -(负) ~ ++ – 从右向左 3 * / % 从左向右 4 +(加) -(减) 从左向右 5 << >> >>> 从左向右 6 < <= > >= instanceof 从左向右 7 ==   != 从左向右 8 &(按位与) 从左向右 9 ^ 从左向右 10 | 从左向右 11 && 从左向右 12 || 从左向右 13 ?: 从右向左 14 = += -= *= /= %= &= |= ^=  ~=  <<= >>= >>>= 从右向左 说明: 1、 该表中优先级按照从高到低的顺序书写,也就是优先级为1的优先级最高,优先级14的优先级最低。 2、 [...]


Java的重载(Overload)与重写(Override)

重载与重写之间的差别 区别点 重载方法 重写方法 参数列表 必须修改 一定不能修改 返回类型 可以修改 一定不能修改 异常 可以修改 可以减少或删除,一定不能抛出新的或者更广的异常 访问 可以修改 一定不能做更严格的限制(可以降低限制) 重载(Overload) 每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。 只能重载构造函数 规则 被重载的方法必须改变参数列表; 被重载的方法可以改变返回类型; 被重载的方法可以改变访问修饰符; 被重载的方法可以声明新的或更广的检查异常; 方法能够在同一个类中或者在一个子类中被重载。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 [...]