黑马程序员——面向对象(数组工具类+单例设计模式)-第16天
2015-09-01 18:43
459 查看
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
[b]面向对象(数组工具类+单例设计模式)[/b]
1、数组工具类
将int 数组转换成字符串,格式是:[e1,e2,...]public static String arrayToString(int[] arr)
{
String str = "[";
for(int x = 0; x < arr.length; x++){
if(x != arr.length - 1)
str = str + arr[x]+ ",";//此时+是连接符的意思
else
str = str + arr[x] + "]";
}
return str;
}
2、 单例设计模式
设计模式:对问题行之有效的解决方式,其实,它是一种思想。单例设计模式解决的问题:就是可以保证一个类在内存中的对象唯一性。
比如:多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性。
如何保证对象唯一性呢?
1、不允许其他程序用new创建该类对象。
2、在该类创建一个本类实例。
3、对外提供一个方法让其他程序可以获取该对象。
步骤:
1、私有化该类构造函数。
2、通过new在本类中创建一个本类对象。
3、定义一个公有的方法,将创建的对象返回。
示例(饿汉式):(很饥渴,看到类加载,就也想加载自己的对象)
class Single{
//类已加载,静态对象s就已经存在了
private static Single s = new Single();//创建一个新的本类对象=静态私有化的s(本类实例)。即定义了一个成员变量s。本类中创建一个本类对象。
private Single(){}//私有化构造函数(隐藏构造函数)
//提供方法
public static Single getInstance(){//返回类型是Single类型的。!!!
return s ;//因为它返回的是变量s,而s属于Single类型
}
}
class SingleDemo{
public static void main(String[] args){
Single s1 = Single.getInstance();//Single调用静态方法getInstance
Single s2 = Single. getInstance();//这样就不需要new对象了。直接调用
System.out.println(s1 == s2);
}
}
复制代码
运行结果:
true
之所以不用Single.s;的方式获取Single对象,而采用getInstance获取是因为在getInstance方法中我们可以做一些判断来决定是否返回Single的对象,也就是实现了对单例对象的可控。所以,给Single的构造方法加上了private限制,禁止使用者直接采用Single.s;的方式获取。
示例(懒汉式):(没对象的时候,我就懒得加载变量了。哈哈。。)
class Single{
//类加载进来,没有对象,只有调用了getInstance方法时,才会创建对象
//延迟加载形式
private static Single s =
null;
private Single(){}//私有化构造函数
public static SinglegetInstance(){
if(s == null)
s = new Single();//建立对象s=Single
return s ;
}
}
classSingleDemo{
public static void main(String[] args){
Single s1 = Single. getInstance();
Single s2 = Single. getInstance();
System.out.println(s1 == s2);
}
}
复制代码
运行结果:
true
相关文章推荐
- 黑马程序员——OC单例模式入门
- 黑马程序员----------------Java基础-----------------String类
- 锻炼出最牛程序员的编码 套路
- 黑马程序员——OC中的copy
- 在你步入职业软件开发生涯那天就该知道的5件事
- 【面试题】-100盏灯
- 黑马程序员---反射
- 黑马程序员——面向对象(静态代码块)-第15天
- 面试题:23从上往下打印二叉树
- 总结做完第一期项目
- 浅谈机器学习的职业发展方向
- 黑马程序员——Java之IO流
- 腾讯面试题:走台阶
- 面试题22:栈的压入弹出序列
- google的面试题(三维动态规划的范例)——(87)Scramble String
- 面试题21:包含min函数的栈
- 剑指offer——面试题37:两个链表的第一个公共结点(哈希,栈)
- 面试题20:顺时针打印矩形
- 剑指offer——面试题36:数组中的逆序对(归并排序)
- 黑马程序员——40,File类和Properties类