이 사람이 나에게 설명해 주시겠습니까 최종 int 배열을 조작한다?방법 반환 null가
final int [] vals = {2,3};
int [] vals2 = multiply(vals);
for(int i : vals) System.out.println(i);
int [] multiply(int [] in){
for(int i = 0; i < in.length;i++){
in[i] *= 2;
}
return null;
}
OUPUT :
4
6
편집 : 배열을 반환하는 방법 만이 문제를 발견했습니다
. 원래의 정수 값을 변경하지 않습니다 int를 반환 동일한 방법 ...
전체 코드 :
public class Main{
public Main(){
int [] myList = {56, 32, 200};
int [] newList = myList;
bubble_sort(newList);
for(int i : myList){ System.out.println(i); }
System.out.println();
for(int i : newList){ System.out.println(i); }
}
public int [] bubble_sort(int a[]){
int n = a.length;
int [] s = a;
for (int i = 0; i < n ; i++){
for (int j = n - 1; j >= (i+1); j--){
if (s[j - 1] > s[j]){
int t = s[j - 1];
s[j - 1] = s[j];
s[j] = t;
}
}
}
return null;
// return s;
}
public static void main(String [] args){
new Main();
}
}
편집 :
다음 코드는 예상대로 다음과 같은 출력을 생성 : 2, 4
int vals = 2;
int vals2 = multiply(vals);
System.out.println(vals);
System.out.println(vals2);
int multiply(int in){ return in*2; }
내 질문에, int를 반환하는 메서드는 입력 값을 변경하지 않지만 배열을 반환하는 메서드는 입력 원래 값을 변경하지 않는 이유는 무엇입니까?
실제로 곱하기를 호출하면 결과가 의미가 있다고 생각합니다. 당신이 제공 한 엄격한 예제에서 출력은 2, 3이되어야합니다. 그러나 곱하기를 먼저 호출하면 제안 된 결과를 얻게됩니다 – Cruncher
코드에서 myList와 newList는 동일한 배열을 참조하므로 하나를 변경합니다 그들 중 다른 하나도 바뀝니다. – arshajii