In meiner Java-Klasse haben wir gerade über Umfang erfahren. Und von gelernt, ich meine es wurde einmal kurz erwähnt und nie wieder gesprochen. Einige Fragen wurden gepostet, und ich habe Probleme, den Unterschied zwischen zwei Codeabschnitten zu verstehen. Die erste:Private, Static und Umfang der Variablen in Java
public class Shadow3 {
private static int i = 99;
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
System.out.println(i);
}
}
Und die zweite:
public class Shadow4 {
private int i;
public void doSomething(int n) {
for (int i = 0; i < n; i++) {
System.out.println(i);
}
}
public static void main(String[] args) {
new Shadow4().doSomething(9);
}
}
Ich verstehe, dass der Fehler mit dem ersten ist nicht, dass die Variable zweimal deklariert wird, aber ich verstehe nicht, warum der Anwendungsbereich der in der Shadow-Klasse deklarierten Variablen erreicht nicht die Hauptmethode, um einen Duplizierungsfehler zu verursachen. Ich verstehe auch, warum in der ersten Stück Code, die Variable ich nicht als private statische deklariert werden kann, wenn es dann in der for-Schleife verwendet wird, weil die Werte von i in der for-Schleife vorübergehend sind, aber ich verstehe nicht, wie dann die Variable i im zweiten Teil des Codes ist gültig, weil sie immer noch privat ist.
Ich glaube nicht, entweder Blöcke verwenden würde, von Code haben Fehler. Warum glaubst du, tun sie? For-Schleifen haben temporäre Variablen, die nur auf sie beschränkt sind. Hast du diese Codes ausgeführt? Was haben Sie bemerkt? –
Nun wow du bist völlig richtig. Ich löschte und machte meine Klasse neu und versuchte es erneut, und es funktionierte! Ich muss einen anderen Fehler in meinem Code verpasst haben. Danke :) –
Hier ist die gleiche Frage http://stackoverflow.com/questions/10459487/difference-between-public-static-and-private-static-variables – Neeraj