thinkpadshi 2015-12-07 03:28 采纳率: 50%
浏览 1498
已采纳

Java int二维数组值的变化

下面这段程序,为什么再次输出a的值的时候,已经变成了c的值了?有点诡异

public class Test {
public final int TYPE_ADD = 1;

/**
 * 矩阵类,实现n阶矩阵的加、乘、转置运算
 * 
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
    int[][] a = { { 1, 2 }, { 2, 3 } };
    int[][] b = { { 4, 5 }, { 6, 7 } };
    Test m = new Test();

    System.out.println("输出原始矩阵a:");
    for (int i = 0; i < a.length; i++) {
        for (int j = 0; j < a[i].length; j++) {
            System.out.print(a[i][j] + "\t");
        }
        System.out.println();
    }

    System.out.println("两矩阵相加:");
    int[][] r = m.matrix_add(a, b);
    for (int i = 0; i < r.length; i++) {
        for (int j = 0; j < r[i].length; j++) {
            System.out.print(r[i][j] + "\t");
        }
        System.out.println();
    }

    System.out.println("再次输出原始矩阵a:");
    for (int i = 0; i < a.length; i++) {
        for (int j = 0; j < a[i].length; j++) {
            System.out.print(a[i][j] + "\t");
        }
        System.out.println();
    }
}

// 矩阵相加
public int[][] matrix_add(int[][] a, int[][] b) {
    int[][] c = a;
    if (inputLegal(a, b, TYPE_ADD)) {// 只有同型矩阵才能相加
        for (int i = 0; i < a.length; i++) {// i控制行
            for (int j = 0; j < a[i].length; j++) {// j控制列
                c[i][j] = a[i][j] + b[i][j];
            }
        }
    }
    return c;
}

// 矩阵类型校验
public boolean inputLegal(int[][] a, int[][] b, int type) {
    boolean flag = true;
    if (type == TYPE_ADD) {
        if (a.length != b.length || a[0].length != b[0].length) {
            flag = false;// 判断是否为同型矩阵
        }
    }
    return flag;
}

}


  • 写回答

5条回答 默认 最新

  • bdmh 移动开发领域优质创作者 2015-12-07 03:33
    关注

    matrix_add中有这句话不行int[][] c = a
    这样c就指向了a,他俩是同一个内容,数组是引用类型,修改c就是在修改a

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?