黑马程序员_关于数组的排序和java对象

 

 ------- 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培训、期待与您交流! ----------  

 

详细请查看:http://edu.csdn.net/heima/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值