黑马程序员--编程基础VI--

来源:互联网 发布:软件看门狗 编辑:程序博客网 时间:2024/05/20 00:12

------- <a  target="blank">android培训</a>、<a  target="blank">java培训</a>、期待与您交流! ----------



数组:

(1)一维数组:

格式1int[] arr = new int[5];

元素类型[] 数组名 = new 元素类型[元素个数或数组长度];

左边:

int: 元素类型

[]: 数组的意思

arr:数组名  

右边:

new: 创建的意思, 创建一个实体:

实体:存放很多内容的东西

int: 数组中的元素的数据类型

[]: 数组

5: 数组中元素的个数  或者 数组的长度

 

格式2int[] arr = new int[]{1,3,5,7};

           元素类型[] 数组名 = new 元素类型[]{元素,元素,……};

 

格式3int[] arr = {2,4,6,8};

           元素类型[] 数组名 = {元素,元素,……};

         

 

java的内存划分:

A:栈内存

B:堆内存

C:方法区:

D:本地方法区:与系统相关的资源,我们java调用不了的

E:寄存器: 与CPU相关的资源

 

定义数组的常见错误:

正确的:

int[] arr = new int[3];

int[] arr2 = new int[]{1,2,3};

int[] arr3 = {1,2,3};

int[] arr4;

arr4 = new int[3];

 

错误的:

int[] arr5 = new int[];

int[] arr6 = new int[3]{1,2,3};

int[] arr7;

arr7 = {1,2,3};

 

数组操作常见问题:

          A:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException

          数组角标越绝异常:当访问的元素, 超过了最大角标的时候 

         B:Exception in thread "main" java.lang.NullPointerException

          空指针异常:  当实体为垃圾后, 再访问实体中的数据,就会发生该异常


 代码体现:

       

class ArrayDemo{

         public static void main(String[] args) {

                    int[] arr = new int[3];

                    //角标越界

                   System.out.println(arr[3]);

 

                    arr = null;

                     //空指针异常

                  System.out.println(arr[0]);

 

         }

}

 

// 遍历数组:

 代码体现:

class ArrayDemo2{

        public static void main(String[] args) {

                    //给一个数组

                    int[] arr = {65,13,78,54,89,95};

                    //调用

                     printArray(arr);

           }

           

           public static void printArray(int[] arr) {

                     //打印一个前括号

                     System.out.print("[");

                     //依次得到每个元素

                    for (int x=0; x<arr.length; x++) {

                          //判断

                         if (x == arr.length-1) {

                                System.out.print(arr[x]);

                         } else {

                                     System.out.print(arr[x]+",");

                                   }

                    }                  

                     //打印后括号

                     System.out.println("]");

            }

}

 

Java中的参数传递:

A:参数传递的时候,如果传递的是 基本数据类型,形参的改变 对 实参没有影响

B: 如果传递的是 引用数据类型(地址,其实地址值,也是数值), 形参的改变 堆 实参有    影响


java的参数传递中 使用的方式是, 值传递, 还是 址传递 

       java中 只用 值传递

 

获取最大值的案例:

class ArrayDemo3{

         public static void main(String[] args) {

                    int[] arr = {12,23,45,13,65}

 

                   //获取元素最大值

                   int max = getMax(arr);

 

                        System.out.println("max=" + max);

 

         }

 

        public static int getMax(int[] arr) {

                   //定义一个参照物

                    int max = arr[0];

 

                 for (int x=1; x<arr.length; x++) {

                               //判断

                        if (arr[x] > max) {

                               max = arr[x];

                         }

                 }

                    //返回最大值

                    return max;

 

           }

}

 

排序:

public class ArrayDemo4 {

   

         public static void main(String[] args) {

 

                         int [] arr={13,46,27,67,21,17};

                         printArray(arr);

                         selectSort(arr);

                         bubbleSort(arr);

                         printArray(arr);

            }

            / *选择排序:0索引位置,依次和后面的元素进行比较。

                第一次结束后,最小值出现在了0索引位置。*/

 

         public static void selectSort(int [] arr){

                    for(int x=0;x<arr.length-1;x++){

                             for(int y=x+1;y<arr.length;y++){

                                   if(arr[x]>arr[y]){

                                            int temp=arr[x];

                                            arr[x]=arr[y];

                                            arr[y]=temp;

                                     }

                                  }

                          }

 

           }

 

           //冒泡排序:相邻元素两两比较,大的后放。

          public static void bubbleSort(int [] arr){

                     for(int x=0;x<arr.length-1;x++){

                             for(int y=0;y<arr.length-1-x;y++){

                                  if(arr[y]>arr[y+1]){

                                           int temp=arr[y];

                                           arr[y]=arr[y+1 ];

                                                   arr[y+1]=temp;

     

                                     }

                                  }

                         }

              }

               //遍历数组

              public static void printArray(int [] arr){

                         System.out.print("[");

                         for(int x = 0; x<arr.length;x++){

                                   if(x==arr.length-1){

                                           System.out.print(arr[x]);

                                    }else{

                                            System.out.print(arr[x]+",");

                                           }

                              }

  

                              System.out.println("]");

               }

}

 

查找:

代码体现:

class ArrayDemo5{

         public static void main(String[] args) {

                   int[] arr = new int[]{1,3,9,5,7};

 

                            System.out.println("查询9在数组中的位置" + getIndex(arr, 9) );

                            System.out.println("查询3在数组中的位置" + getIndex(arr, 3) );

                            System.out.println("查询-3在数组中的位置" + getIndex(arr, -3) );

 

                 int[] arr2 = new int[]{11,23,34,45,56,67,78};

                            System.out.println("67在数组中的位置:"+ halfSearch(arr2, 67) );

                            System.out.println("23在数组中的位置:"+ halfSearch(arr2, 23) );

                            System.out.println("-23在数组中的位置:"+ halfSearch(arr2, -23) );

                            System.out.println("90在数组中的位置:"+ halfSearch(arr2, 90) );

 

           }

 

         /*

          二分查找

          返回类型: int

        未知内容: int[] arr, int value

        */

       public static int halfSearch(int[] arr, int value) {

                   //定义3个变量 min, mid, max

                     int min = 0;

                     int max = arr.length -1;

                     int mid = (min + max)/2;

 

                    while (value != arr[mid]) {

                             //判断

                            if (value > arr[mid]) {

                                  //在右侧

                                    min = mid + 1;

                            } else {

                                 //在左边

                                   max = mid -1;

                                      }

 

                            //更新 mid

                             mid = (min + max)/2;

 

                            //当最小角标 大于 最大角标时, 证明 数据没有查询到

                             if (min > max) {

                                     mid = -1;

                                    break;

                             }

                    }

 

                     return mid;

            }

 

 

 

          /*

            普通查找

            明确:

            返回类型:int

            未知内容:int[] arr, int value

 

           如果 查询到数值, 返回 数值对应的角标值

            没有查询到, -1 代表 没有查到

           */

          public static int getIndex (int[] arr, int value) {

                    int index = -1;

 

                   //通过循环得到元素 依次比较,如果比较成功,返回角标值

                   for (int x=0; x<arr.length; x++) {

                             //判断

                            if (arr[x] == value) {

                                          index = x;

                             }

                   }

                    return index;

 

              }

}


 

(2)二维数组:

格式1int[][] arr = new int[3][2];

定义了名称为arr的二维数组

 二维数组中有3个一维数组

 每一个一维数组中有2个元素

 一维数组的名称分别为arr[0], arr[1], arr[2]

 给第一个一维数组1脚标位赋值为75写法是:arr[0][1] = 75;

 

 

 

格式2int[][] arr = new int[3][];

 二维数组中有3个一维数组

 每个一维数组都是默认初始化值null

 可以对这个三个一维数组分别进行初始化

  arr[0] = new int[3];

  arr[1] = new int[1];

  arr[2] = new int[2];

 

 

 格式3int[][] arr = {{3,8,2},{2,7},{9,0,1,6}};

 定义一个名称为arr的二维数组

 二维数组中的有三个一维数组

 每一个一维数组中具体元素也都已初始化

 第一个一维数组 arr[0] = {3,8,2};

 第二个一维数组 arr[1] = {2,7};

 第三个一维数组 arr[2] = {9,0,1,6};

 第三个一维数组的长度表示方式:arr[2].length;

 

代码体现:

class Array2Demo {

         public static void main(String[] args) {

 

                     int[][] arr = {{3,8,2},{2,7},{9,0,1,6}};

 

                      printArray(arr);

                          int sum = getArraySum(arr);

                            System.out.println("sum="+ sum);

         }

 

        /*

        数组元素的值 和

        返回类型:int

        未知内容:int[][] arr

       */

     public static int getArraySum( int[][] arr) {

            //创建一个变量 存放累加和

             int sum = 0;

             //获取每一个元素

            for (int x=0; x<arr.length; x++) {

                  for (int y=0; y<arr[x].length; y++) {

                        // 元素依次相加到 累加和变量中

                           sum += arr[x][y];

                    }

             }

               return sum;

      }

 

 

 

     /*遍历 二维数组

      返回类型: void

      未知内容:int[][] arr*/

 

     public static void printArray (int[][] arr) {

                 for (int x=0; x<arr.length; x++) {

                           for (int y=0; y<arr[x].length; y++) {

                                         System.out.print(arr[x][y] +"    ");

                             }

                                        System.out.println();

                       }

      }

}

------- <a  target="blank">android培训</a>、<a  target="blank">java培训</a>、期待与您交流! ----------

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



 

0 0
原创粉丝点击