写一个Singleton出来。

行业问题 面试题库 已帮助 人

写一个Singleton出来。

热搜:新出来的监管者

答案解析

难度★★☆ 搜索
  • 正确答案:

    Singleton 模式主要作用是保证在Java 应用程序中,一个类Class 只有一个实例存在。

    一般Singleton 模式通常有几种种形式:

    第一种形式: 定义一个类,它的构造函数为private 的,它有一个static 的private 的该类

    变量,在类初始化时实例话,通过一个public 的getInstance 方法获取对它的引用,继而

    调用其中的方法。

    public class Singleton {

    private Singleton(){}

    //在自己内部定义自己一个实例,是不是很奇怪?

    //注意这是private 只供内部调用

    private static Singleton instance = new Singleton();

    //这里提供了一个供外部访问本class 的静态方法,可以直接访问

    public static Singleton getInstance() {

    return instance;

    }

    }

    第二种形式:

    public class Singleton {

    private static Singleton instance = null;

    public static synchronized Singleton getInstance() {

    //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次

    //使用时生成实例,提高了效率!

    if (instance==null)

    instance=new Singleton();

    return instance;

    }

    }

    其他形式:

    定义一个类,它的构造函数为private 的,所有方法为static 的。

    一般认为第一种形式要更加安全些

    7、递归算法题1

    一个整数,大于0,不用循环和本地变量,按照n,2n,4n,8n 的顺序递增,当

    值大于5000 时,把值按照指定顺序输出来。

    例:n=1237

    则输出为:

    1237,

    2474,

    4948,

    9896,

    9896,

    4948,

    2474,

    1237,

    public static void multiply(int n)

    {

    if(n>5000) return;

    System.out.println(n);

    multiply(n*2);

    System.out.println(n);

    }

    Gaibaota(N) = Gaibaota(N-1) + n

    7、递归算法题2

    第1 个人10,第2 个比第1 个人大2 岁,依次递推,第8 个人多大?

    package cn.itcast;

    import java.util.Date;

    public class A1 {

    public static void main(String [] args)

    {

    System.out.println(computeAge(8));

    }

    public static int computeAge(int n)

    {

    if(n==1) return 10;

    return computeAge(n-1) + 2;

    }

    }

    public static void toBinary(int n,StringBuffer result)

    {

    if(n/2 != 0)

    toBinary(n/2,result);

    result.append(n%2);

    }