Java 二维数组

二维数组

二维数组简单来说就是一个由行和列组成的一个表格,也就是数学中的矩阵。我们在这个矩阵中访问元素的话,是根据元素的行角标和列角标所确定的。

那么具体是在内存中如何存储的呢?

无论是二维数组,还是多维数组,其实它们本身就是一个一维数组;尤其对于二维数组而言,无非就是一个一维数组,只不过该一维数组中的每一个元素是另一个一维数组罢了!

二维数组:二维数组行列组成的表格,格子中内容就是二维数组的元素。

二位数组存储:依旧是在堆内存 ,二维数组就是多个一维数组组成

 创建二维数组:

int[][]  matrix=new int[3][4];  创建一个3行4列的二维数组,元素默认都是0

int[][] matrix=new int[][]{ 

    {1,2,3,4} ,

    {5,6,7,8} ,

    {9,10,11,12} 

};

创建个指定元素的二维数组

int[][] matrix={ 

    {1,2,3,4} ,

    {5,6,7,8} ,

    {9,10,11,12} 

};

锯齿矩阵/二维数组

int[][] matrix={ 

    {1,2,3,4} ,

    {5,6,7} ,

    {8,9},

    {10} 

};
特别的,如果一个二维数组的行和列相等的话,也称之为是方阵

示例

class Test01{
    public static void main(String[] args){
        int[][] matrix={
            {1,2,3,4},
            {5,6,7,8},
            {8,7,6,5},
            {4,3,2,1}
        };
        //matrix.length 表示的就是最外层那个一维数组的长度 行数
        //matrix[i] 表示的是最外层那个一维数组当中角标i的那个元素 只不过这个元素也是一个一维数组
        //matrix[i].length 表示的是这个一维数组元素的长度(当前行的长度)
        //matrix[i][j] 表示的就是这个一维数组元素中角标j的那个元素
        for(int i=0;i<matrix.length;i++){
            for(int j=0;j<matrix[i].length;j++){
                System.out.print(matrix[i][j]+" ");
            }
            System.out.println();
        }
        //int[][] matrix=new int[m][n]; 这个二维数组定义下 
        //内存中一共有几个一维数组  m+1
 
    }
}

基本数据类型与引用数据类型(区别)

基本数据类型传参—— 传的是常量在常量池中的地址;引用数据类型传参—— 传的是对象在堆内存中的地址。

强调一点:实参—>形参 传的永远是地址。

        基本数据类型:是原子型数据 ,也就是说不可再拆分;

        引用数据类型:是复合型数据 ,也就是在当前对象数据中,还包括了其他更多的子数据。
        例如:     int a,b,c;-> arr [a,b,c]       人:姓名 年龄 性别 身高 体重....

        复合型数据 : 指的就是由多个基本数据或其他引用数据组成的一个数据。

         形参变量永远不可能去改变实参中已储存的数据地址 ,除非return 实参且接收, 就算形参变量所存储的数据地址被改变 ,那也是改变形参自己与实参无关。
无非是:
        实参本身指向的是一个对象, 然后把这个对象的地址传递给了形参;形参就可以通过该地址去堆内存中找对象,可以修改对象中的数据;实参再去访问对象时,对象中的数据就已经被改变; 因为实参和形参目前使用操作的都是同一个对象

  总结:

        无论实参还是形参, 实参就是把变量空间所存的地址给了形参而已;  他们都是变量! 所以对于变量的修改而言,主要分两种!

        1.要么改变该变量空间所存储的地址
              int a=3; 
              a=7;
              int[] arr=new int[]{1,2,3};
              arr=new int[]{3,2,1};

        2.要么改变该变量空间所存储的地址所指向的那个对象中的数据

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

             arr[0]=10;  

       

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值