Java: Unterschied zwischen den Versionen

Aus Flinkwiki
Wechseln zu: Navigation, Suche
(IntelliJ IDEA)
(Übersetzung von Quellcode in Bytecode)
 
(106 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
 
<div align="right"><big>'''[https://flinkwiki.de/index.php?title=Kategorie:Alle_Seiten Seitenübersicht]'''</big></div>
 
<div align="right"><big>'''[https://flinkwiki.de/index.php?title=Kategorie:Alle_Seiten Seitenübersicht]'''</big></div>
 +
<div align="right">'''[[Java: JavaFX|Zur Seite "Java: JavaFX"]]'''</div>
 +
<div align="right">'''[[Java: Swing|Zur Seite "Java: Swing"]]'''</div>
 +
<div align="right">'''[[IntelliJ IDEA|Zur Seite "IntelliJ IDEA"]]'''</div>
 
<div align="right">'''[[Eclipse|Zur Seite "Eclipse"]]'''</div>
 
<div align="right">'''[[Eclipse|Zur Seite "Eclipse"]]'''</div>
 +
<div align="right">'''[[Netbeans|Zur Seite "Netbeans"]]'''</div>
 +
<div align="right">'''[[Java: Beispiele|Zur Seite "Java: Beispiele"]]'''</div>
 +
<div align="right">'''[[Kotlin|Zur Seite "Kotlin"]]'''</div>
  
 +
 +
== Allgemeines ==
 +
 +
[https://docs.oracle.com/javase/specs/ Java Language and Virtual Machine Specifications]
 +
 +
[https://docs.oracle.com/en/java/javase/15/ JDK 15 Documentation]
 +
 +
[https://docs.oracle.com/en/java/javase/14/ JDK 14 Documentation]
 +
 +
[https://docs.oracle.com/en/java/javase/14/docs/api/ Java® Platform, Standard Edition & Java Development Kit - Version 14 API Specification]
 +
 +
[https://docs.oracle.com/javase/8/docs/api/ Java™ Platform, Standard Edition 8 API Specification]
 +
 +
----
 +
 +
Installation unter Ubuntu:
 +
 +
* https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-on-ubuntu-20-04-de
 +
 +
----
  
 
== Übersetzung von Quellcode in Bytecode ==
 
== Übersetzung von Quellcode in Bytecode ==
  
Wenn keine IDE wie ''Eclipse'' mit einem Menüpunkt ''Run'' zur Verfügung steht, kann man die ''java''Datei auch auf der Kommandozeile (bash, cmd etc.) übersetzen:
+
Wenn keine IDE wie ''Eclipse'' mit einem Menüpunkt ''Run'' zur Verfügung steht, kann man die ''java''-Datei auch auf der Kommandozeile (bash, cmd etc.) übersetzen:
 
  <code>javac</code> Dateiname.java
 
  <code>javac</code> Dateiname.java
 
Es entsteht eine Datei ''Dateiname.class'', die mit dem Befehl  
 
Es entsteht eine Datei ''Dateiname.class'', die mit dem Befehl  
Zeile 25: Zeile 51:
  
 
----
 
----
 +
== Java Archive (JAR-Datei) ==
 +
 +
Erzeugung in Netbeans:
 +
 +
> ''Run > Clean and Build""
 +
 +
----
 +
 +
Erzeugung im Terminal /cmd:
  
== Troubleshooting ==
+
jar -cvf Dateiname.jar Datei.class
  
Paket ''javax.swing'' lässt sich in Eclipse nicht importieren. Abhilfe:
+
 
# Right-click on the project
+
* https://www.webucator.com/how-to/how-create-jar-file-java.cfm
# Select properties
 
# Java build path
 
# Library > Add Library > Add JRE SYSTEM Library
 
# Execution Environment
 
# Select JavaSE-1.7
 
# Finish
 
[https://stackoverflow.com/questions/23209125/unable-to-import-javax-swing-jframe]
 
  
 
----
 
----
  
== Beispiele ==
+
Aufruf:
 +
 
 +
Aus der Kommandozeile kann man Jar-Dateien mit <code>java -jar</code> starten.
 +
 
 +
----
  
=== Wörter zählen ===
+
== Eingabe über die Konsole (Tastatureingabe) ==
 +
=== JOptionPane ===
  
 
  <nowiki>
 
  <nowiki>
package de.kaiguenster.javaintro.wordcount;
+
import javax.swing.*;
  
import java.io.*;
+
public class SwingPane {
 +
    public static void main(String[] args) {
 +
        String name = JOptionPane.showInputDialog("Wie ist Ihr Name?");
 +
        System.out.println("Sie heißen also " + name + ".");
 +
    }
 +
}
 +
</nowiki>
 +
Es öffnet sich eine Dialogbox für die Eingabe. Bei Eingabe einer Zahl muss diese gegebenenfalls mit ''Integer.parseInt()'' oder ''Float.parseFloat()'' umgewandelt werden.
 +
 
 +
Die Ausgabe eines Ergebnisses kann ebenfalls über ein Fenster erfolgen: ''JOptionPane.showMessageDialog('''null''', "Das Ergebnis lautet: " + ergebnis)''.
 +
 
 +
----
 +
 
 +
=== Klasse ''Scanner'' ===
 +
 
 +
<nowiki>
 +
public class Skanner {
 +
    public static void main(String[] args) {
 +
        Scanner eingabe = new Scanner(System.in);
 +
        System.out.println("Geben Sie bitte Ihren Namen ein:");
 +
        String name = eingabe.next();
 +
        System.out.println("Sie heißen also " + name + ".");
 +
    } 
 +
}
 +
</nowiki>
 +
Methoden für ''Scanner'':
 +
* ''next()'' >> Eingabe eines Wortes
 +
* ''nextLine()'' >> Eingabe einer Textzeile
 +
* ''nextInt()'' >> Eingabe einer Ganzzahl
 +
* ''nextFloat()'' >> Eingabe einer Fließpunktzahl
 +
* ''nextDouble()'' >> Eingabe einer Fließpunktzahl
 +
Achtung: ''nextFloat()'' und ''nextDouble()'' erkennen die Lokalisierung des Rechners. Auf einem "deutschen" Rechner ist die Zahl mit Komma und nicht  mit Punkt einzugeben.
 +
 
 +
----
 +
 
 +
Um Werte vom Typ ''char'' zu erhalten, verwendet man die Methode ''findWithinHorizon()'':
 +
<nowiki>
 
import java.util.*;
 
import java.util.*;
  
/**
+
public class Skanner {
* Ein einfacher Wortzähler, der aus einem beliebigen {@link InputStream} Wörter zählt.  
+
    public static void main(String[] args) {
* Wörter sind alle Gruppen von alphabetischen Zeichen. Das führt zum Beispiel beim
+
        Scanner eingabe = new Scanner(System.in);
* abgekürzten "geht's" dazu, dass es als "geht" und "s" gezählt wird.
+
        System.out.println("Geben Sie bitte Zeichen 1 ein:");
* @author Kai
+
        char zeichen1 = eingabe.findWithinHorizon(".", 0).charAt(0);
*/
+
        System.out.println("Geben Sie bitte Zeichen 2 ein:");
public class WordCount {
+
        char zeichen2 = eingabe.findWithinHorizon(".", 0).charAt(0);
 +
        System.out.println("Zeichen 1 + Zeichen 2 ergeben zusammen " + zeichen1 + zeichen2 + ".");
 +
    } 
 +
}
 +
</nowiki>
  
 +
----
 +
 +
[http://www.gailer-net.de/tutorials/java/Notes/chap11/ch11_3.html Ein double von der Tastatur einlesen]
 +
----
 +
 +
=== Klasse ''BufferedReader'' und Methode ''readLine()'' ===
 +
* ''InputStreamReader'' erlaubt die Umsetzung eines Bytestreams in einen Zeichenstream. Bytes werden gelesen und in Zeichen dekodiert.
 +
* ''BufferedReader'' liefert einen gepufferten Eingabe-Stream für Unicode-Zeichen.[https://www.dpunkt.de/java/Referenz/Das_Paket_java.io/4.html]
 +
* Die statische Methode  ''readLine()'' stellt einen formatierten Prompt zur Verfügung und liest dann eine Textzeile von der Konsole.
 +
Beispiel:
 +
<nowiki>
 +
import java.io.*;
 +
 +
public class MeineEingabe {
 
      
 
      
    private InputStream source;
+
     public static void main(String[] args) throws IOException {
    private Map<String, Integer> wordCounts = new HashMap<>();
+
         String s;
    private int totalCount = 0;
+
       
   
+
         BufferedReader eingabe = new BufferedReader(new InputStreamReader(System.in));
    /**
+
       
    * Erzeuge ein neues WordCount-Objekt aus einem {@link InputStream}
+
        System.out.println("Bitte um Tastatureingabe: ");
    * @param source - der Inputstream, aus dem gelesen wird. Sollte auch wirklich
+
        s = eingabe.readLine();
    * Textdaten enthalten, sonst ist das Ergebnis ungewiss.
+
        System.out.println("Ausgabe: " + s);
    */
+
          
     public WordCount(InputStream source){
 
         this.source = source;
 
    }
 
   
 
    /**
 
    * Zählt Wörter aus dem InputStream
 
    */
 
    public void count(){
 
         try(Scanner scan = new Scanner(source)){
 
            scan.useDelimiter("[^\\p{IsAlphabetic}]+");
 
            while (scan.hasNext()){
 
                String word = scan.next().toLowerCase();
 
                totalCount++;
 
                wordCounts.put(word, wordCounts.getOrDefault(word, 0) + 1);
 
            }
 
         }   
 
 
     }
 
     }
 +
}
 +
</nowiki>
  
    /**
+
Man kann sich auf dieser Grundlage ein Set vorgefertigter Methoden für die Konsoleneingabe "basteln":
    * @return die Anzahl Wörter im Text
+
<nowiki>
    */
+
     public static String readString() {
     public int getTotalCount(){
+
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
         return totalCount;
+
        try {
 +
            return br.readLine();
 +
         } catch (IOException ex) {
 +
            return "";
 +
        }
 
     }
 
     }
 
      
 
      
    /**
+
     public static int readInt() {
    * @return die Menge aller gefundenen Wörter im Text
+
         try {
    */
+
            return Integer.parseInt(readString());
     public Set<String> getWords(){
+
        } catch (NumberFormatException ex) {
         return Collections.unmodifiableSet(wordCounts.keySet());
+
            return 0;
 +
        }
 
     }
 
     }
 
      
 
      
    /**
+
     public static double readDouble() {
    * Findet, wie oft ein bestimmtes wort im Text vorkommt.
+
         try {
    * @param word - das Wort, nach dem gesucht wird
+
            return Double.parseDouble(readString());
    * @return - wie oft das Wort im Text vorkommt
+
         } catch (NumberFormatException ex) {
    */
+
            return 0.0;
     public int getCount(String word){
+
        }
         Integer result = wordCounts.get(word);
 
         return result != null ? result : 0;
 
 
     }
 
     }
   
+
}
    /**
+
</nowiki>
    * Die Main-Methode wird ausgeführt, wenn WordCount als Programm aufgerufen wird.
+
Beispiele für die Verwendung dieser Methoden:
    * @param args - erwartet wird genau ein Aufrufparameter: ein Dateiname
+
<nowiki>
    * @throws FileNotFoundException - diese Exception wird nie wirklich geworfen,
+
        String eingabe = readString();
    * der Fehler wird vorher abgefangen
+
        System.out.println("Die Eingabe lautet: " + eingabe);
    */
+
       
    public static void main(String[] args) throws IOException {
+
        int intEingabe = readInt();
         if (args.length != 1) fail("WordCount requires exactly one file name as argument");
+
         System.out.println("Die intEingabe lautet: " + intEingabe);
         File f = new File(args[0]);
+
          
         if (!f.exists()) fail("File does not exist " + f.getAbsolutePath());
+
        double doubleEingabe = readDouble();
        if (!f.isFile()) fail("Not a file " + f.getAbsolutePath());
+
         System.out.println("Die doubleEingabe lautet: " + doubleEingabe);
        if (!f.canRead()) fail("File not readable " + f.getAbsolutePath());
+
</nowiki>
         try(FileInputStream in = new FileInputStream(f)){
+
(Dank an Hn. K.)
             WordCount count = new WordCount(new FileInputStream(f));
+
 
            count.count();
+
----
             System.out.println("Words in total: " + count.getTotalCount());
+
 
            count.getWords().stream().sorted().forEach((word) -> {
+
== Datentypen ==
                 System.out.println(word + ": " + count.getCount(word));
+
=== Primitive Datentypen ===
             });
+
{| class="wikitable center" style="text-align:left"
 +
! Typname
 +
! Größe
 +
! Wrapper-Klasse
 +
! Wertebereich
 +
! Beschreibung
 +
|-----
 +
| boolean || undefiniert || java.lang.Boolean
 +
| true / false
 +
| Boolescher Wahrheitswert, Boolescher Typ
 +
|-
 +
| char || 16 bit || java.lang.Character
 +
| 0 ... 65.535 (z. B. 'A')
 +
| Unicode-Zeichen (UTF-16)
 +
|-
 +
| byte || 8 bit || java.lang.Byte || -128 ... 127
 +
| Zweierkomplement-Wert
 +
|-
 +
| short || 16 bit || java.lang.Short
 +
| -32.768 ... 32.767 || Zweierkomplement-Wert
 +
|-
 +
| int || 32 bit || java.lang.Integer
 +
| -2.147.483.648 ... 2.147.483.647 || Zweierkomplement-Wert
 +
|-
 +
| long || 64 bit || java.lang.Long
 +
| -2<sup>63</sup> bis 2<sup>63</sup>-1, ab Java 8 auch 0 bis 2<sup>64</sup> -1
 +
| Zweierkomplement-Wert
 +
|-
 +
| float || 32 bit || java.lang.Float
 +
| +/-1,4E-45 ... +/-3,4E+38 || 32-bit IEEE 754
 +
|-
 +
| double || 64 bit || java.lang.Double
 +
| +/-4,9E-324 ... +/-1,7E+308 || 64-bit IEEE 754, doppelte Genauigkeit
 +
|}
 +
[https://de.wikibooks.org/w/index.php?title=Java_Standard:_Primitive_Datentypen siehe Wikibooks, Java Standard: Primitive Datentypen]
 +
 
 +
----
 +
 
 +
Für eine Genauigkeit bis zu 7 Stellen kann man den Datentyp ''float'' verwenden, bei mehr Stellen muss man ''double'' nehmen.
 +
 
 +
Diese Datentypen werden folgendermaßen deklariert:
 +
float length = 1876.79f;
 +
double width = 1876.79797657
 +
 
 +
----
 +
 
 +
Division von Ganzzahlen:
 +
int a = 10;
 +
int b = 4;
 +
int c = a/b;  // Ausgabe: 2
 +
 
 +
----
 +
 
 +
type casting:
 +
int a = 10;
 +
int b = 4;
 +
double c = a/(double) b; //  Ausgabe: 2.5
 +
 
 +
----
 +
 
 +
* https://studyflix.de/informatik/primitive-datentypen-215
 +
 
 +
----
 +
 
 +
=== Strings ===
 +
 
 +
<code>String</code> ist kein primitiver Datentyp, sondern eine Klasse mit einer Reihe von Methoden.
 +
 
 +
Bei Verknüpfung von Strings und Zahlen mit <code>+</code> erfolgt eine Konkatenation, bei der die Zahl in einen String umgewandelt wird.
 +
String favoriteCity = "Buenos Aires";
 +
int numberOfTrips = 5;
 +
String story = "Ich bin " + numberOfTrips + " Mal nach " + favoriteCity + " gereist!"; //  "Ich bin 5 Mal nach
 +
                                                                                      //  Buenos Aires gereist!"
 +
 
 +
 
 +
----
 +
 
 +
* https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html
 +
 
 +
----
 +
 
 +
== Arrays ==
 +
 
 +
Deklaration:
 +
int[] meinArray = new int[5];
 +
Die Initialisierung erfolgt durch die Zuweisung der Werte:
 +
meinArray[0] = 21;
 +
etc.
 +
 
 +
----
 +
 
 +
Deklaration mit Initialisierung:
 +
int[] meinArray = {24, -7, 123456, 25, -64};
 +
 
 +
----
 +
 
 +
* https://javabeginners.de/Arrays_und_Verwandtes/Array_deklarieren.php
 +
 
 +
----
 +
== Arraylists ==
 +
Arraylists können dynamisch verändert werden.
 +
List<Integer> list = new ArrayList<>();
 +
 
 +
----
 +
Ein neues Element einfügen:
 +
arraylist.add(int index, E element)
 +
[https://www.programiz.com/java-programming/library/arraylist/add]
 +
 
 +
----
 +
Ein Element durch ein anderes ersetzen:
 +
arraylist.set(int index, E element)
 +
[https://www.programiz.com/java-programming/library/arraylist/set]
 +
 
 +
----
 +
Ein Element entfernen:
 +
// remove the specified element
 +
arraylist.remove(Object obj)
 +
// remove element present in the specified index
 +
arraylist.remove(int index)
 +
[https://www.programiz.com/java-programming/library/arraylist/remove]
 +
 
 +
----
 +
 
 +
== Verzweigungen ==
 +
 
 +
* https://de.wikibooks.org/wiki/Java_Standard:_Kontrollstrukturen
 +
 
 +
----
 +
=== Verzweigung (<code>if</code>)===
 +
==== Selection mit (<code>if</code>) / (<code>else</code>)   ====
 +
if (<boolescher Ausdruck>) {
 +
    Anweisung(en) 1
 +
}
 +
else if {
 +
    Anweisung(en) 2
 +
}
 +
else {
 +
    Anweisung(en) 3
 +
}
 +
Eine <code>if</code>-Verzweigung führt stets die nachfolgende Anweisung aus, wenn der ''<boolesche Ausdruck>'' wahr ist. Sollen mehrere Anweisungen ausgeführt werden so sind diese in einen Block zusammenzufassen (mit Hilfe der geschweiften Klammern).
 +
Die <code>if else</code> / <code>else</code> Bedingung ist optional - auch hier gilt dass mehrere Anweisungen in einen Block zusammenzufassen sind.
 +
 
 +
----
 +
 
 +
==== Verschachtelte Selektion ====
 +
Als Anweisung nach einer Selektion kann eine weitere Selektion stehen.
 +
<nowiki>
 +
public class Verschachtelung {
 +
    public static void main(String[] args) {
 +
        int a = 10;
 +
        int b = 100;
 +
         int c = 1000;
 +
        if (a < 50) {
 +
             if (b < 500) {
 +
                if (c < 5000) {
 +
                    System.out.println("Alle Bedingungen treffen zu.");
 +
                } else {System.out.println("Die dritte Bedingung trifft nicht zu.");}
 +
             } else {System.out.println("Die zweite Bedingung trifft nicht zu.");}
 +
        } else {System.out.println("Die erste Bedingung trifft nicht zu.");}
 +
  }
 +
}
 +
</nowiki>
 +
 
 +
----
 +
 
 +
=== Mehrfachselektion mit <code>switch</code> ===
 +
Mit <code>switch</code> kann man eine Variable auf verschiedene Werte abfragen.
 +
<nowiki>
 +
public class SwitchErgebnis {
 +
    public static void main(String[] args) {
 +
        int ergebnis = 13;
 +
        switch (ergebnis) {
 +
            case 3:
 +
                System.out.println("Das ist zu wenig.");
 +
                break;
 +
            case 13:
 +
                System.out.println("Genau richtig.");
 +
                break;
 +
            case 14:
 +
                 System.out.println("Das geht übers Ziel hinaus.");
 +
                break;
 +
             default:
 +
                System.out.println("Unbekannte Zahl");
 
         }
 
         }
    }   
 
   
 
    /**
 
    * Hilfsmethode zu main: im Fehlerfall schreibt diese Methode eine Fehlermeldung
 
    * und beendet das Programm
 
    * @param message - die Fehlermeldung
 
    */
 
    private static void fail(String message){
 
        System.err.println(message);
 
        System.exit(1);
 
 
     }
 
     }
 
}
 
}
 
 
</nowiki>
 
</nowiki>
[https://www.amazon.de/Einf%C3%BChrung-Java-Sprachgrundlagen-objektorientierter-Programmierung/dp/3836240955/ref=dp_ob_title_bk]
+
Wenn man die <code>break</code>-Anweisung weglässt, werden die folgenden Fälle bis zur nächsten <code>break-</code>-Anweisung mit abgearbeitet.
  
 
----
 
----
  
=== Fibonacci ===
+
==== Java 12 Switch Statements====
  
 
  <nowiki>
 
  <nowiki>
package de.kaiguenster.javaintro.fibonacci;
+
public static void main(String[] args) {
 +
        String taste = "way too hot";
 +
        int tempAdjustment = switch(taste) {
 +
            case "too cold" ->    1;
 +
            case "way too hot" -> -2;
 +
            case "too hot" ->    -1;
 +
            case "just right" -> 0;
 +
            default -> 0;
 +
        };
 +
        System.out.println("Adjust temperature: " + tempAdjustment);
 +
    }</nowiki>[https://www.packtpub.com/product/the-java-workshop/9781838986698]
 +
IntelliJ muss für Java 12 switch statements eventuell konfiguriert werden: ''Run > Edit Configurations > Edit Templates > Application > in VM options:  <br>  --enable-preview'' eintragen
 +
----
  
/**
+
== Schleifen ==
* Java-Programm zur Berechnung von Fibonacci-Zahlen.
 
* Auruf: java de.kaiguenster.javaintro.fibonacci.Fibonacci &lt;n&gt;. Dabei ist
 
* n der Index der gesuchten Fibonacci-Zahl, <code>...Fibonacci 6</code> berechnet
 
* die 6. Zahl der Folge: 5
 
* @author Kai
 
*/
 
public class Fibonacci {
 
  
     public static int fibonacci(int n){
+
=== do while ===
         if (n < 0)
+
 
            throw new IllegalArgumentException("Fibonaccizahlen sind für negativen Index nicht definiert.");
+
Es handelt sich um eine fußgesteuerte Schleife, da die Überprüfung der Bedingung am Ende der Schleife erfolgt. Die Anweisung im Schleifenkörper wird mindestens einmal ausgeführt.
         else if (n == 0)
+
<nowiki>
             return 0;
+
public class DoWhile {
        else if (n == 1)  
+
     public static void main(String[] args) {
             return 1;
+
         int a = 10;
         else
+
         do {
            return fibonacci(n - 1) + fibonacci(n - 2);
+
             System.out.println(a);
 +
             a = a + 10;
 +
         }
 +
        while (a <= 100);
 
     }
 
     }
   
+
}
 +
</nowiki>
 +
 
 +
----
 +
 
 +
=== while ===
 +
 
 +
Es handelt sich um eine fußgesteuerte Schleife, da die Überprüfung der Bedingung am Anfang der Schleife erfolgt. Wenn die Bedingung "false" ist, werden die Anweisungen im Schleifenrumpf nicht durchlaufen.
 +
<nowiki>
 +
public class WhileSchleife {
 
     public static void main(String[] args) {
 
     public static void main(String[] args) {
         if (args.length != 1) {
+
         int i = 10;
             System.out.println("Aufruf: java de.kaiguenster.javaintro.fibonacci.Fibonacci <n>");
+
        while (i > 0) {
             System.exit(1);
+
             System.out.println(i);
 +
             i--;
 
         }
 
         }
        int n = Integer.parseInt(args[0]);
+
     }  
        int result = fibonacci(n);
 
        System.out.println("Die " + n + ". Fibonacci-Zahl ist: " + result);
 
     }
 
 
}
 
}
 
</nowiki>
 
</nowiki>
[https://www.amazon.de/Einf%C3%BChrung-Java-Sprachgrundlagen-objektorientierter-Programmierung/dp/3836240955/ref=dp_ob_title_bk]
 
  
 
----
 
----
  
=== Einen String umkehren ===
+
=== for ===
  
 +
Die <code>for</code>-Schleife ist zählergesteuert. Der Zähler läuft mit einer definierten Schrittweite von einem bestimmten Anfangswert zu einem bestimmten Endwert.
 
  <nowiki>
 
  <nowiki>
/**
+
public class ForSchleife {
* Programm zum Umkehren von Strings in der Kommandozeile.
+
    public static void main(String[] args) {
* @author Kai
+
        for (int i = 1; i <= 10; i++){
* @version 1.0
+
            System.out.println(i);
*/
+
        }
package de.kaiguenster.javaintro.reverse;
+
    }   
 +
}
 +
</nowiki>
  
/**
+
==== Sprung innerhalb der Schleife mit <code>continue</code> ====
*
+
Folgende Schleife gibt die Zahlen von 1 - 10 ohne die 7 aus:
  * @author Kai
+
  <nowiki>
*/
+
public class ForSchleife {
public class Reverse {
+
    public static void main(String[] args) {
 +
        for (int i = 1; i <= 10; i++){
 +
            if (i == 7) continue;
 +
            System.out.println(i);
 +
        }
 +
    }   
 +
}
 +
</nowiki>
  
    /**
+
----
    * Kehrt einen <code>String</code> zeichenweise um. Zum Beispiel wird "Hallo, Welt!" zu "!tleW ,ollaH"
+
 
    * @param in der umzukehrende <code>String</code>
+
==== Abbruch der Schleife mit <code>break</code> ====
    * @return den umgekehrten <code>String</code>
+
Folgende Schleife gibt nur die die Zahlen von 1 - 6 aus:
    * @throws IllegalArgumentException wenn in == <code>null</code> ist.
+
<nowiki>
    */
+
public class ForSchleife {
     public static String reverse(String in){
+
     public static void main(String[] args) {
        if (in == null) throw new IllegalArgumentException("Parameter in muss übergeben werden.");
+
         for (int i = 1; i <= 10; i++){
        StringBuilder out = new StringBuilder();
+
             if (i == 7) break;
         for (int i = in.length() - 1; i >= 0; i--){
+
            System.out.println(i);
             out.append(in.charAt(i));
 
 
         }
 
         }
        return out.toString();
+
    }   
    }
+
}
   
+
</nowiki>
 +
 
 +
----
 +
 
 +
=== for each ===
 +
Mit dieser Schleife wird ein Array durchlaufen:
 +
<nowiki>
 +
public class JavaForEach {
 
     public static void main(String[] args) {
 
     public static void main(String[] args) {
         if (args.length != 1){
+
         int meinArray[] = {3, 5, 7, 9};
             System.out.println("Aufruf: java de.kaiguenster.javaintro.reverse.Reverse \"<text>\"");
+
        for (int i : meinArray) {
            System.exit(1);
+
             System.out.println(i);
 
         }
 
         }
        String reversed = reverse(args[0]);
 
        System.out.println(reversed);
 
 
     }
 
     }
   
+
}</nowiki>
}
+
Beispiel für ein Array mit Datentyp <code>String</code>:
 +
  <nowiki>
 +
 
 +
        String meinArray2[] = {"cat", "dog", "bird", "lizard"};
 +
        for (String i : meinArray2) {
 +
            System.out.println(i);
 +
        }
 
</nowiki>
 
</nowiki>
[https://www.amazon.de/Einf%C3%BChrung-Java-Sprachgrundlagen-objektorientierter-Programmierung/dp/3836240955/ref=dp_ob_title_bk]
+
 
 +
----
 +
 
 +
== JDBC ==
 +
 
 +
JDBC definiert ein Paket von Klassen (''java.sql'') für den dynamischen Zugriff auf Datenbanken.
 +
 
 +
# Verbindung zur Datenbank herstellen mit den Klassen ''DriverManager'' und ''Connection''
 +
# Eine SQL-Anweisung als String formulieren und mit der Klasse ''Statement'' ausführen
 +
# Eine Ergebnismenge verarbeiten mit den Klassen ''ResultSet'' und ''ResultSetMetaData''
 +
# Fehler behandeln mit der Klasse ''SQLException''
 +
 
 +
Für die MySQL-Datenbank muss der ''JDBC''Treiber in den Klassenpfad CLASSPATH eingebunden werden. Es handelt sich um eine jar-Datei, z. B. ''mysql-connector-java-x.x.x.jar'', in Netbeans einzubinden unter "Libraries".
 +
 
 +
----
 +
 
 +
Die Methode
 +
static Connection getConnection (String url, String user, String password) throws Exception
 +
der Klasse ''java.sql.DriverManager'' stellt die Verbindung her und liefert ein Objekt vom Typ des Interface ''java.sql.Connection''. ''url'' ist die URL der Datenbank. Beispiel MySQL auf lokaler Maschine:
 +
jdbc:mysql://localhost/datenbankname
 +
 
 +
 
 +
----
 +
 
 +
* [https://www.youtube.com/watch?v=8-iQDUl10vM&list=PLEAQNNR8IlB4R7NfqBY1frapYo97L6fOQ Youtube: Java JDBC Tutorial]
 +
 
 +
----
 +
 
 +
== Threads ==
 +
 
 +
* https://riptutorial.com/de/java/example/12406/erstellen-einer-java-lang-thread-instanz
 +
 
 +
----
 +
 
 +
== Tipps und Tricks ==
 +
 
 +
=== Datum anzeigen ===
 +
 
 +
System.out.println(new java.util.Date());
 +
Ausgabe im Format ''Fri Aug 30 14:15:03 CEST 2019''
 +
 
 +
----
 +
 
 +
import java.time.LocalDate;
 +
import java.time.format.DateTimeFormatter;
 +
...
 +
LocalDate aktuell = LocalDate.now();
 +
DateTimeFormatter meinFormat = DateTimeFormatter.ofPattern("EEEE, d. MMMM yyyy");
 +
System.out.println("Heute ist " + meinFormat.format(aktuell) + ".");
 +
Ausgabe im Format ''Heute ist Freitag, 30. August 2019.''
  
 
----
 
----
Zeile 237: Zeile 567:
 
=== Eclipse ===
 
=== Eclipse ===
  
* '''[[Eclipse|Zur Seite "Eclipse"]]'''
+
[[Eclipse|Zur Seite Eclipse]]
  
 
----
 
----
Zeile 243: Zeile 573:
 
=== IntelliJ IDEA ===
 
=== IntelliJ IDEA ===
  
Download für Windows/Mac von
+
[[IntelliJ IDEA | Zur Seite IntelliJ IDEA]]
* https://www.jetbrains.com/idea/download/#section=windows
+
 
 +
----
  
Installation in Ubuntu 18.04[https://wiki.ubuntuusers.de/Intellij_IDEA/]:
+
=== Netbeans ===
# sudo -H software-properties-gtk[https://wiki.ubuntuusers.de/sudo/][https://wiki.ubuntuusers.de/Paketquellen_freischalten/PPA/#PPA-hinzufuegen]
+
[[Netbeans | Zur Seite Netbeans]]
# Im Fenster "Anwendungen & Aktualisierungen" > "Andere Programme" > "Hinzufügen"
 
# ''ppa:mmk2410/intellij-idea'' eingeben
 
# ''apt-get install intellij-idea-community ''
 
  
 
----
 
----
  
Maven[https://de.wikipedia.org/wiki/Apache_Maven]-Projekt starten:
+
=== JShell ===
# ''Create New Project''
 
# ''Maven'' > ''Next''
 
# ''GroupId'' und ''ArtifactId'' eintragen (z. B. jeweils "demo") > ''Next''
 
# Projektnamen eintragen, es entsteht dann ein gleichnamiges Verzeichnis
 
  
----
+
Am Eingabeprompt der JShell kann man unkompliziert Codefragmente testen.
 +
 
 +
* https://docs.oracle.com/javase/10/jshell/introduction-jshell.htm#JSHEL-GUID-630F27C8-1195-4989-9F6B-2C51D46F52C8
  
Klasse anlegen:
+
* https://javabeginners.de/Allgemeines/JShell.php
# Im linken Fenster unter ''Project'' > ''[Projektname]'' > ''src'' > ''main''
 
# mit der rechten Maustaste auf ''java'' klicken
 
# ''New'' > ''Java Class'' > ''[dateiname.java]'' eintragen, ''OK''
 
  
----
+
Aufruf im Terminal (Linux): <code>jshell</code>
  
Shortcuts:
+
Aufruf unter Windows (cmd): <code>jshell</code>. Die Datei ''jshell.exe'' liegt im ''bin''-Verzeichnis der ''jdk''-Installation.
* <code>psmvm</code> = ''public static void main(String[] args) {}''
 
* <code>sout</code> = ''System.out.println();''
 
  
 
----
 
----
 
+
Eingaben nachträglich editieren:
* https://de.wikipedia.org/wiki/IntelliJ_IDEA
+
/edit
* https://www.jetbrains.com/idea/
+
Importierte Klassen anzeigen:
* https://wiki.ubuntuusers.de/Intellij_IDEA/
+
/imports
  
 
----
 
----
Zeile 284: Zeile 605:
 
=== Links ===
 
=== Links ===
  
 +
 +
* https://openbook.rheinwerk-verlag.de/java8/
 
* https://javabeginners.de/index.php
 
* https://javabeginners.de/index.php
 +
 
* https://www.java-tutorial.org/
 
* https://www.java-tutorial.org/
 +
 
* https://www.java-forum.org/
 
* https://www.java-forum.org/
 +
 
* https://de.wikibooks.org/wiki/Java_Standard
 
* https://de.wikibooks.org/wiki/Java_Standard
* https://www.uni-trier.de/fileadmin/urt/doku/java/v80/java8.pdf
+
 
 +
* https://de.wikibooks.org/wiki/Kurzeinstieg_Java
 +
 
 +
* https://www.uni-trier.de/fileadmin/urt/doku/java/v90/Java9.pdf
 +
 
 
* https://www.programmieraufgaben.ch/uploads/java.pdf
 
* https://www.programmieraufgaben.ch/uploads/java.pdf
 +
 
* https://trainyourprogrammer.de/
 
* https://trainyourprogrammer.de/
 +
 
* http://openbook.rheinwerk-verlag.de/javainsel9/javainsel_03_006.htm
 
* http://openbook.rheinwerk-verlag.de/javainsel9/javainsel_03_006.htm
 +
 +
* https://openclassrooms.com/fr/courses/26832-apprenez-a-programmer-en-java
 +
 +
* https://www.java-forum.org/
 +
 +
* https://javaranch.com/
  
 
----
 
----
Zeile 305: Zeile 643:
 
=== Bücher ===
 
=== Bücher ===
  
 +
* [https://www.europa-lehrmittel.de/t-1/java_fuer_it_berufe-5182/ Hardy, Dirk: Java für IT-Berufe, Haan-Gruiten 2019 (Europa-Lehrmittel)]
 
* [https://www.amazon.de/Einf%C3%BChrung-Java-Sprachgrundlagen-objektorientierter-Programmierung/dp/3836240955/ref=dp_ob_title_bk Günster, Kai: Einführung in Java]
 
* [https://www.amazon.de/Einf%C3%BChrung-Java-Sprachgrundlagen-objektorientierter-Programmierung/dp/3836240955/ref=dp_ob_title_bk Günster, Kai: Einführung in Java]
 +
* http://openbook.rheinwerk-verlag.de/javainsel/
 
* [https://www.mitp.de/IT-WEB/Programmierung/Java-9-Das-Uebungsbuch.html Jung, Elisabeth: Java 9 - Das Übungsbuch, Heidelberg 2017]
 
* [https://www.mitp.de/IT-WEB/Programmierung/Java-9-Das-Uebungsbuch.html Jung, Elisabeth: Java 9 - Das Übungsbuch, Heidelberg 2017]
 +
* [https://www.springer.com/de/book/9783658219062#otherversion=9783658219079 Abts, Dietmar: Grundkurs JAVA. Von den Grundlagen bis zu Datenbank- und Netzanwendungen, Heidelberg 2018 (Springer-Vieweg)]
  
 
----
 
----
  
 
[[Kategorie: Alle Seiten]] | [[Kategorie: Programmierung]]
 
[[Kategorie: Alle Seiten]] | [[Kategorie: Programmierung]]

Aktuelle Version vom 3. Juni 2021, 19:13 Uhr

Seitenübersicht
Zur Seite "Java: JavaFX"
Zur Seite "Java: Swing"
Zur Seite "IntelliJ IDEA"
Zur Seite "Eclipse"
Zur Seite "Netbeans"
Zur Seite "Java: Beispiele"
Zur Seite "Kotlin"


Allgemeines

Java Language and Virtual Machine Specifications

JDK 15 Documentation

JDK 14 Documentation

Java® Platform, Standard Edition & Java Development Kit - Version 14 API Specification

Java™ Platform, Standard Edition 8 API Specification


Installation unter Ubuntu:


Übersetzung von Quellcode in Bytecode

Wenn keine IDE wie Eclipse mit einem Menüpunkt Run zur Verfügung steht, kann man die java-Datei auch auf der Kommandozeile (bash, cmd etc.) übersetzen:

javac Dateiname.java

Es entsteht eine Datei Dateiname.class, die mit dem Befehl

java Dateiname 

(ohne die Endung class) aufgerufen werden kann.


Importieren von Paketen und Klassen

Import einer einzelnen Klasse:

import java.util.Scanner;

Import aller Klassen eines Pakets:

import java.util.*; 

Pakete:

  • java.util // z. B. Klasse Scanner
  • javax.swing // z. B. Klasse JOptionPane // Methode showInputDialog()

Java Archive (JAR-Datei)

Erzeugung in Netbeans:

> Run > Clean and Build""


Erzeugung im Terminal /cmd:

jar -cvf Dateiname.jar Datei.class



Aufruf:

Aus der Kommandozeile kann man Jar-Dateien mit java -jar starten.


Eingabe über die Konsole (Tastatureingabe)

JOptionPane

import javax.swing.*;

public class SwingPane {
    public static void main(String[] args) {
        String name = JOptionPane.showInputDialog("Wie ist Ihr Name?");
        System.out.println("Sie heißen also " + name + ".");
    }
}

Es öffnet sich eine Dialogbox für die Eingabe. Bei Eingabe einer Zahl muss diese gegebenenfalls mit Integer.parseInt() oder Float.parseFloat() umgewandelt werden.

Die Ausgabe eines Ergebnisses kann ebenfalls über ein Fenster erfolgen: JOptionPane.showMessageDialog(null, "Das Ergebnis lautet: " + ergebnis).


Klasse Scanner

public class Skanner {
    public static void main(String[] args) {
        Scanner eingabe = new Scanner(System.in);
        System.out.println("Geben Sie bitte Ihren Namen ein:");
        String name = eingabe.next();
        System.out.println("Sie heißen also " + name + ".");
    }   
}

Methoden für Scanner:

  • next() >> Eingabe eines Wortes
  • nextLine() >> Eingabe einer Textzeile
  • nextInt() >> Eingabe einer Ganzzahl
  • nextFloat() >> Eingabe einer Fließpunktzahl
  • nextDouble() >> Eingabe einer Fließpunktzahl

Achtung: nextFloat() und nextDouble() erkennen die Lokalisierung des Rechners. Auf einem "deutschen" Rechner ist die Zahl mit Komma und nicht mit Punkt einzugeben.


Um Werte vom Typ char zu erhalten, verwendet man die Methode findWithinHorizon():

import java.util.*;

public class Skanner {
    public static void main(String[] args) {
        Scanner eingabe = new Scanner(System.in);
        System.out.println("Geben Sie bitte Zeichen 1 ein:");
        char zeichen1 = eingabe.findWithinHorizon(".", 0).charAt(0);
        System.out.println("Geben Sie bitte Zeichen 2 ein:");
        char zeichen2 = eingabe.findWithinHorizon(".", 0).charAt(0);
        System.out.println("Zeichen 1 + Zeichen 2 ergeben zusammen " + zeichen1 + zeichen2 + ".");
    }   
}


Ein double von der Tastatur einlesen


Klasse BufferedReader und Methode readLine()

  • InputStreamReader erlaubt die Umsetzung eines Bytestreams in einen Zeichenstream. Bytes werden gelesen und in Zeichen dekodiert.
  • BufferedReader liefert einen gepufferten Eingabe-Stream für Unicode-Zeichen.[1]
  • Die statische Methode readLine() stellt einen formatierten Prompt zur Verfügung und liest dann eine Textzeile von der Konsole.

Beispiel:

import java.io.*;

public class MeineEingabe {
    
    public static void main(String[] args) throws IOException {
        String s;
        
        BufferedReader eingabe = new BufferedReader(new InputStreamReader(System.in));
        
        System.out.println("Bitte um Tastatureingabe: ");
        s = eingabe.readLine();
        System.out.println("Ausgabe: " + s);
        
    }
}

Man kann sich auf dieser Grundlage ein Set vorgefertigter Methoden für die Konsoleneingabe "basteln":

    public static String readString() {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        try {
            return br.readLine();
        } catch (IOException ex) {
            return "";
        }
    }
    
    public static int readInt() {
        try {
            return Integer.parseInt(readString());
        } catch (NumberFormatException ex) {
            return 0;
        }
    }
    
    public static double readDouble() {
        try {
            return Double.parseDouble(readString());
        } catch (NumberFormatException ex) {
            return 0.0;
        }
    }
}

Beispiele für die Verwendung dieser Methoden:

        String eingabe = readString();
        System.out.println("Die Eingabe lautet: " + eingabe);
        
        int intEingabe = readInt();
        System.out.println("Die intEingabe lautet: " + intEingabe);
        
        double doubleEingabe = readDouble();
        System.out.println("Die doubleEingabe lautet: " + doubleEingabe);

(Dank an Hn. K.)


Datentypen

Primitive Datentypen

Typname Größe Wrapper-Klasse Wertebereich Beschreibung
boolean undefiniert java.lang.Boolean true / false Boolescher Wahrheitswert, Boolescher Typ
char 16 bit java.lang.Character 0 ... 65.535 (z. B. 'A') Unicode-Zeichen (UTF-16)
byte 8 bit java.lang.Byte -128 ... 127 Zweierkomplement-Wert
short 16 bit java.lang.Short -32.768 ... 32.767 Zweierkomplement-Wert
int 32 bit java.lang.Integer -2.147.483.648 ... 2.147.483.647 Zweierkomplement-Wert
long 64 bit java.lang.Long -263 bis 263-1, ab Java 8 auch 0 bis 264 -1 Zweierkomplement-Wert
float 32 bit java.lang.Float +/-1,4E-45 ... +/-3,4E+38 32-bit IEEE 754
double 64 bit java.lang.Double +/-4,9E-324 ... +/-1,7E+308 64-bit IEEE 754, doppelte Genauigkeit

siehe Wikibooks, Java Standard: Primitive Datentypen


Für eine Genauigkeit bis zu 7 Stellen kann man den Datentyp float verwenden, bei mehr Stellen muss man double nehmen.

Diese Datentypen werden folgendermaßen deklariert:

float length = 1876.79f;
double width = 1876.79797657

Division von Ganzzahlen:

int a = 10;
int b = 4;
int c = a/b;  // Ausgabe: 2

type casting:

int a = 10;
int b = 4;
double c = a/(double) b; //  Ausgabe: 2.5


Strings

String ist kein primitiver Datentyp, sondern eine Klasse mit einer Reihe von Methoden.

Bei Verknüpfung von Strings und Zahlen mit + erfolgt eine Konkatenation, bei der die Zahl in einen String umgewandelt wird.

String favoriteCity = "Buenos Aires";
int numberOfTrips = 5;
String story = "Ich bin " + numberOfTrips + " Mal nach " + favoriteCity + " gereist!"; //  "Ich bin 5 Mal nach 
                                                                                      //  Buenos Aires gereist!"




Arrays

Deklaration:

int[] meinArray = new int[5];

Die Initialisierung erfolgt durch die Zuweisung der Werte:

meinArray[0] = 21;
etc.

Deklaration mit Initialisierung:

int[] meinArray = {24, -7, 123456, 25, -64};


Arraylists

Arraylists können dynamisch verändert werden.

List<Integer> list = new ArrayList<>();

Ein neues Element einfügen:

arraylist.add(int index, E element)

[2]


Ein Element durch ein anderes ersetzen:

arraylist.set(int index, E element)

[3]


Ein Element entfernen: // remove the specified element

arraylist.remove(Object obj)

// remove element present in the specified index

arraylist.remove(int index)

[4]


Verzweigungen


Verzweigung (if)

Selection mit (if) / (else)

if (<boolescher Ausdruck>) {
    Anweisung(en) 1
} 
else if {
    Anweisung(en) 2
}
else {
    Anweisung(en) 3
}

Eine if-Verzweigung führt stets die nachfolgende Anweisung aus, wenn der <boolesche Ausdruck> wahr ist. Sollen mehrere Anweisungen ausgeführt werden so sind diese in einen Block zusammenzufassen (mit Hilfe der geschweiften Klammern). Die if else / else Bedingung ist optional - auch hier gilt dass mehrere Anweisungen in einen Block zusammenzufassen sind.


Verschachtelte Selektion

Als Anweisung nach einer Selektion kann eine weitere Selektion stehen.

public class Verschachtelung {
    public static void main(String[] args) {
        int a = 10;
        int b = 100;
        int c = 1000;
        if (a < 50) {
            if (b < 500) {
                if (c < 5000) {
                    System.out.println("Alle Bedingungen treffen zu.");
                } else {System.out.println("Die dritte Bedingung trifft nicht zu.");}
            } else {System.out.println("Die zweite Bedingung trifft nicht zu.");}
        } else {System.out.println("Die erste Bedingung trifft nicht zu.");}
   }
}


Mehrfachselektion mit switch

Mit switch kann man eine Variable auf verschiedene Werte abfragen.

public class SwitchErgebnis {
    public static void main(String[] args) {
        int ergebnis = 13;
        switch (ergebnis) {
            case 3:
                System.out.println("Das ist zu wenig.");
                break;
            case 13:
                System.out.println("Genau richtig.");
                break;
            case 14:
                System.out.println("Das geht übers Ziel hinaus.");
                break;
            default:
                System.out.println("Unbekannte Zahl");
        }
    }
}

Wenn man die break-Anweisung weglässt, werden die folgenden Fälle bis zur nächsten break--Anweisung mit abgearbeitet.


Java 12 Switch Statements

public static void main(String[] args) {
        String taste = "way too hot";
        int tempAdjustment = switch(taste) {
            case "too cold" ->    1;
            case "way too hot" -> -2;
            case "too hot" ->    -1;
            case "just right" -> 0;
            default -> 0;
        };
        System.out.println("Adjust temperature: " + tempAdjustment);
    }[5]

IntelliJ muss für Java 12 switch statements eventuell konfiguriert werden: Run > Edit Configurations > Edit Templates > Application > in VM options:
--enable-preview
eintragen


Schleifen

do while

Es handelt sich um eine fußgesteuerte Schleife, da die Überprüfung der Bedingung am Ende der Schleife erfolgt. Die Anweisung im Schleifenkörper wird mindestens einmal ausgeführt.

public class DoWhile {
    public static void main(String[] args) {
        int a = 10;
        do {
            System.out.println(a);
            a = a + 10;
        }
        while (a <= 100);
    }
}


while

Es handelt sich um eine fußgesteuerte Schleife, da die Überprüfung der Bedingung am Anfang der Schleife erfolgt. Wenn die Bedingung "false" ist, werden die Anweisungen im Schleifenrumpf nicht durchlaufen.

public class WhileSchleife {
    public static void main(String[] args) {
        int i = 10;
        while (i > 0) {
            System.out.println(i);
            i--;
        }
    }    
}


for

Die for-Schleife ist zählergesteuert. Der Zähler läuft mit einer definierten Schrittweite von einem bestimmten Anfangswert zu einem bestimmten Endwert.

public class ForSchleife {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++){
            System.out.println(i);
        }
    }    
}

Sprung innerhalb der Schleife mit continue

Folgende Schleife gibt die Zahlen von 1 - 10 ohne die 7 aus:

public class ForSchleife {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++){
            if (i == 7) continue;
            System.out.println(i);
        }
    }    
}


Abbruch der Schleife mit break

Folgende Schleife gibt nur die die Zahlen von 1 - 6 aus:

public class ForSchleife {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++){
            if (i == 7) break;
            System.out.println(i);
        }
    }    
}


for each

Mit dieser Schleife wird ein Array durchlaufen:

public class JavaForEach {
    public static void main(String[] args) {
        int meinArray[] = {3, 5, 7, 9};
        for (int i : meinArray) {
            System.out.println(i);
        }
    }
}

Beispiel für ein Array mit Datentyp String:

   
        String meinArray2[] = {"cat", "dog", "bird", "lizard"};
        for (String i : meinArray2) {
            System.out.println(i);
        }


JDBC

JDBC definiert ein Paket von Klassen (java.sql) für den dynamischen Zugriff auf Datenbanken.

  1. Verbindung zur Datenbank herstellen mit den Klassen DriverManager und Connection
  2. Eine SQL-Anweisung als String formulieren und mit der Klasse Statement ausführen
  3. Eine Ergebnismenge verarbeiten mit den Klassen ResultSet und ResultSetMetaData
  4. Fehler behandeln mit der Klasse SQLException

Für die MySQL-Datenbank muss der JDBCTreiber in den Klassenpfad CLASSPATH eingebunden werden. Es handelt sich um eine jar-Datei, z. B. mysql-connector-java-x.x.x.jar, in Netbeans einzubinden unter "Libraries".


Die Methode

static Connection getConnection (String url, String user, String password) throws Exception

der Klasse java.sql.DriverManager stellt die Verbindung her und liefert ein Objekt vom Typ des Interface java.sql.Connection. url ist die URL der Datenbank. Beispiel MySQL auf lokaler Maschine:

jdbc:mysql://localhost/datenbankname




Threads


Tipps und Tricks

Datum anzeigen

System.out.println(new java.util.Date());

Ausgabe im Format Fri Aug 30 14:15:03 CEST 2019


import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
...
LocalDate aktuell = LocalDate.now();
DateTimeFormatter meinFormat = DateTimeFormatter.ofPattern("EEEE, d. MMMM yyyy");
System.out.println("Heute ist " + meinFormat.format(aktuell) + ".");

Ausgabe im Format Heute ist Freitag, 30. August 2019.


Arbeitswerkzeuge

Eclipse

Zur Seite Eclipse


IntelliJ IDEA

Zur Seite IntelliJ IDEA


Netbeans

Zur Seite Netbeans


JShell

Am Eingabeprompt der JShell kann man unkompliziert Codefragmente testen.

Aufruf im Terminal (Linux): jshell

Aufruf unter Windows (cmd): jshell. Die Datei jshell.exe liegt im bin-Verzeichnis der jdk-Installation.


Eingaben nachträglich editieren:

/edit

Importierte Klassen anzeigen:

/imports

Quellen

Links


Youtube


Bücher


|