Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Warum erscheint bei mir "Hallo Welt" und nicht die aktuelle Eingabe?
Es geht nicht um das, was wann wie gesehen wird sondern um korrekte Bezeichner. Das eine ist ein Dateiname und das andere der Name der Klasse.
Wenn man das dann ganz genau nehmen will, dann schaut man sich nur die Fehlermeldung an:
error: class XXX is public, should be declared in a file named XXX.java
Da es nur ein Fehler ist, wenn die class "public" ist, dann mach einfach eine java Datei mit irgend einem Namen und eine class, die nicht public ist, also z.B.:
Java:
class Test {
public static void main(String args[]) {
System.out.println("Test");
}
}
Die Datei kannst Du dann übersetzen. Dann wird die Datei mit welchem Namen auch immer gelesen und die Klasse Test erzeugt. Damit entsteht dann ein Test.class
Und das kannst Du dann mit java Test ausführen. Also z.B. mit der Datei "a b.java" (also auch mit Leerzeichen - in Dateinamen ist dies erlaubt nur eben nicht in Bezeichnern):
Java:
D:\Projects\test>javac "a b.java"
D:\Projects\test>dir
Datenträger in Laufwerk D: ist Daten
Volumeseriennummer: C0E1-AE7A
Verzeichnis von D:\Projects\test
24.04.2021 19:32 <DIR> .
24.04.2021 19:32 <DIR> ..
24.04.2021 19:32 97 a b.java
24.04.2021 19:32 398 Test.class
2 Datei(en), 495 Bytes
2 Verzeichnis(se), 219.345.154.048 Bytes frei
D:\Projects\test>java Test
Test
D:\Projects\test>
Aber alles, was ich nur etwas verbessern wollte, war eben der verwendete Begriff. Und da hat man eben den Bezeichner, der den Namen der Klasse angibt und den Dateinamen.
Eine Klasse sollte so heißen wie die beinhaltende Datei. Leerzeichen sind im Klassennamen nicht erlaubt. Ergo ist der Dateiname falsch. Daran gibt es nicht viel zu rütteln.
Eine Klasse sollte so heißen wie die beinhaltende Datei. Leerzeichen sind im Klassennamen nicht erlaubt. Ergo ist der Dateiname falsch. Daran gibt es nicht viel zu rütteln.
Sorry, aber daran habe ich nie gerüttelt (was eine public class angeht). Ich habe Dich nur darauf hingewiesen, dass die Klasse im Namen kein Leerzeichen hat - denn die Klasse auf dem Bildschirmfoto heißt "j".
Und Deine Aussage ist schlicht wieder ungenau - denn der Dateiname wäre z.B. technisch auch ok, wenn das public vor class gelöscht würde. (Aus Clean Code Gründen sollte man es nicht machen, klar. Da bin ich ganz bei Dir.)
Falls es Dir nicht aufgefallen sein sollte: Ich habe Dir nicht wirklich widersprochen sondern lediglich darauf hingewiesen, dass die Aussage von Dir - obwohl sie durchaus das Richtige meinte - technisch nicht ganz korrekt ist. Dateiname und Name der Klasse sind nun einmal zwei Paar Schuhe. Aber die Diskussion müssen wir nicht weiter führen - denn ich sehe gerade nicht, dass es noch zu irgend etwas sinnvollem führen würde ...
Man kann ja durchaus mehrere Klassen in eine Datei packen. Sollte man dann noch eine Klasse (Klassenname) versehentlich in unterschiedlichen Dateien deklariert haben, dann kann die Reihefolge dieser Dateien, im Aufruf von javac, u. U. auch zu einem unterschiedlichen Ergebnis führen. Deshalb sollte man das auch tunlichst unterlassen.
"Sollte" hat nicht die selbe Bedeutung wie "muss". Ergo ist deine Schlussfolgerung falsch.
Aber grundsätzlich hast du natürlich Recht: Die Datei sollte heißen, wie die Klasse und es sollte nur eine Top-Level-Klasse in der Datei deklariert werden.
Nein, ich habe Aussagen versucht auch im Detail richtig zu stellen aber selbst @temi scheinst du nicht verstehen zu wollen.
Du wirst das richtige vorschlagen, aber Deine Aussagen sind so schlicht falsch. Aber ich werde das nicht weiter diskutieren, denn selbst beim IntelliJ Community hast du klare Fakten schlicht geleugnet.
Wobei ich unsicher bin, dass es sich hier um Tobias handelt. Tobias hatte zwar Probleme im Textverständnis aber von der Terminologie war er doch eigentlich so, dass er ein halbwegs vernünftiges Verständnis hatte. Und so grobe Schnitzer a.la. "IntelliJ Community ist nicht kostelos" (was von Moderatoren gelöscht wurde, danke dafür!) waren doch eigentlich nicht seine Art und Weise ....
Aber ja, vielleicht überschätze ich Tobias einfach - die Art und Weise passt auf jeden Fall zu ihm. Aber darüber nachzudenken macht wenig Sinn weil es einfach zu nichts führt. Ob Tobias nun hinter dem Account steckt oder nicht: Spätestens in einer Woche hat er eh wieder einen neuen Account ...