Was genau macht "public static void" ?

Lestas89

Bekanntes Mitglied
Ich bringe mir derzeit Java selbst bei und habe eine Frage zu folgendem Programm:
Java:
class PotenzRekursiv {

   static double qHochpRek(int q, int p){
     if(p >= 0){
       if( p == 0)
         return 1;
       else
         return q*qHochpRek(q,p-1);
     }
     else{
       if( p == 0)
         return 1;
       else
         return 1./(q*qHochpRek(q,-p-1));
      
     }
    
   }
   public static void main(String[] args) {
     int q = 2;
     int p = -3;
    
     System.out.println(qHochpRek(q,p));
   }

}
Ich verstehe hier rein garnichts mehr. In der Regel schreibe ich im Programm oben immer public static void main (String[] args). Nun steht oben static double und unten public static void main (String[] args). Was macht dieses static double genau?
 
Zuletzt bearbeitet von einem Moderator:
public - Sichtbarkeit (Öffentlich)
static - Statisch (an die Klasse, nicht das Objekt gebunden)
void/double - Rückgabewert (void = nichts wird zurückgegeben)
 
Ich glaube der Threadersteller möchte wissen warum.die Methode "static double..." VOR der Main steht.

@TE: in Java ist die Reihenfolge von Methoden egal. Deshalb muss die Main aich nicht als 1. stehen.
 
Die Main Methode wird vom Compiler beim Programm start aufgerufen.
public steht für die Sichtbarkeit dieser Methode das heißt das die Methode von überall aufgerufen werden kann.
static heißt das diese Methode auch ohne die Erzeugung des Objektes ereichbar ist.
void steht dafür das diese Methode keinen Rückgabewert hat denn normalerweise gehört jede Methode einem Datentyp an (z.B. int, float oder String) wenn man diesen Rückgabe wert nicht braucht und nur Code ausführen möchte dann nimmt man void.
(String[] args) ist ein String Array. Wenn man ein Programm auf der Konsole ausführt dann kann man dahinter optional Parameter setzen diese landen dann in dem String Array.
 
Ich glaube du hast auch nicht verstanden, dass die main-Methode auch einfach über dem double stehen kann.
Das heißt du könntest die komplette Main-Methode (public static void main(){...}) auch einfach nach oben verschieben.

Dies funktioniert, weil das double, das oben steht, genauso wie die Main-Methode gekapselt sind und einfach in der Klasse liegen.
Du kannst das dir wie ne große Kiste vorstellen, in der nochmal Kleine Boxen liegen.
Die "Kiste" ist die Class, die Boxen (Methoden) die da drin Liegen haben miteinander erstmal gar nix zu tun und da kann auch eine Links liegen, die andere rechts oder die Liegen aufeinander, die Positionierung ist erstmal egal, zumindest solange du die nicht ineinander legst.

Und in den Boxen (Methoden) ist dann eben immer der Code, der was ausführen soll, der "Inhalt".

mfg Major
 
Was "static double qHochpRek(int, int)" macht, sollte eigentlich als Javadoc im Quelltext stehen 😛, der Name ist nämlich recht schlecht gewählt.

"public static void main(String... args)" ist ein möglicher Einstieg ins Programm. Diese Methode wird vorausgesetzt, damit es überhaupt ausführbar wird.
Was die Modifier machen, wurde oben schon beschrieben, der Name und die Parameter entsprechen einem Standard, damit die Methode vom der VM auch ganz sicher gefunden wird, ohne dass die VM irgend etwas anderes über dein Programm weiß.

Und ja, Tutorials zu Jave gib's in Massen. Suche mal nach "Hello World Java" (Hello World ist traditionell das erste Programm, das in jeder Sprache gelehrt wird)
 
Leichenausbuddelnde ihr!
Schämt euch was! 😉

qHochpRek berechnet rekursiv die Potenz von zwei Zahlen!.... Dabei ist ganz bestimmt der erste Wert die Basis und zweiter der Exponent....

Schon Sokrates konnte es!😀
 

Neue Themen


Zurück
Oben