数组

 

数组中常见的错误:     1.NullPointerExcepation : 空指针异常          原因:引用的类型变量没有指向任何的对象,在这种情况下还访问了它的属性和方法。

 

    一个对象如果使用完了不会立马释放,只是将这个对象变为一个垃圾对象,由     垃圾回收机制自己来释放。,我们没办法操作它释放。     2.ArrayIndexOutOfBoundsExcepation :数组下表越界

 

//创建一个int类型的数组
  //arr : 是一个变量  只是数组的一个引用地址
  //局部变量存在栈中
  //成员变量 -- 属性  --- > 对堆区中
  //静态变量  --- >  共享区域

java中数组一样存在多维 : 二维数组 ,三维数组

二维数组的定义 格式:
  // 数据类型[][] 数组名 = new 数据类型[][];

想要接收二维数组中的元素 : 需要用一个一维数组来接收

/动态初始化

   //数据类型[][] 数组名 = new 数据类型[][];

   //注意 :前面中括号中数值指的是二维数组元素个数 , 后面一个是指二维数组    //中一维数组的元素个数。

  //静态初始化        //数据类型[][] 数组名称 = {{元素1,..},{元素1,..},{元素1,..}};

   //二维数组中的元素一定是一维数组。

/总结:数组的特点:

    /*      1.数组中只能存同一种数据类型的数据。      2.数组他会给存入的元素默认分配一个索引值 ,索引从0开始。      3.数组一旦初始化,长度就固定了。      4.数组中元素的内存地址是连续的。

 

 

 

 

class Demo11 {  public static void main(String[] args)  {      //定义一个int类型的数组   //数组的长度可以指定也可以不是定   int[] arr = new int[10];   //数组中添加元素   arr[0] = 1;   arr[1] = 2;   //如果元素没有被赋值 默认以0来填充。

  //遍历数组   for(int i = 0 ; i <arr.length ;i++){       System.out.println(arr[i]);   }

  //-------------数组的初始化方式-------------   //1.静态初始化 : 这个值给多少就是多少,不能过改变    int[] arr1 = {1,2,3,4,5,6};   //2.动态初始化 : 不可变的数组  可变数组--->集合  ArrayList    int[] arr = new int[10];  

  //定义一个字符串数组   //默认为:null    String[] strArr = new String[10];

     } }

 

 

class Demo12 {  public static void main(String[] args)  {      //需求:指定一个int类型的数组,给一定元素,将元素从小到大进行排序。   //初始化一个数组   int[] arr = {7,3,9,12,6,2};   //选择排序 : 效率太低比较的次数太多   for(int i = 0;i<arr.length;i++){       for(int j= 1 ; j<arr.length;j++){     if(arr[j-1]>arr[j]){      int temp = arr[j];      arr[j] = arr[j-1];      arr[j-1] = temp;

    }    }   }

  //遍历数组   for(int i=0;i<arr.length;i++){

   System.out.println(arr[i]);   }  

 } }

 

 

 

class Demo14 {  public static void main(String[] args)  {      int num = 4;   int[] arr ={1,2,3,4,5,6};

  //需求:输入一个数,查找数组中是否右这个数   //遍历加判断   for(int i = 0;i < arr.length;i++){       if(num==arr[i]){          System.out.println("数组中存在这个值,索引为:"+i);    }   }  } }

 

 

 

class Demo15 {  public static void main(String[] args)  {      //二分法 : 前提 : 数组要排序好

  int[] arr = {1,2,3,4,5,6};   int num = 5;

  int max = arr.length-1;   int min = 0;   int mid = (max + min) / 2;

  while(true){       if(num > arr[mid]){         min = mid +1;

   }else if (num < arr[mid])    {

    max = mid-1;    }else {          System.out.println("找到了:"+mid);     break;    }

   //没有找到    if(min > max){          System.out.println("没有找到");     break;    }    //重新设置中间值    mid = (max + min)/2;      }

 } }

 

class Demo13 {  public static void main(String[] args)  {      //需求:每次将数组中最大的元素把他移到最右边去   int[] arr = {7,3,9,12,6,2};   //将最大的值移到最右边   //面试经常考的   //------这中排序就是冒泡排序-------------------   for(int i =0;i<arr.length-1;i++){

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

    if(arr[j]>arr[j+1]){      int temp = arr[j];      arr[j]=arr[j+1];      arr[j+1] = temp;     }    }    }

/*   //将第二大的值移到倒数第二位   for(int i =0;i<arr.length-1-1;i++){       if(arr[i]>arr[i+1]){          int temp = arr[i];     arr[i]=arr[i+1];     arr[i+1] = temp;

   }   }

  for(int i =0;i<arr.length-1-2;i++){       if(arr[i]>arr[i+1]){          int temp = arr[i];     arr[i]=arr[i+1];     arr[i+1] = temp;

   }   }

  for(int i =0;i<arr.length-1-3;i++){       if(arr[i]>arr[i+1]){          int temp = arr[i];     arr[i]=arr[i+1];     arr[i+1] = temp;

   }   }

  for(int i =0;i<arr.length-1-4;i++){       if(arr[i]>arr[i+1]){          int temp = arr[i];     arr[i]=arr[i+1];     arr[i+1] = temp;

   }   } */   //遍历数组   for(int j = 0 ; j<arr.length;j++){       System.out.println(arr[j]);   }  } }

 

posted @ 2016-11-27 00:01  大雨IT  阅读(167)  评论(0编辑  收藏  举报