오늘 간단한 프로그램을 작성하는 동안 몇 가지 이상한 동작이 발견되었습니다. 다른 정렬 된 배열을 반환하는 간단한 정렬 방법을 작성했습니다.Java 매개 변수 값 자체가 변경됨
public double[] sortMe(double[] array)
{
double[] narray=new double[array.length];
narray=array;
for(int i=0;i<narray.length;i++)
{
for(int j=0;j<narray.length;j++)
{
if(narray[i]<narray[j])
{
double temp=narray[i];
narray[i]=narray[j];
narray[j]=temp;
}
}
}
// TODO Auto-generated method stub
return narray;
}
드라이버 클래스에서이 sortMe 메서드를 호출하면 내 testArray도 업데이트됩니다. testArray가 sortMe 메소드의 범위를 벗어 났으므로 testArray가 정렬되면? 당신의 sortMe
방법에서
double [ ] testArray = {3, 6, 2, 5, 8, 4, 1, 7};
double [ ] results;
results = af.sortMe(testArray);
af.printMe(results);
'Pass by Value'및 'Pass by Reference'에 대해 읽어보십시오. 그것은 당신의 질문에 대답 할 것입니다. http://stackoverflow.com/questions/373419/whats-the-difference-between-passing-by-reference-vs-passing-by-value –
이것을 확인하십시오. http://stackoverflow.com/questions/40480/is-java-pass-by-reference – root