zoukankan      html  css  js  c++  java
  • JAVA基础(七)之数组

    ----------------数组-------------

    一维数组

    第一种格式:
    数据类型[] 数组名 = new 数据类型[元素个数或数组长度];

    int[] x = new int[100];

    //定义数组
    
           int[] arr=new int[5];
    
           arr[0]=1;
    
           arr[1]=100;
    
           arr[2]=50;
    
           System.out.println(arr);

     存储

    可以把一维数组想象成一栋楼房

    在未赋值时用0来填满整个楼。

    0x001代表地址,

    数组下标代表门牌号。

    0x001地址赋给arr.

     

    进行赋值

           arr[0]=1;
    
           arr[1]=100;
    
           arr[2]=50;
    arr[0]=1;表示 地址为0x001的楼 将门牌号是下标为0 给1这个住户。以此类推。
    没有住户的则用0来填充
    所以     System.out.println(arr);打印的只是地址


    输入不存在的数组,报错,

    不定义的数组,用0补齐,一次只能一个数组


    第二格式:
    静态初始化:定义几个变量长度是几个

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

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


    double[] arr =new double[]{1.1,2.5,6.3};

    String[] arr={"你好","悟空","哪吒"};

    String[] arr={"你好","悟空","哪吒"};
    
          for(int i=0;i<arr.length;i++){
    
                     System.out.println(arr[i]);    
    
         }



    求最大值:
    求数组最大值.默认让第一个值当最大值 ,不停的与arr[0]进行对比

    //求最大值
    
           int[] arr={80,6,1,50,22,11};
    
           int max=arr[0];
    
           for(int i=0;i<arr.length;i++){
    
     
    
     
    
               if(arr[i]>max){
    
                  max=arr[i];
    
               }
    
           }
    
           System.out.println(max);


    二维数组:
    1、定义二维数组 外面是二维数组new装的是二维数组的容器,arr是地址集合 

    第一个格式
    int[][] arr=new int[2][3];

    int[2][3]二维数组arr 中包含2个长度为3的一维数组。

    可以把二维数组想象成二栋楼房

    在未赋值时用0来填满整个楼。

    0x001代表第一栋地址单元,0x002代表第二栋地址单元,

    0x001单元,0x002单元地址为名为0x003的小区

    数组下标代表门牌号。

         arr[0][0]=21;
    可以读为0x003 的小区 第0x001单元的第一层住户为21

     

          System.out.println(arr[0]);
    打印的是二维数组中的第一个一维数组arr[0]的地址

    1.定义二维数组

       

      /* 定义数组*/
          int[][] arr=new int[2][3];
    
            arr[0][0]=21;
    
            arr[0][1]=22;
    
            arr[1][1]=23;
    
           System.out.println(arr[0]);//打印为地址--[I@15db9742
    
           System.out.println(arr);


    整个二维数组地址
    2、第二种定义方式

    int[][] arr = new int[2][];

    int arr[][] =new int[2][];
    int [] a1={1,2,3};//a1存储的地址
    int [] a2={4,5,6};
    
    //建立关系
    arr[0]=a1;//偷梁换柱之术,将定义的a1数组赋值到arr[0]
    arr[1]=a2;
    System.out.println(arr[0][0]);
    //注意需要将定义的数组值赋值


    3、第三种

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

    int [][] arr={{1,2},{2,3,4},{5}};
    //双层循环遍历
      for(int i=0;i<arr.length;i++){
    
                     for(int j=0;j<arr[i].length;j++){
    
                     System.out.print(arr[i][j]+" ");
    
                   }
    
                   System.out.println();
    
           }

    数组越界异常ArrayIndexOutOfBoundsException数组超出范围
    空指针异常NullPointerException,即数组没有值

    在Java中 方法的传参 基本数据类型 传的是值 值传递 值在该方法中 改变 属于局部变量改变 当出了该方法 就没有作用了

    在Java中 方法的传参 引用数据类型 传的是地址值 当传入 arr数组在内存中的地址值后 堆内存中连续空间中值发生改变可以影响数组整体

  • 相关阅读:
    HDU 5107 线段树扫描线
    多线程之多生产多消费者
    matlab @
    全概率公式
    正确理解HTML,XHTML页面的头部doctype定义
    每天过的非常充实。
    struts2对action中的方法进行输入校验(2)
    Ubuntu下Chromium源码的编译
    LCA 最近公共祖先 tarjan离线 总结 结合3个例题
    VS2010-win32下cocos2dx控制台打印的方法
  • 原文地址:https://www.cnblogs.com/layuechuquwan/p/11243096.html
Copyright © 2011-2022 走看看