Semikolon nach geschweifter Klammer

Status
Nicht offen für weitere Antworten.

GilbertGrape

Bekanntes Mitglied
Hallo Gemeinde,

ich weiß nicht genau, ob das etwas Java-spezifisches ist oder ob es das auch in anderen Programmiersprachen gibt. Ich habe es jetzt nur in Javaprogrammen entdeckt.
Ganz am Anfang hat man ja mal gelernt, dass man niiiemals ein Semikolon nach einer geschweiften Klammer setzen darf, jetzt ist mir aber genau dieses begegnet, unter anderem nach einer Methode oder if-Anweisung.
Kann mir jemand sagen was damit erreicht wird?

Danke, Gilbert
 
naja, ich weiß nicht, ob das hilft... (das is auch nur ein Beispiel). Ich wollte es eben generell wissen, wann man sowas macht.

Code:
 public StringList getErrors()
  {
    if (errors==null) errors=new StringList();
    return(errors);
  };
 
das Semikolon in Zeile 5 ist falsch, ja, der Compiler meckert da gar nciht, hmm, auch nicht bei

public void getErrors()
{

};;;;;;;;;;

na stört ja auch nicht

-----

das Semikolon in Zeile 3 wird benötigt
 
also da hat also einfach jemand unnötige Zeichen gesetzt??
Ja, ich meinte nur das Semikolon am Ende. Das andere is mir schon klar 🙂
Nagut, dann nehm ich das mal so hin.
Danke!
 
Ein Semikolon kannst du praktisch überall machen nach }.
Notwendig ist es nur bei einer Array-Initialisierung und Definition einer anonymen inneren Klasse.
 
interessant, dass ich hier gerade so ein beispiel gebracht habe...

http://www.java-forum.org/de/posting.php?sid=b4f35fc1885b119398e20e33660a25f0


Code:
private Iterator getAttributes(Element element){ 

		return new Iterator(){ 

			public boolean hasNext() {
				//hier deine Verhalten
				return false;
			}

			public Object next() {
				//hier deine Verhalten
				return null;
			}

			public void remove() {
				//hier deine Verhalten

			}
		};
	}
da muss der ; sein, weil es zur return anweisung gehört,
 
verstehst du den code? ein iterator ist ein interface, ich könnte eine klasse schreiben die diese interface implementiert und dann return new MeineKlasse(); eine instanz zurück geben.

ich kann die klasse aber auch innerhalb der return anweisung schreiben. ist etwas unübersichtlihc aber für kleine schachen kann mans machen...

bei Runnable, Iterator usw.. sieht mans öffter
 
dann ignoriers einfach, zuviele Semikolons kann man meistens ignorieren

Es gibt aber wichtige Ausnahmen:

if(1+1==3);
{System.out.println("1+1=3");}

for(int i=0;i<5;++i);
{System.out.println("Schleifendurchlauf");}

bei beiden passiert das falsche (jedes Syste.out wird jeweils 1 mal ausgeführt) , weil jeweils ein Semikolon nach den runden Klammern steht:

1 Nach if und for steht IMMER nur EINE Methode.

2 Wenn man mehrere Anweisung in eine geschweifte Klammer packt, gelten diese Anweisung zusammen als EINE einzige Anweisung.

3 Ein Semikolon gilt auch als EINE Anweisung

Das heisst in diesen Beispiel, dass die Anweisung:
;
ausgeführt wird, wenn 1+1==3 ist und die andere Anweisung:
;
5 mal ausgeführt wird

das außerdem im code noch 2 System.out.println stehen, hat nix mit der if und for sache zu tun.
Die eckigen Kalmmern um die System.out.println könnte man auch einfach weglassen, würde nix ändern.
 
Vielen Dank nochmal!
Ich hab den jenigen jetzt mal gefragt und er meinte, dass er sich das inzwischen abgewöhnt hat. Er hatte das wohl noch von irgendeiner anderen Programmiersprache drin. Ich hab mich vorher nur nicht getraut zu fragen, weil ich nich so dumm aussehen wollte 😳 Deshalb hab ich lieber erstmal hier nachgefragt.

Gruß, Gilbert

PS: Wie kann ich das Thema abhaken?
 
Als Beitrag zur allgemeinen Verwirrung:

Code:
package testsemikolon;
;;;
public class Main {
    ;;;
    public static void main(String[] args) {
        ;;;
    }
    ;;;
}
;;;

Compiliert auch. Warum? Was ist denn die Funktion des Semikolons?

Krass vereinfacht, ein Semikolon trennt in einer Liste von Anweisungen/Deklarationen die Anweisungen/Deklarationen voneinander ab*. Oftmals ist der Einfachheit halber auch die leere Anweisung erlaubt, in Java schreibt man dann einfach nichts hin, andere Programmiersprachen haben dafür eine besondere Anweisung, z.B. skip oder pass. Eine Folge von leeren Anweisungen oder Deklarationen hat also die Form ";;;".

Daher sind "zuviele" Semikolons oft legal.

(*) Die Wahrheit.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben