javazert
javazert
javazert
Set of flashcards Details
Flashcards | 300 |
---|---|
Language | Deutsch |
Category | Computer Science |
Level | Other |
Created / Updated | 08.01.2020 / 08.01.2020 |
Weblink |
https://card2brain.ch/box/20200108_javazert
|
Embed |
<iframe src="https://card2brain.ch/box/20200108_javazert/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>
|
Können default-Methoden aus interfaces überschrieben werden?
Ja
Was muss die Klasse sein wenn sie ein Interface implementiert aber die Methoden nicht implementiert?
Abstrakt
Welche Methoden werden bei interfaces nicht vererbt, bei abstrakten klassen aber schon?
static --> static void .. wird von abstrakten Klassen vererbt, interfaces aber nicht
Was passiert, wenn eine Klasse zwei interfaces implementiert die beide die gleiche default-Methode anbieten?
Wird nicht compilen, Compiler hat keine Ahnung welche der Methoden er nehmen sollte
Wie kann man das Problem lösen, dass eine Klasse nicht compiled wenn sie zwei Interfaces mit derselben default-Methode implementiert?
Eine eigene Implementierung der default-Methode schreiben
Was passiert wenn eine Klasse zwei Interfaces implementiert, in einem gibt es eine default Methode, im anderen eine abstrakte Methode mit derselben signatur wie die default-Methode
Wenn man die Methode implementiert kein Problem, sonst mekkert der compiler dass sie noch compiliert werden muss
Kann eine Klasse zwei Interfaces implementieren die beide eine abstrakte Methode angeben mit derselben Signatur?
Ja, muss ja noch implementiert werden
Kann eine Klasse mehrere Interfaces implementieren welche Variablen mit demselben Namen haben?
Ja, die Verwendung muss aber eindeutig sein ( Interface1.variable1 , ..)
Kann eine normale Klasse ein Interface "extend"en?
Nein, nur abstrakte klassen. Interfaces können von normalen Klassen nur implemented werden
Wie erweitert man ein interface mit einem Interface?
über extends (im unterschied zu normalen Klassen, hier können interfaces nur implementiert werden mit implements)
Kann ein interface ein anderes interface implementieren?
Nein, nur extenden (im unterschied zu normalen Klassen)
Was ist der fundamentale Unterschied zwischen einem Interface und einer abstrakten Klasse?
Ein Interface defininert nur das Verhalten, eine abstrakte Klasse auch das Objekt
Ist das compilierbar?
ArrayList<String> al = new ArrayList<String();
al.add(new Object());
Nein, der compiler checkt ob ein String übergeben wird
Ist das valide?
List<String al = new ....
Integer in = al.get(0);
Nein, der compiler checkt ob es compatible Types sind (String und Object würden funktionieren)
Führt das zu einer compile-time oder einer run-time-exception?:
Integer i = 10;
String s = (String) i;
Compile-time
Was bedeutet type erasure?
Alle generischen informationen werden zur runtime weggeschnitten, generics also nur für den Compiler
Sind generische Informationen teil der Methodensignatur?
Nein, weil sie wegen type erasure wegeschnitten werden kann das nicht sein
Wird so etwas übersetzen?
processData(Data<String> stringData) {..}
processData(Data<Integer> integerData){..}
Nein, "name clash, same erasure" -> generics wird weggeschnitten, dann steht die gleiche Signatur zwei mal da
Würde etwas in der Art übersetzen?
class Base {public void processData(Data<String> stringData) {..} }
class Sub extends Base { public void processData(Data<Integer> intData) {..} }
Nein, würde das Verprechen der Baseklasse brechen (trotz type erasure erkennt das der compiler)
Sind null-elemente oder duplicates erlaubt in java.util.List?
Ja
Was ist besonders an ArrayList.subList(int fromIndex, int toIndex)?
Returned keine neue, unabhängige Liste sondern nur eine View in die originale Liste (be aware of ConcurrentModificationExceptions)
Was macht die List.of methode? (Bspw. List<String> list = List.of("a","b"); und was sind die parameter?
Nimmt 0 - 10 parameter und returned eine unmodifizierbare Liste.
Keine nulls!
Was macht die List.copyOf-methode?
nimmt die Elemente einer Liste und erzeugt eine unmodifizierbare Liste.
Erlaubt keine nulls!
Kopiert referenzen, legt keine neuen Objekte an!
Was ist hier die Ausgabe?
List<Integer> list = List.of();
list.add(0,1); list.add(0,2);
System.out.println(list);
Wird nicht compilen, return von List.of() ist unmodificable!!
Wie lauten die Konstruktoren von ArrayList? (mit Eigenschaften)
- new ArrayList() -> leere Liste, initial capacity von 10
- new ArrayList(Collection c): liste mit liste der elemente (modificable)
- new ArrayList(int capa): liste mit gegebener initial capacity
die Kapazität erweitert sich dynamisch!
Wie kann man die Kapzität bei ArrayLists erhöhen (Funktion)
mit ensureCapacity(int n)
Wie kann man die Kapazität von ArrayLists veringern dass sie nur noch so groß ist wie die anzahl elemente darin?
Mit trimToSize()
Wie kann man Elemente in einer ArrayList replacen?
- myArrayList.set(int index, E element), returns replaced Element
Was wird returned von indexOf wenn ein Element nicht in der liste ist?
-1
Was wird returned by myArrayList.indexOf(null)?
der index eines null-elements
Welche Methode von ArrayList wirft eine NullPointerException?
Gar keine! Sie werfen eine IndexOutOfBoundsException
Ist Methodchaining mit add bei ArrayList möglich?
Nein
Was sind die Vorteile von ArrayList?
- Dynamic izing
- type safety (mit generics)
- readymade features wie suchen, irgendwo insert, ..
Was sind die Nachteile von ArrayList?
- Mehr speicher benötigt als für ein array
- keine Type safety wenn man sie ohne generics verwendet
- kein support für primitive typen (mit autoboxing kann man primitive Werte übergeben, hat aber performanceeinbusen)
Was ist similarities zwischen arraylists und arrays?
- orderng - beide behalten die Reichenfolge der Elemente
- duplicates - beide erlauben Duplicates
- nulls - beide erlauben null-elemente
- performance - suche, .. dauert gleich lang(arraylist ist eig ein array)
- thread safety
Ist Map und HashMap auch eine Collection?
Nein, ein extra zweig!
Was returned Map.keySet() ?
Ein Set der Keys (keys sind unique!)
Was returned Map.values() ?
eine Collection -> die Elemente können auch duplicates enthalten
Wie schauen die Variationen des Lambdaoperators aus?
- () -> true
- a -> a*a // (int a) -> a*a
- (a,b,c) -> a+b+c // (int a, int b) -> a+b;
Kann man var in lambdas benutzen?
Ja, muss aber in klammern stehen: (var a) -> a*a