Theoretisch kannst du fast jede Methode oder Variable auf static setzen.
Der Unterschied macht sich nur beim Aufrufen bemerkbar. Statische $Irgendwas brauchen keine Instanzen, während nicht-Statische $Irgendwas einen Compilerfehler erzeugen, wenn sie ohne Instanz aufgerufen werden.
Klassische non-static-Methoden sind z.B. getter und setter:
Die Methode get-Name holt sich die benötigten Werte von demjenigen, der sie aufgerufen hat("this"), braucht also zwingend "Irgendjemanden", der sie aufruft.
Eine klassische static-Methode wäre z.B. die main-Methode, die du brauchst, um ein Programm überhaupt ausführen zu können. Eine Funktion ähnlich getName sähe als static so aus:
Java:
classPerson{privatestaticString name ="schnatter";publicstaticvoidmain(String[]args){name();}publicstaticStringname(){return name;}}
Es gibt hier keine Instanz der Klasse Person oder irgendeiner anderen Klasse, die Methode funktioniert "einfach so".
Ein Array wird ja als lineare statische Datenstruktur angesehen (fester Speicherbedarf). Dann gibt es ja auch noch dynamische lineare Strukturen wie Listen und nicht lineare dynamische Strukturen wie Bäume.
Gibt es auch nicht lineare statische Strukturen? Das hat jetzt also nix mit dem Schlüsselwort "static" zu tun.
Wenn du einen Baum mit fixer Größe vorgibst dann hast du deine "nicht lineare statische" Datenstruktur.
Ob es dafür spezielle Namen gibt -> keine Ahnung. Ob so etwas Sinnvoll wäre sei dahin gestellt.
ok, das mit dem festen Baum leuchtet ein. Ich hätte aber gern ein praxisrelevantes bzw. sinnvolles Beispiel für solch eine nicht lineare statische Struktur.
Wie Joose schon sagt, eine nicht lineare statische Datenstruktur ist ein Baum fester Größe. Den gibt es aber in der Praxis nicht, da diese Datenstruktur nicht dafür da ist fester Größe zu sein. In diesem Beitrag: java - Setting size to TreeSet - Stack Overflow gibt es einen Hinweis darauf, wie man das doch realisieren könnte.
Ein Array wird ja als lineare statische Datenstruktur angesehen (fester Speicherbedarf). Dann gibt es ja auch noch dynamische lineare Strukturen wie Listen und nicht lineare dynamische Strukturen wie Bäume.
Gibt es auch nicht lineare statische Strukturen? Das hat jetzt also nix mit dem Schlüsselwort "static" zu tun.
Mir ist nicht ganz klar was eine statische Datenstruktur sein soll. Ist sie statisch im Sinne von unveränderbar also immutable oder ist sie statisch im Sinne von als Literal hinschreibbar oder ist sie statisch weil sich ihre Größe nicht ändert?
Unveränderbare Datenstrukturen bzw. unveränderbare Views von Datenstrukturen kann man mit ImmutableCollections machen.
Eine Datenstruktur, die kein Array ist und ihre Größe nicht ändert ist eine perfekte Hash-Tabelle. Die wird von Compilern meist dafür benutzt, um die Keywords der Programmiersprache zu speichern, weil die sich bei dem betreffenden Compiler nicht ändern also quasi statisch sind.
Mir ist nicht ganz klar was eine statische Datenstruktur sein soll. Ist sie statisch im Sinne von unveränderbar also immutable oder ist sie statisch im Sinne von als Literal hinschreibbar oder ist sie statisch weil sich ihre Größe nicht ändert?
.