Wann wird ein "void" - Methode Einfluss auf die parameter, und wenn hat es Auswirkungen auf das original-Objekt?

Ich bin ganz neu in der Programmierung, als auch auf dieser website, so verzeihen Sie mir, wenn ich die Schraube etwas. Ich habe einen Teufel von einer Zeit, herauszufinden, wie man richtig poste meinen code hier.

package tester;
import java.util.*;
public class Mainclass2 {
    public static void main(String[] args) {

        int y = 3; 
        int[] x = {1, 2, 3, 4};

        editnumbersArray(x);
        editnumbersNotArray(y);

        System.out.println(x[2]); **//now this was changed from 3 to 9...**
        System.out.println(y);    //but this one went unchanged.

    }

    //this accepts 'x[]' into the 'a[]' parameter.
    public static void editnumbersArray(int[] a){
        a[2] = 9;  **//<---why does this one CHANGE the actual x[2] instead of just a[2]?**
    }

    //this accepts 'y' into the 'a' parameter.
    public static void editnumbersNotArray(int a){
        a = 9;  **//<--while this one only changes 'a' instead of 'y'?**
    }

}

Also meine Frage ist im Grunde eingegeben, dort als Kommentare. Warum tut Sie das array, das übergeben wird in der Methode ändern Sie die Werte des ursprünglichen Arrays (x[]) wenn int übergeben wird, in der anderen Methode nicht ändern? Ich bin sicher, es ist eine einfache Antwort, aber wenn ich habe meine Forschung konnte ich nicht herausfinden, was Sie suchen. Ich weiß nicht, was dies heißt also, alles, was ich suchte, führte mich der falsche Weg. Vielen Dank für jede Hilfe!!!!

BEARBEITEN: vielen Dank für die Analogie mit der Adresse! Das ist bei weitem der beste Weg, hätte man es mir erklärt. Also im Grunde, wenn Sie weitergeben ein array in ein parameter, dessen übergabe einer Referenz, nicht der tatsächliche Wert? Also wenn ich Einstellungen in meiner Methode, die seinen ändern, was auch immer das array auf?
Ich bemerkte, dass dies auch passiert mit eine Liste. Also ist die Liste nicht eigentlich durch Wert übergeben? Es scheint, als ob das array/die Liste selbst ist im Grunde bestanden für die Bearbeitung, egal, was ich es nennen, die in meiner Methode (a[] in diesem Fall).

BEARBEITEN http://javadude.com/articles/passbyvalue.htm diese Seite wirklich gelöscht es. Und sorry für die Buchung eine doppelte Frage. Das problem war, dass ich nicht wusste, was ich versucht habe zu Fragen. Ich hatte noch nie gehört, diese Begriffe "pass-by-value/reference", so dass ich nun wissen,

InformationsquelleAutor Ryan | 2013-04-07
Schreibe einen Kommentar