Java 在临时变量中存储静态变量

Java 在临时变量中存储静态变量,java,static,chess,variable-declaration,Java,Static,Chess,Variable Declaration,我试图建立一个国际象棋引擎作为一个长期的项目。目前我正在研究一种翻转电路板的方法(比如翻转电路板,但也改变颜色)。大写字母代表白色部分,小写字母代表黑色部分。但在初始初始化之后,java似乎正在覆盖我的temp变量,即使我没有给它赋值。如System.out.println中所示: “r”字符串温度[][]=棋盘//将棋盘变量的引用分配给临时变量 要制作阵列的深度副本,请尝试以下操作 String[][] temp = new String[chessBoard.length][chessBoa

我试图建立一个国际象棋引擎作为一个长期的项目。目前我正在研究一种翻转电路板的方法(比如翻转电路板,但也改变颜色)。大写字母代表白色部分,小写字母代表黑色部分。但在初始初始化之后,java似乎正在覆盖我的temp变量,即使我没有给它赋值。如System.out.println中所示:
“r”
字符串温度[][]=棋盘//将棋盘变量的引用分配给临时变量

要制作阵列的深度副本,请尝试以下操作

String[][] temp = new String[chessBoard.length][chessBoard[0].length];

String temp[][]=棋盘//将棋盘变量的引用分配给临时变量

要制作阵列的深度副本,请尝试以下操作

String[][] temp = new String[chessBoard.length][chessBoard[0].length];
为什么不:

public static void flipBoard() {
    for(int r=0;r<4;r++){
       String[] temp = chessBoard[r];          
       chessBoard[r] = chessBoard[7-r];
       chessBoard[7-r] = temp;
    }
}
publicstaticvoidflipboard(){
对于(int r=0;r为什么不:

public static void flipBoard() {
    for(int r=0;r<4;r++){
       String[] temp = chessBoard[r];          
       chessBoard[r] = chessBoard[7-r];
       chessBoard[7-r] = temp;
    }
}
publicstaticvoidflipboard(){

对于(int r=0;rYou正在使用temp引用静态棋盘。因此,它们本质上是相同的。您需要创建一个新棋盘并填充.String temp[][]=chessBoard;不会将值复制到新对象,它只会创建对原始棋盘的引用。此链接可能会提供更深入的理解:或者您可以使用swapVariable交换元素。您正在将临时引用作为静态棋盘。因此,它们本质上是相同的。您需要创建一个新的棋盘并opulate.String temp[][]=chessBoard;不会将值复制到新对象,它只会创建对原始chessBoard的引用。此链接可能会提供更深入的理解:或者您可以使用swapVariable交换元素。
public static void flipBoard() {
    for(int r=0;r<4;r++){
       String[] temp = chessBoard[r];          
       chessBoard[r] = chessBoard[7-r];
       chessBoard[7-r] = temp;
    }
}
public static void flipBoard() {
    for(int r=0;r<4;r++){
       for(int c=0;c<8;c++){
          String temp= chessBoard[r][c];        
          chessBoard[r][c] = chessBoard[7-r][7-c];
          chessBoard[7-r][7-c] = temp;
       }
    }
}