Java對基元傳遞值,對其他所有元素(包括數組)傳遞引用(值)。
http://javadude.com/articles/passbyvalue.htm
什麼,基本上意味着你的功能沒有得到陣列的副本,它得到了數組本身。
嘗試一個int(原始值不會改變,因爲它是一個原語)。
public static void main(String [] args){int {ray} = {3,4,5,6,7}; change(ray);
for(int y: ray){
System.out.println(y);
}
}
public static void change(int i){
i = i + 10;
}
public static void change(int x[]){
for(int counter = 0; counter < x.length;counter++){
x[counter]+=5;
}
}
有人會說,Java的總是按值傳遞,但那是因爲定義一個糟糕的選擇,當涉及到的引用。
對象在概念上是按引用傳遞的,而基元是按值傳遞的。你可以稱它爲你喜歡的,但它看起來像一隻鴨子,像鴨子一樣走路,像鴨子一樣嘎嘎叫。
試試這個,你會得到一個更好的主意:
/**
* Main
*
*/
public class Main {
static class IntegerClass {
int internal;
public IntegerClass(int i) {
internal = i;
}
public void setInternal(int i) {
internal = i;
}
public int getInternal() {
return internal;
}
}
public static void main(String[] a) {
int x = 10;
changeInteger(x);
System.err.println(x);
IntegerClass ic = new IntegerClass(10);
changeIntegerClass(ic);
System.err.println(ic.getInternal());
}
public static void changeIntegerClass(IntegerClass ic) {
ic.setInternal(500);
}
public static void changeInteger(Integer i) {
i = 500;
}
}
[Java是*始終*傳遞按值(http://stackoverflow.com/questions/40480/is-java-通過引用或按值傳遞) –