黑马程序员技术交流社区
标题:
【Java基础交流】之【一张贴搞定单例设计模式和数组工具...
[打印本页]
作者:
传奇查
时间:
2015-11-18 17:32
标题:
【Java基础交流】之【一张贴搞定单例设计模式和数组工具...
感觉对你有用就给个鼓励吧~
~
单例设计模式:
/**
* 单例设计模式
* 设计模式:对问题行之有效的解决方式,一种思想
* 解决的问题:就是可以保证一个类在内存中的对象唯一性
* 比如多个程序使用同一个配置信息对象时,就需要保证对象的唯一性.
* 思路:
* 1.不允许其他程序用new创建该类对象.
* 2.在该类创建一个本类实例.
* 3.提供一个方法让其他程序可以获取该对象.
* 步骤:
* 1.私有化构造函数.
* 2.通过new在本类中创建一个静态并私有本类对象.
* 3.定义一个公有的静态方法,将创建的对象返回.
*/
//饿汉式--直接用
class Single_Hungry{
private Single_Hungry(){}
static private Single_Hungry sh = new Single_Hungry();
public static Single_Hungry getInstance(){
return sh;
}
}
//懒汉式--先null
class Single_Lazy{
private Single_Lazy(){}
private static Single_Lazy sl = null;
public static Single_Lazy getInstance(){
if(sl==null){
sl =new Single_Lazy();
}
return sl;
}
}
public class SingleDemo {
public static void main(String[] args) {
Single_Hungry sh1 = Single_Hungry.getInstance();
Single_Hungry sh2 = Single_Hungry.getInstance();
System.out.println(sh1.equals(sh2));
Single_Lazy sl1 = Single_Lazy.getInstance();
Single_Lazy sl2 = Single_Lazy.getInstance();
System.out.println(sl1.equals(sl2));
}
}
复制代码
输出结果:
true
true
数组工具类:
/**
* 数组工具
* @author maidou51
* @version v1.0
*/
class ArrayTool {
//该类中的方法都是静态的,所以该类时不需要创造对象的
//未来保证不让他人创建对象,可以将构造函数私有化
private ArrayTool(){}
/**
* 获取整型数组的最大值
* @param arr 接收一个元素为int 类型的数组
* @return 该数组的最大的元素值
* */
//获取整形数组的最大值
public static int getMax(int[] arr){
int maxIndex = 0;
for (int i = 0; i < arr.length; i++) {
if(arr[i]>arr[maxIndex]){
maxIndex = i;
}
}
return arr[maxIndex];
}
/**
* 对数组进行选择排序
* @param arr接收一个元素为int的数组
* */
//对数组进行选择排序
public static void selectSort(int[] arr){
for (int i = 0; i < arr.length-1; i++) {
for (int j = i+1; j < arr.length; j++) {
if(arr[i]>arr[j]){
swap(arr,i,j);
}
}
}
}
//用于给数组进行元素的位置置换.
private static void swap(int[] arr, int i ,int j){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
/**
* 获取指定的元素在指定数组中的索引
* @param arr 接收一个元素为int 类型的素组
* @param key 要找的元素
* @return 返回该元素第一次出现的位置,如果不存在则返回-1
* */
//获取指定的元素在指定数组中的索引
public static int getIndex(int[] arr,int key){
for (int i = 0; i < arr.length; i++) {
if(arr[i]==key){
return i;
}
}
return -1;
}
/**
* 将int素组转换陈字符串,格式是:[e1,e2...]
* @param arr 接收一个元素为int 类型的数组
* @return 返回该数组的字符串表现形式
* */
//将int数组转换字符串,格式是:[e1,e2...]
public static String arrayToString(int[] arr){
String str = "[";
for (int i = 0; i < arr.length; i++) {
if(i !=arr.length-1){
str = str + arr[i]+",";
}else{
str = str +arr[i]+"]";
}
}
return str;
}
}
public class ArrayToolDemo {
//保证程序的独立运行
public static void main(String[] args) {
int[] arr = {1,2,5,8,6,3,34};
int max = ArrayTool.getMax(arr);
System.out.println("max="+max);
int index = ArrayTool.getIndex(arr, 3);
System.out.println("index="+index);
}
}
复制代码
运行结果:
max=34
index=5
感觉对你有用就给个鼓励吧~
~
作者:
传奇查
时间:
2015-11-27 02:52
自己的帖子自己顶!d=====( ̄▽ ̄*)b!!希望更多小伙伴看到~
作者:
小布丁当
时间:
2015-11-27 22:08
赞一下
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2