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