# 设计模式:
概念:是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性
# 单例模式Singleton:
!).饿汉式—实现单例模式:保证一个类仅有一个实例
class MySingleton{
//1,不让外界随便new--私有化构造方法
private MySingleton(){}
//2,在内部创建一个对象,给外界提供
//加static的原因:::要被静态资源getM()调用,必须也要变成静态的
static private MySingleton m = new MySingleton();
//3,给外界提供公共的方法,返回m
//加static的原因:::无法通过对象的方式访问,只能通过类名直接调用
static public MySingleton getM(){
return m ;
}
}
!!).懒汉式—按需加载–线程安全
–怎么判断,数据,在多线程编程时,有没有安全隐患?
–如果有多条记录操作了共享数据,一定要加锁
class MySingleton2{
private MySingleton2(){}
static private MySingleton2 m;
//共享资源m是静态的,使用的锁对象必须是固定的类名.class
//如果是静态方法,加锁后,自动分配的锁对象就是类名.class
// synchronized static public MySingleton2 getM(){
static public MySingleton2 getM(){
synchronized (MySingleton2.class){
if (m == null) {//判断,没new过才new
m = new MySingleton2();
}
return m;
}
}
!!!).main方法测试
public static void main(String[] args) {
// new MySingleton();
// new MySingleton();
MySingleton m1 = MySingleton.getM();
MySingleton m2 = MySingleton.getM();
//==比基本类型是比值,比引用类型比的是地址值
System.out.println(m1==m2);//true
MySingleton2 m3 = MySingleton2.getM();
MySingleton2 m4 = MySingleton2.getM();
System.out.println(m3==m4);
}
# # 冒泡排序
!!!直接上代码!!!
public static void ArraySortTest() {
int[] ages= {21,27,31,19,50,32,16,25};
System.out.println(Arrays.toString(ages));
//控制比较轮数
for(int i=1;i<ages.length;i++) {
//每轮比较多少
for(int j=0;j<ages.length-i;j++) {
if(ages[j]>ages[j+1]) {
int tmp=0;
tmp=ages[j];
ages[j]=ages[j+1];
ages[j+1]=tmp;
}
}
}
System.out.println(Arrays.toString(ages));
}