9.switch语句switch(表达式)中表达式只能是四种类型:byte,short,int,char。JDK5以后可以使枚举,JDK7后可以使String。case后面只能是常量,不能有重复值。 10.String和StringBuffer中方法特点 replace方法String方法参数是两个String型,而StringBuffer是三个参数(开始角标,结尾角标,替换进去的字符串); ‚String类型有endsWith和startsWith方法,而StringBuffer没有,但要注意方法的参数不能为char类型; ƒsubstring方法中StringBuffer的方法返回值是String,因此可以看出不是对自身buffer的操作,而是生成一个String; ④indexOf方法是通用的,参数可为char和Sting型; ⑤StringBuffer的append方法和insert方法,要插入的参数类型可为多种类型,insert方法第一个参数是角标; ⑥String和StringBuffer中特殊方法 void getChars(int srcBegin, int srcEnd,char[] dst, int dstBegin) ,尤其注意返回值类型为空;
12.ListIterator的add方法和List的add不同在于迭代器是添加的到指针位置并且添加之后指针后移一位,而List是加到末尾。 13.List中remove(int index) 是返回所删除对象的,remove(Object o)是空。 14.ArrayList的add(E e)、 add(int index, E element) 、get(int index) 、remove(int index) 、remove(Object o) 、set(int index, E element) 、size() 。 15.LinkedList的(省略普通方法)offer(E e) 、offerFirst(E e) 、offerLast(E e) 、peek() 、peekFirst()列表为空返回null、getFirst()列表为空抛出异常、 peekLast()、getLast()、 poll()、 pollFirst() 、pollLast() 。 16.三目运算符中,如果语句没有执行,不会改变结果。c=a>5?a++:++b;因为a++没有被执行,所以a值不会增加。 17.float x=20;没问题的。 18.List中的addAll,都是添加参数E的所有元素,不同是添加到目标容器的位置。addAll(index E)中index是目标List的角标,例:am.addAll(3,al);3是am的角标,如果am长度小于3则越界。 19.ArrayList中set(index E)返回对象是原对象。 20.List中判断元素是否相同依据的原理是调用元素的equals方法。自定义需重写equals方法。是即将存入的元素调用自己的equals即将已存入的元素当做参数传入一一比较知道找到相同的。 ‚HashSet比较是先比较hashcode,如果hashcode相同,调用元素的equals比较,自定义需重写hashCode方法和equals方法 ƒTreeSet是a.调用元素的compareTo方法进行比较,返回int值,自然排序,元素自定义需实现Comparable接口,二叉树结构。b.TreeSet的构造方法可传入自定义的比较器,比较器可以重写compare方法自定义。 21.Abstract关键字和final、private、static不共存。 22.非抽象类也可被abstract修饰,但是被修饰后就不能创建实例了 23.多态:超类引用创建子类对象Animal p=new Cat() 总结:除了非静态方法,编译运行都看父类,非静态方法运行看右边。 子类对象会自动向上转型,会去掉子类中超类没有的方法,但如果子类重写了超类的方法并且方法中用到了超类中没有的成员变量是可行的。 ‚静态方法没有多态性,因为静态方法是和类绑定的,不会存在不知道具体类型的情况(无论编译和运行都看等号左边)。如果父类中没有X静态方法,即使子类定义了X静态方法,也不能访问。 ƒ构造函数是不具有多态性的,因为构造方法本身是静态方法。 ④成员变量访问是由编译器决定的,如果父类中没有X成员变量,即使子类定义了X,也不能访问。因此不会表现出多态(无论编译和运行都看等号左边)。 ⑤调用方法是根据运行时对象类型延时绑定调用,会表现出多态(编译看等号左边,运行看等号右边)。方法运行时访问子父类同名的成员变量X,访问的是子类的X.单独访问父类引用的同名变量X,访问的是父类的X。 ⑥可将超类引用强制转换成子类类型来访问子类特有方法。 24.直接创建内部类对象Outer.Inner Oi=new Outer().new Inner();如果内部类被static修饰, Outer.Inner Oi=new Outer.Inner(); 局部内部类只能访问被final修饰的局部变量。 25.静态方法不能访问类的泛型。 26.父类中的私有成员,子类是没有继承的,但在开辟子类内存空间的时候是分配了空间的的,从另一个角度考虑,是继承了私有元素,但是没有权限访问。 27.final成员变量是赋值之后即被锁定,在没有赋值时,不会锁定默认值,构造方法能够一次赋值,一般方法不能。 28.接口没有构造方法,接口是可以多继承。是实现扩展功能,抽象类是向上提取的共有功能,抽象类是有构造方法的。(抽象类和接口区别) 29.Java.util包中的Arrays类的asList方法,返回的是List类型的集合,当数组中的元素是基本数据类型是,集合里的元素是基本数据类型的数组。当元素是引用数据类型是,是将对象存入List集合。 30.toArray (T[] a) 方法有重载形式,当指定形式的数组即a的长度小于集合的size()时,方法内部就会创建一个新的数组,长度为size(),当大于是就不会创建,并且null填充多余的位置。所以长度刚刚好的数组最优。
|