【发布时间】:2017-07-24 13:11:10
【问题描述】:
我对这个问题感到非常沮丧。以下是正在发生的事情的要点:
import static java.lang.System.*;
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(12);
list.add(19);
list.add(442);
list.add(3);
list.add(1);
list.add(9);
out.println(list.toString());
out.println(bubbleSort(list));
out.println(list.toString());
}
public static int bubbleSort(ArrayList<Integer> num) {
int j;
boolean flag = true;
int temp;
while(flag) {
flag = false;
for(j = 0; j < num.size() - 1; j++) {
if(num.get(j) > num.get(j + 1)) {
temp = num.get(j);
num.set(j, num.get(j + 1));
num.set(j + 1, temp);
flag = true;
}
}
}
return num.get(0);
}
}
输出是:
[12, 19, 442, 3, 1, 9]
1
[1, 3, 9, 12, 19, 442]
当我调用方法bubbleSort() 时,为什么ArrayList list 得到排序?当我将其称为bubbleSort(list) 而不是对超出其范围的list 本身进行排序时,该方法不应该创建list 的实例吗?我只希望bubbleSort 通过创建list 的实例、使用冒泡排序对该实例进行排序并返回该实例的第一个值来获得list 的最小值。我错过了一些非常明显的东西吗?我对这个问题的沮丧感到非常厌倦......
【问题讨论】:
-
在 Java 中,您使用
new关键字创建一个新实例,并且您只在您的 sn-p 中执行一次,在main()中。 -
@assylias:我们真的需要一个关于“什么是对象引用”的规范,它根本不会涉及整个传递过程,因为它与 95% 的问题无关人们不明白这一点。 :-)