Java
Version vom 28. Juli 2019, 15:49 Uhr von Flinh1 (Diskussion | Beiträge)
Inhaltsverzeichnis
Übersetzung von Quellcode in Bytecode
Wenn keine IDE wie Eclipse mit einem Menüpunkt Run zur Verfügung steht, kann man die javaDatei 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()
Troubleshooting
Paket javax.swing lässt sich in Eclipse nicht importieren. Abhilfe:
- Right-click on the project
- Select properties
- Java build path
- Library > Add Library > Add JRE SYSTEM Library
- Execution Environment
- Select JavaSE-1.7
- Finish
Beispiele
Wörter zählen
package de.kaiguenster.javaintro.wordcount; import java.io.*; import java.util.*; /** * Ein einfacher Wortzähler, der aus einem beliebigen {@link InputStream} Wörter zählt. * Wörter sind alle Gruppen von alphabetischen Zeichen. Das führt zum Beispiel beim * abgekürzten "geht's" dazu, dass es als "geht" und "s" gezählt wird. * @author Kai */ public class WordCount { private InputStream source; private Map<String, Integer> wordCounts = new HashMap<>(); private int totalCount = 0; /** * Erzeuge ein neues WordCount-Objekt aus einem {@link InputStream} * @param source - der Inputstream, aus dem gelesen wird. Sollte auch wirklich * Textdaten enthalten, sonst ist das Ergebnis ungewiss. */ 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); } } } /** * @return die Anzahl Wörter im Text */ public int getTotalCount(){ return totalCount; } /** * @return die Menge aller gefundenen Wörter im Text */ public Set<String> getWords(){ return Collections.unmodifiableSet(wordCounts.keySet()); } /** * Findet, wie oft ein bestimmtes wort im Text vorkommt. * @param word - das Wort, nach dem gesucht wird * @return - wie oft das Wort im Text vorkommt */ public int getCount(String word){ Integer result = wordCounts.get(word); return result != null ? result : 0; } /** * Die Main-Methode wird ausgeführt, wenn WordCount als Programm aufgerufen wird. * @param args - erwartet wird genau ein Aufrufparameter: ein Dateiname * @throws FileNotFoundException - diese Exception wird nie wirklich geworfen, * der Fehler wird vorher abgefangen */ public static void main(String[] args) throws IOException { if (args.length != 1) fail("WordCount requires exactly one file name as argument"); File f = new File(args[0]); if (!f.exists()) fail("File does not exist " + f.getAbsolutePath()); if (!f.isFile()) fail("Not a file " + f.getAbsolutePath()); if (!f.canRead()) fail("File not readable " + f.getAbsolutePath()); try(FileInputStream in = new FileInputStream(f)){ WordCount count = new WordCount(new FileInputStream(f)); count.count(); System.out.println("Words in total: " + count.getTotalCount()); count.getWords().stream().sorted().forEach((word) -> { System.out.println(word + ": " + count.getCount(word)); }); } } /** * 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); } }
Fibonacci
package de.kaiguenster.javaintro.fibonacci; /** * Java-Programm zur Berechnung von Fibonacci-Zahlen. * Auruf: java de.kaiguenster.javaintro.fibonacci.Fibonacci <n>. 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){ if (n < 0) throw new IllegalArgumentException("Fibonaccizahlen sind für negativen Index nicht definiert."); else if (n == 0) return 0; else if (n == 1) return 1; else return fibonacci(n - 1) + fibonacci(n - 2); } public static void main(String[] args) { if (args.length != 1) { System.out.println("Aufruf: java de.kaiguenster.javaintro.fibonacci.Fibonacci <n>"); System.exit(1); } int n = Integer.parseInt(args[0]); int result = fibonacci(n); System.out.println("Die " + n + ". Fibonacci-Zahl ist: " + result); } }
Einen String umkehren
/** * Programm zum Umkehren von Strings in der Kommandozeile. * @author Kai * @version 1.0 */ package de.kaiguenster.javaintro.reverse; /** * * @author Kai */ public class Reverse { /** * Kehrt einen <code>String</code> zeichenweise um. Zum Beispiel wird "Hallo, Welt!" zu "!tleW ,ollaH" * @param in der umzukehrende <code>String</code> * @return den umgekehrten <code>String</code> * @throws IllegalArgumentException wenn in == <code>null</code> ist. */ public static String reverse(String in){ if (in == null) throw new IllegalArgumentException("Parameter in muss übergeben werden."); StringBuilder out = new StringBuilder(); for (int i = in.length() - 1; i >= 0; i--){ out.append(in.charAt(i)); } return out.toString(); } public static void main(String[] args) { if (args.length != 1){ System.out.println("Aufruf: java de.kaiguenster.javaintro.reverse.Reverse \"<text>\""); System.exit(1); } String reversed = reverse(args[0]); System.out.println(reversed); } }
Arbeitswerkzeuge
Eclipse
IntelliJ IDEA
Download für Windows/Mac von
Installation in Ubuntu 18.04[5]:
- sudo -H software-properties-gtk[6][7]
- Im Fenster "Anwendungen & Aktualisierungen" > "Andere Programme" > "Hinzufügen"
- ppa:mmk2410/intellij-idea eingeben
- Im Terminal apt-get install intellij-idea-community ausführen.
Maven[8]-Projekt starten:
- Create New Project
- Maven > Next
- GroupId und ArtifactId eintragen (z. B. jeweils "demo") > Next
- Projektnamen eintragen, es entsteht dann ein gleichnamiges Verzeichnis
Klasse anlegen:
- Im linken Fenster unter Project > [Projektname] > src > main
- mit der rechten Maustaste auf java klicken
- New > Java Class > [dateiname.java] eintragen, OK
Shortcuts:
psmvm
= public static void main(String[] args) {}sout
= System.out.println();
- https://de.wikipedia.org/wiki/IntelliJ_IDEA
- https://www.jetbrains.com/idea/
- https://wiki.ubuntuusers.de/Intellij_IDEA/
Quellen
Links
- https://javabeginners.de/index.php
- https://www.java-tutorial.org/
- https://www.java-forum.org/
- https://de.wikibooks.org/wiki/Java_Standard
- https://www.uni-trier.de/fileadmin/urt/doku/java/v80/java8.pdf
- https://www.programmieraufgaben.ch/uploads/java.pdf
- https://trainyourprogrammer.de/
- http://openbook.rheinwerk-verlag.de/javainsel9/javainsel_03_006.htm
- https://openclassrooms.com/fr/courses/26832-apprenez-a-programmer-en-java
Youtube
Bücher
|