我有疑问。 我正在学习Java,我看到了一个我不理解的行为。 我通过值读取java,并且当你将它发送给方法时,原始变量不应该改变它的值(或者到目前为止我理解的那样)。
所以,我将在这里添加两个在我看来非常相似的案例。 首先,变量不会改变其值。 第二种情况,变量改变了它的价值。
package Chapter10.Part6;
import java.util.Scanner;
// Important: Pass by Value!
public class Chap10Part6 {
public static void main(String[] args) {
Scanner input = new Scanner (System.in);
int number;
System.out.print("Enter a Interger: ");
number = input.nextInt();
System.out.println("Number squared: " + square(number));
System.out.println("Original Number: " + number);
input.close();
}
static int square(int num){
num = num * num;
System.out.println("Number in square method: " + num);
return num;
}
}
package Chapter15.Part4;
import Chapter15.FunctionsPart1;
public class Chap15Part4 {
public static void main(String[] args) {
final int rows = 10;
final int columns = 5;
int [][] table = new int[rows][columns];
FunctionsPart1.build2DArray(table, rows, columns);
FunctionsPart1.display2DArray(table, rows, columns);
System.out.println("");
FunctionsPart1.organize2DArray(table, rows, columns);
FunctionsPart1.display2DArray(table, rows, columns);
}
}
package Chapter15;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;
public class FunctionsPart1 {
public static void build2DArray(int[][] arr, int rows, int columns){
Random rand = new Random(System.currentTimeMillis());
for (int i = 0; i < rows; i++){
for (int j = 0; j < columns; j++){
arr[i][j] = rand.nextInt(101);
}
}
}
public static void display2DArray(int[][] arr, int rows, int columns){
for (int i = 0; i < rows; i++){
for (int j = 0; j < columns; j++){
System.out.print(arr[i][j] + " ");
if((j+1)%columns == 0)
System.out.println("");
}
}
}
public static void organize2DArray(int[][] table, int rows, int columns){
int t = 0;
for(int x = 0; x < rows; x++)
{
for(int y = 0; y < columns; y++)
{
for(int i = 0; i < rows; i++)
{
for(int j = 0; j < columns; j++)
{
if(table[i][j] > table[x][y])
{
t = table[x][y];
table[x][y] = table[i][j];
table[i][j] = t;
}
}
}
}
}
}
}
有人能解释我为什么吗?
感谢您的时间。