黑马程序员:我的黑马预习课程第一讲:数组

来源:互联网 发布:智多星软件多少钱 编辑:程序博客网 时间:2024/06/09 14:07

---------------------- android培训、java培训、期待与您交流! -----------------------

 

 最近我看了几天的数组视频,受益匪浅。我知道了如果遍历数组,还有数组的排序,以及数组的静态应用。下面就我对数组的了解记录一下我的心得。

一:数组的遍历:数组是一个集合,遍历数组是为了得到数组中的值,遍历数组也必用到了循环结构,根据角标可以取到数组中的任意值。

       我写的一个遍历数组的小程序:

class  ArrayTest
{
 public static void main(String[] args)
 {
       int[] arr={1,5,3,6,7,9};
       ArrayTest1(arr);
 
 }

 public static void ArrayTest1(int[] arr){
 
        System.out.print("[");
    for(int i=0;i<arr.length;i++)
  {
      if(i<arr.length-1){
    System.out.print(arr[i]+",");
   }
   else{
    System.out.print(arr[i]);
    
     }

    }
        System.out.println("]");
 }
}


二:数组的排序:数组的排序方法有很多,在此我写一下选择排序和冒泡排序。

class ArrayTool
{
   /*public static void main(String args[])
   {
       int[] arr={3,4,10,8};
      
       int min=getMin(arr);
      
       System.out.println("min="+min);
     }
     */
    
     //private ArrayTool(){}
    public static int getMin(int[] arr)
    {
      int min=0;
       for(int x=1;x<arr.length;x++)
       { 
         if(arr[x]<arr[min])
          min=x;
       }
       return arr[min];
    }
  
    public 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);
               }
            }
        }
    }
   
    public static void bubbleSort(int[] arr)
    {
      for(int i=0;i<arr.length-1;i++)
      {
       for(int j=0;j<arr.length-i-1;j++)
       {
         if(arr[j]>arr[j+1])
         {
          swap(arr,j,j+1);
         }
       } 
   }
}
   private static void swap(int[] arr,int a,int b)
   {
      int temp=arr[a];
      arr[a]=arr[b];
      arr[b]=temp;
    }
   
  public static void printArray(int[] arr)
  {
   System.out.print("[");
   for(int i=0;i<arr.length;i++)
   {
      if(i!=arr.length-1)
      {
       System.out.print(arr[i]+",");
     }
       else
       {
        System.out.println(arr[i]+"]");
        }
   }
  }
}
/*
class ArrayTool
{
   public static void main(String args[])
   {
       int[] arr={3,4,10,8};
      
       int max=getMax(arr);
      
       System.out.println("max="+max);
     }
    public static int getMax(int[] arr)
    {
      int max=0;
       for(int x=1;x<arr.length;x++)
       { 
       
         if(arr[x]>arr[max])
          max=x;
       }
       return arr[max];
   }
}
*/

其中数组的静态应用特性有:

每一个应用程序中都有共性的功能,可以将这些功能进行抽取,独立封装,以便复用。

虽然可以通过建立ArrayTool的对象使用这些工具方法,对数组进行操作。
发现的问题:
1:对象是用于封装数据的,可是ArrayTool对象并未封装特有数据
2:操作数组的每一个方法都没有用到ArrayTool对象中的特有数据

这时就考虑,让程序更严谨,是不需要对象的,
可以将ArrayTool中的方法都定义成static的,直接通过类名调用即可。

将方法都静态后,可以方便于使用,但是该类还是被其他程序建立对象的。
为了更加严谨,强制让该类不能建立对象。
可以将通过构造函数私有化完成。

 

 

--------------------- android培训、java培训、期待与您交流! ----------------------

原创粉丝点击