笔试 小结
笔试题型
基础题: 类内部 同包下 子类 包外
关键字解释 public yes yes yes yes
protect yes yes yes
default yes yes
private yes
final static abstract
编程题:
集合编程:list的应用。在list中存入User,他有一个变量username.要求编写一个函数removeUserFormList(List inList,String username)将名字为username的user移除
这个集合的题看上去挺简单但是其中有个隐藏的小坑,在使用Iterator遍历时是不能调用list的remove方法的,不然会报java.util.ConcurrentModificationException 异常,用for循环则没有这样的问题,但是for也有局限性,不能遍历hashset等集合,还有一种方法就是在Iterator遍历时当if(u.getName().equals(name)){ it.remove();} 调用iterator的remove()就没有影响。
public void removeUserFormList(List<User> inList , String name){ /*ArrayList<User> list2 = new ArrayList<User>(); for( Iterator<User> it = inList.iterator();it.hasNext();){ User u = it.next(); if(u.getName().equals(name)){ list2.add(u); } } inList.removeAll(list2);*/
for(int i=0;i<inList.size();i++){ User u = inList.get(i); if(u.getName().equals(name)){ inList.remove(i); } } }
写一个类实现singleton的设计模式
class Singleton{
public static Singleton s = null;
static{
s = new Singleton();
}
public static Singoleton newInstance(){
return s;
}
}
++++++++++++++++++++++
String s = "Number:";
for(int i=0;i<N;++i){
s += i+"";
}
对以上程序段做出改进
思路:s += i+"";执行这句话时每执行一次就会生成一个String对象,对内存造成浪费,使用StringBuffer操作;
public static void main(String[] args) {
String s = "Number:";
StringBuffer sb = new StringBuffer("");
for(int i=0;i<10;i++){
sb.append(i);
}
sb.insert(0, s);
System.out.println(sb);
}
abstract class 和 interface 的区别
abstract class 没有实体,用于被子类继承,可以实现方法,子类只能继承一个父类
interface 只定义方法不写实现,也没有实体,一个类能实现多个接口;
from successF
数据库查询,痛啊,赶快补!