黑马程序员-JAVA学习日记-数组

时间:2022-12-08 21:48:39

黑马程序员-JAVA学习笔记

黑马程序员_java编程基础3_数组

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

数组:
    是存储同一种数据类型的的集合,也叫容器; 特点:是数组中每个元素都有索引从0开始;
数组的定义格式:
        数据类型[]数组名=new 数据类型[元素个数]; 数据类型 数组名[]=new 数据类型[元素个数]; 如:
        int[] arr=new int[3];int arr[]=new int[3];
        数据类型[] 数组名=new 数据类型[]{元素};数据类型[] 数组名={元素}; 如:
        int[] arr=new int[]{1,2,3,...}; int[] arr={1,2,3,...};如果元素确定就用这一种;
数组中有一个属性:.length获取数组中的元素个数,即数组的长度;
java中的内存机制:
       栈:
存储局部变量,一般定义在函数内的变量成为局部变量; 特点:当内存中数据操作完成后,所占空间会自动释放栈内存

       堆:是通过new创建的实体都存储在堆内存中; 特点:每一个实体都有内存地址值
           实体中的变量都有默认初始化值整型; byte short int long  0;浮点型 float double 0.0;boolean型 false; char型  '\u0000'空字符
           实体不在被使用时,会在不定时间内被垃圾回收器回收
        方法区:存储方法和静态数据的;
        本地方法区: window调用系统资源使用
        寄存器: CPU使用
数组种常见问题:
           ArrayIndexOutOfBoundsException;访问到了数组中不存在的索引发生
           NullPointException; arr没有指向实体,确在操作实体中的数据时
数组的常见操作:
    遍历:

     class Demo
     {
      public static void main(String[] args)
      {
       int[] arr=new arr[5];
       for (int x=0;x<arr.length;x++)
       {
        System.out.println(arr[x]);
       }
      }
     }

获取最值:
    //获取最大值
     class Demo1
     {
      public static void main(String[]agrs)
      {
       int[]arr={1,3,4,9,5,7};//随意定义一个数组
       int max=getMax(arr);//接受返回的最大值
       System.out.println("max="+max);

      }
      //定义一个功能获取最大值
      public static int getMax(int[]arr)
      {
       int max=arr[0];//假设arr[0]为最大值
                             //对数组进行遍历
       for (int x=1;x<arr.length;x++)
       {   //在遍历过程中比较大小,将大于max的值赋值给max
        if (max<arr[x])
        {
         max=arr[x];
        }
       }
       return max;//返回最大值
      }
     }

 排序:
    选择排序:原理:用0索引位置的元素和其他位置的元素进型比较,第一次,最小值出现在0索引位置上
         class Demo3
         {
       public static void main(String[]agrs)
       {
        int[] arr={1,4,7,2,5,9,6};//随意定义一个数组
        selectSort(arr);
        for (int i=0;i<arr.length;i++)
                            {
                                    System.out.print(arr[i]+" ");
                            }
       }
       //定义一个排序的功能
       public static void selectSort(int[] arr)
       {
        //遍历数组
        for (int i=0;i<arr.length-1;i++)
        {
         //在编历过程中用前一个元素依次向后比较
         for (int x=i+1;x<arr.length;x++)
         {
          if (arr[i]>arr[x])
          {
           change(arr,i,x);//调用换位方法
          }
         }
        }
       }
       //定义一个换位方法
       public static void change(int[]arr,int a,int b)
       {
        int temp=arr[a];
        arr[a]=arr[b];
        arr[b]=temp;

       }
         }

 冒泡排序:原理:相邻元素两两比较,第一次结束后,最大值出现在最大索引位置。
      class Demo3
         {
       public static void main(String[]agrs)
       {
        int[] arr={1,4,7,2,5,9,6};//随意定义一个数组
        selectSort(arr);
        for (int i=0;i<arr.length;i++)
                            {
                                    System.out.print(arr[i]+" ");
                            }
       }
       //定义一个排序的功能
       public static void bubbleSort(int[] arr)
       {
        //遍历数组
        for (int i=0;i<arr.length-1;i++)
        {
         //在编历过程中用前一个元素依次向后比较
         for (int x=0;x<arr.length-1-i;x++)
         {
          if (arr[x]>arr[x+1])
          {
           change(arr,i,x);//调用换位方法
          }
         }
        }
       }
       //定义一个换位方法
       public static void change(int[]arr,int a,int b)
       {
        int temp=arr[a];
        arr[a]=arr[b];
        arr[b]=temp;

       }
         }

 查找:普通查找:任意数组都可以
      class Demo4
      {
       public static void main()
       {
        int[]arr={1,4,7,3,9,2};
        int number=3;
        System.out.println(search(arr,number));

       }
       //定义一个功能实现查找
       public static int search(int[]arr,int number)
       {
        int index=-1;
        //遍历数组
        for (int i=0;i<arr.length;i++)
        {
         if(number==arr[i])//比较是否相同
         {
          index=i;
             break;//得到相同的结果,则结束循环
         }
        }
        return index;//有这个数就返回索引,没有就返回-1
       }
      }
二分查找法:前提是数组要有序;注意:不可以先对数组排序,在进行二分查找
        class Demo5
        {
         public static void main(String[] agrs)
         {
                               int[] arr={1,4,7,2,5,9,6};
          int value=5;
          int index=binarySearch(arr,value);
           System.out.println(index);
         }
         //定义一个功能实现查找
         public static int binarySearch(int[]arr,int value)
         {
          int min=0;
          int max=arr.length-1;
          int mid=(min+max)/2;//得到中间索引
          //定义循环判断是否相同,不同进行循环
          while (arr[mid]!=value)
          {
           if(arr[mid]>value)
           {
            max=mid-1;
           }
           else if (arr[mid]<value)
           {
            min=mid+1;
           }
           //如果小的索引大于大的索引,则说明这个数不存在
           if (min>max)
           {
            return -1;
           }
           mid=(min+max)/2;
          }
          return mid;
         
         }
        }

二维数组:其实是一维数组中的每一个元素是一维数组
    二维数组格式: int[][]arr=new int[3][2];  int[][]arr=new int[3][];int[][]arr={{1,4,2},{6,3,4},{5,3}};
    二维数组的遍历:
     public static void printArray(int[][]arr)
     {
      for (int i=0;i<arr.length;i++)//遍历外层一维数组
      {
       for(int x=0;x<arr[i].length;x++)//遍历内层一维数组
       {
        System.out.println(arr[i][x]+" ");
       }
       System.out.println();
      }
     }
注意特殊写法情况:int[]x,y[];int[] x;是一个一维数组; int[] y[];是一个二维数组;

这些都是我们在学习java基础是必学的java数组基础。

------- android培训java培训、期待与您交流! ----------  详细请查看:http://edu.csdn.net/heima/