------- android培训、java培训、期待与您交流! ----------
java中常用的数组的排序方法
(1) 给定数组的排序选择排序 public static void sort(int[] array){ for(int x=0;x<array.length-1;x++){ for(int y=x+1;y<array.length;y++){ if(array[x]>array[y]){ int temp=array[x]; array[x]=array[y]; array[y]=temp; } } } }
(2)冒泡排序
public static void bubbleSort(int[]arry){ for(int x=0;x<arry.length-1;x++){ for(int y=0;y<arry.length-x-1;y++){//减去x让每次的比较减少,减去一,避免角标越界 if(arry[y]>arry[y+1]){ int temp=arry[y]; arry[y]=arry[y+1]; arry[y+1]=temp; } } } }
(3)* 折半查找,必须保证数组是有序排列的,查找目标在数组中的位置 * @param args */ public static int hashIndex(int[]arr,int key){ int min,max,mid; min=0; max=arr.length-1; mid=(max+min)/2; while(arr[mid]!=key){ if(key>arr[mid]) min=mid+1; else if(key<arr[mid]) max=mid-1; if(min>max) return -1;//元素不在数组内的情况 mid=(max+min)/2; } return mid; } /** * 折半的第二种方式 * @param args */ public static int hashIndex2(int[]arr,int key){ int min=0,max=arr.length-1,mid; while(min<=max){ //当只有一个元素时 mid=(min+max)>>1; if(key>arr[mid]) min=mid+1; else if(key<arr[mid]) max=mid-1; else return mid; } return -1; }
java中的对象
1、java对象中代码块的作用
(1) 作用:给对象进行初始化
对象一建立就运行,而且优先于构造函数执行。(2)和构造函数的区别:
构造代码块是给所有对象进行统一初始化。而构造函数是给对应的对象初始化。
(3)构造代码块中定义的是不同对象共性的初始化内容。
2、
static 特点:
(1)随着类的加载而加载,静态会随着类的消失而消失,也就是生命周期最长
(2)优先于对象存在 静态是先存在,对象后存在class Person{
String name; // 成员变量,实例变量
static String country="CN"; // 静态的成员变量,类变量
}
(3)静态方法中不可以定义this 、super 关键字(4)静态方法中不能出现 成员变量
3、文档制作工具小演示 javadoc
D:\java0217\day06>javadoc -d myhelp -author -version ArrayTool.java
-d 指定存放生成的类文件的位置
myhelp 是文件包
-author指的的类文件中的注释语法@author
-version指的是版本号
4、java中有23种设计模式,咱在这就不讨论了哈,还没资格证
第一种单列设计模式: 保证对象在内存中的唯一性
又称饿汉式 Student 一进内存就已经创建好对象了 ,这个线程是安全线程
class Student{
private int age;
private static Student s=new Student();
private Student(){}public static Student getStudent(){
return s;
}
}
懒汉式 即时延迟加载只有调用Student的getInstance()方法是才加载
懒汉式不是线程安全的,所以需要加锁来判断
class Student{
private static Student s=null;
private Student(){}(1) public static (synchronized) Student getStudent(){ //这个关键字效率低,因为每次都要去判断锁是否被占用
if(s==null)
s=new Student();
return s;
}
(2)//第二种解决方法
public static Student getStudent(){ //解决方案双重判断,相当于把锁包装了,不读锁就会提高效率
if(s==null)
{
synchronized(this){
if(s==null){
s=new Student();
}
}
}
}}
------- android培训、java培训、期待与您交流! ----------