Verständnisproblem bei Java-Code

  • In der Uni müssen wir auch Grundlagen in Java machen und nun habe ich hier ein kleines Verständnisproblem. Vielleicht kann mir jemand helfen.
    Hier der Code:


    public class Scope {

    private static int a = 10;
    private static int c = 5;

    public static void vertausche (int a, int b){
    int h = a;

    a = b;
    b = h;
    System.out.println("a = " + a);
    System.out.println("b = " + b);
    System.out.println("c = " + c);
    }


    public static void main(String[] args) {
    int a = 0;
    int z1 = 14;
    int z2 = 7;
    vertausche(z1, z2);
    System.out.println("z1 = " + z1);
    System.out.println("z2 = " + z2);
    System.out.println("a = " + a);
    }
    }


    a = 7
    b = 14
    c = 5
    z1 = 14
    z2 = 7
    a = 0


    Ich kann nicht nachvollziehen, woher die markierten Werte für a und b kommen.

    Grüße aus Nürnberg!

  • Zitat

    int z1 = 14;
    int z2 = 7;
    vertausche(z1, z2);


    Hier reichst du "14" und "7" als Parameter "a" und "b" an die Funktion "vertausche" weiter.


    Was soll denn da passieren? Möchtest du mit a (10) und c (5) arbeiten?


    vertausche(a, c);

  • Ganz einfach:


    Du rufst ja vertausche(14, 7) auf, also sind in der Methode anfangs die Argumente a=14 und b=7, ok? Dann passiert in der Methode:


    int h = 14;
    a = 7;
    b = 14;


    Die Defintion a=0 aus der main-Methode ist in der Mehode vertausche ja nicht gültig und der statische Member a = 10 wird von dem Argument a der vertausche-Methode überdeckt.


    (Mist, zu langsam... ;))

  • Ok, mittlerweile hat sich das Problem gelöst und ich habs verstanden, danke :)

    Grüße aus Nürnberg!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!