1、String s = new String(“xyz”);创建了几个字符串对象?
答:两个对象,一个是静态区的”xyz”,一个是用new创建在堆上的对象。
2、类ExampleA继承Exception,类ExampleB继承ExampleA。
有如下代码片断:
try {
throw new ExampleB(“b”)
} catch(ExampleA e){
System.out.println(“ExampleA”);
} catch(Exception e){
System.out.println(“Exception”);
}
输出结果?ExampleA (根据里氏代换原则[能使用父类型的地方一定能使用子类型],抓取ExampleA类型异常的catch块能够抓住try块中抛出的ExampleB类型的异常)
3、关于 数据删除
id自增,删除重复的名字,保留id小的
DELETE FROM demo WHERE EXISTS(
SELECT * FROM (
SELECT MIN(id) id,NAME FROM demo GROUP BY NAME HAVING(COUNT(1)>1)
) AS tt WHERE demo.id>tt.id AND demo.name=tt.name
)
4、单例模式(饿汉式-懒汉式)
4-1、饿汉式
public class Singleton{
①将构造器私有,不允许外界通过构造器创建对象;
private Singleton(){}
②通过公开的静态方法向外界返回类的唯一实例
private static Singleton instance=new Singleton();
public static getInstance(){
return instance;
}
}
4-2、懒汉式
public class Singleton{
①将构造器私有,不允许外界通过构造器创建对象;
private Singleton(){}
private static Singleton instance=null;
②通过公开的静态方法向外界返回类的唯一实例
public static synchronized getInstance(){
if(instancenull) instance = new Singleton();
return instance;
}
}
5、冒泡排序和二分查找
5-1、冒泡排序
public static int[] arrSort(int [] arrs){
if (arrs.length0){
return arrs;
}
for(int i=0;i<arrs.length;i++){
for(int j=0;j<arrs.length-1;j++){
if(arrs[j]<arrs[j+1]){//大于升序 小于降序
int temp = arrs[j];
arrs[j] = arrs[j+1];
arrs[j+1] = temp;
}
}
}
return arrs;
}
5-2、二分查找
public static int recursionBinarySearch(int[] arrs,int key,int low,int high){
if (arrs.length==0){
return 0;
}
if(key<arrs[low] || key>arrs[high] || low>high){
return -1;
}
int middle = (low+high)/2;
if(arrs[middle]>key){
return recursionBinarySearch(arrs, key, low, middle-1);
}else if(arrs[middle]<key){
return recursionBinarySearch(arrs, key, middle+1, high);
}else{
return middle;
}
}
6、
待续