技术改变世界 创新驱动发展
}
}
// prtMsg的方法体
System.out.println(id + name);
3、改正下面程序段中的错误(共5处)
public class Student{ String id; String name; int salary;
public void Test(String id, String name, int salary){ //1:意图为该方法为构造方法,需去掉返回值,并改正方法名 this.id = id; this.name = name; this.salary = salary; }
public void changeInfo(String id, int salary){ //2:返回值改为boolean boolean result;
if(id == this.id){ //3:==改为equals()方法 this.salary = salary;
result = TRUE; //4:改为true
}else{
result = false;
}
return result;
}
public booleanchangeInfo(String ids, intsalarys){ //5:方法重复定义,并不是重载 ?? } }
4、写一个Singleton出来。
解答:
解析:Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。它必须自行创建这个唯一的实例,必须自行向整个系统提供这个实例。使用单例模式的一个必要条件:在一个系统中要求只有一个类的实例时应当使用单例模式,反过来说如果一个类可以有几个实例共存,那么就没有必要使用单例类。
一般Singleton模式通常有以下几种形式。 (1)第一种形式-饿汉式单例类:
定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例化,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。
public class Singleton {
您的未来就是我们的未来
技术改变世界 创新驱动发展
// 在自己内部定义自己一个实例,是不是很奇怪? private static Singleton instance = new Singleton(); // 注意这是private 只供内部调用 private Singleton() { } // 这里提供了一个供外部访问本class的静态方法,可以直接访问 public static Singleton getInstance() { return instance; } }
(2)第二种形式-懒汉式单例类:第一次调用才初始化。 public class GoodSingleton { // 在自己内部定义自己一个实例,是不是很奇怪? private static GoodSingleton instance = null; // 注意这是private 只供内部调用 private GoodSingleton() { } //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次 //使用时生成实例,提高了效率
public static synchronized GoodSingleton getInstance() { if(instance == null){ return new GoodSingleton(); }else{ return instance; } } }
//懒汉式的另一种改进
public class GoodSingleton { // 在自己内部定义自己一个实例,是不是很奇怪? private volatile static GoodSingleton instance; // 注意这是private 只供内部调用 private GoodSingleton() { } // 两次检查 public static GoodSingleton getInstance1() { if (instance == null) {
您的未来就是我们的未来
技术改变世界 创新驱动发展
synchronized (GoodSingleton.class) { if (instance == null) { instance = new GoodSingleton(); } } } return instance; } }
(3)登记式单例类:为了克服饿汉式和懒汉式单例类不可继承的缺点而设计的。 5、补足代码
packagelianxi; interface Interface { }
class Test{ }
public class Lianxi{ } 答案:
interface Interface { }
class Test{
void method();
//补上代码,通过匿名内部类
public static void main(String[] args) { }
Test.function().method();
void method();
public static Interface function() {
//补上代码,通过匿名内部类 return new Interface(){
public void method() {
System.out.println(\
您的未来就是我们的未来 技术改变世界 创新驱动发展
}
}
};
}
public class Lianxi{ }
public static void main(String[] args) { }
// 解析:读懂本句代码是解题关键 Test.function().method();
您的未来就是我们的未来