Unterschiede zu C++ boolean statt bool, String für

Werbung
=== Unterschiede zu C++ boolean statt bool, String für Zeichenketten new: Garbage Collector, Konstruktorklammern zwingend Klassendefinitionen werden nicht mit Semikolon abgeschlossen Bezeichner auch vor Definition verwendbar, import statt #include If(object != null) statt if(object), if(object == null) statt if(!object) Lieber string1.equals(string2) statt string1 == string2 === Wichtig Initialisierung nicht vergessen! private Object object = new Object; === Arrays int[] array = {0,1,2,3}; oder int[] array = new int[10]; numOfElements = array.lenght; === Schlüsselwörter private, protected, public static – kann ohne Klasseninstanz aufgerufen werden abstract – Vorlage (siehe unten) === Java‐Grundgerüst public class Programm { public static void main(String[] args) { } } === Standardmethoden jeder Klasse (überschreibbar) •
public boolean equals(Object obj) // für alle Collections benötigt! •
public int hashCode(); // für HashSet benötigt! •
public String toString(); === Objekt, Variablen, Konstruktor, Methoden public class Objekt { private Typ variable; Objekt() { } //Konstruktor public void setVariable(Typ wert) { this.variable = wert; } // Setter public Typ getVariable() { return this.variable; } // Getter } === Objektinstanz: Objektklasse objekt = new Objektklasse(); === Konsole: System.out.println(„Hallo Welt!“); // \n für neue Zeile statt Platzhalter einfache Addition oder bei Klassen toString()‐Methode === Schleifen: for, while, do‐while wie in C++ for‐each: for(Typ var : list) – alle Elemente in list – list.iterator() wird verwendet === Interfaces, abstrakte Klassen und Methoden interface NamedThing { String getName(); //nicht impl. } abstract class Person implements NamedThing { String name; String getName() { return name; } //impl. abstract void drinkBeer();//nicht impl. } Abstrakte Methoden müssen in Unterklasse realisiert werden! === Vererbung abstract class Employee extends Person { abstract void getSalary(); } class Professor extends Employee {//konkret void getSalary() {goToBank(); withDraw();}//eigene Funktion void drinkBeer() {select Leffe(); enjoy();}//abstrakt, übernommen } === Collection (import java.util.Collection) public boolean isEmpty(); public boolean contains(Object o) und containsAll(Collection c); public int size(); public Iterator iterator(); //siehe „Iterator“ public boolean add(Object o) und addAll(Collection c); public boolean remove(Object o); public Object[] toArray(); public void clear(); List: Liste – Duplikate erlaubt, Zugriff über Position Æ ArrayList: Internes Array, schneller Zugriff auf einzelnes Element Æ LinkedList: Verlinkte Liste, schnelles Hinzufügen/Löschen mittendrin Set: Menge – keine Duplikate (add gibt false zurück wenn o bereits vorhanden) Æ HashSet: zufällige Reihenfolge (also völlig unsortiert) Æ TreeSet: automatisch sortiert Æ LinkedHashSet: HashSet mit Beibehaltung der Einfügereihenfolge Map: Tabelle mit eindeutigen Schlüsseln und zugehörigen Werten Æ HashMap, TreeMap, LinkedHashMap (siehe auch Set, Sortierung nach Keys) === List (extends Collection) (import java.util.List) Wichtig: List list = new ArrayList oder new LinkedList; ! Î import java.util.ArrayList oder java.util.LinkedList public Object get(int index); //parsen! public Object set(int index, Object element); //parsen! public Object remove(int index); //parsen! public int indexOf(Object o); === sort, binarySearch implements Comparable (import java.util.Collections) zu implementieren: public int compareTo(Object o) (<0, wenn this < o) Arrays: static void sort(Object[] a); static int binarySearch(Object[] a, Object key); (<0 ‫)׍‬ Collections: static void sort(List list); static int Collections.binarySearch(List list, Object key); (<0 ‫)׍‬ == Set (extends Collection) (import java.util.Set) Wichtig: Set set = new HashSet/TreeSet/LinkedHashSet; Æ import java.util.HashSet/TreeSet/LinkedHashSet == Map (extends Collection) (import java.util.Map) Wichtig: Map map = new HashMap/TreeMap/LinkedHashMap; Æ import java.util.HashMap/TreeMap/LinkedHashMap public boolean containsKey(Object key) und containsValue(Object value); public Object get(Object key); //gibt Eintrag mit Schlüssel key zurück – parsen! public Object put(Object key, Object value); //gibt ggf. altes Obj. mit key zurück public Object remove(Object key); // gibt gelöschtes Obj. (oder null) zurück == Iterator (siehe auch Collection) (import java.util.Iterator) (durch for‐each ersetzbar – siehe „Schleifen“) boolean hasNext(); //mehr Elemente? Object next(); //nächstes Element, einmal ausführen = 1. Element – parsen! == Generics (ab Java 1.5) – E wird bei Implementierung durch Datentyp ersetzt public interface List<E> { void add(E x); Iterator<E> iterator(); } Einschränkung auf bestimmte Klassenhierarchie: <E extends Oberklasse> Verwendung bei List, Set und Map: List<E>, Set<E>, Map<K, V> Achtung: Statt List<int> muss List<Integer> verwendet werden! == Exceptions: throw new NullPointerException(); // NullPointerException ==Datum: import java.util.Date; // Datentyp Date benutzbar new Date(); // aktuelle Zeit in ms, Zugriff: long getTime() long System.currentTimeMillis() // Alternative für aktuelle Zeit in ms ==instanceof: <inst> instanceof <class> // <inst> Instanz von <class>? 
Herunterladen