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 variablendeklarationen und arraydeklarationen gemischt werden?
(int i, ia[]; )?
Ja, int[] ia, iaa[] wäre auch ok, ..
Was für Arrays erstellt man mit folgender deklaration (eindimensional, zweidimensional,.. )?
int[] ia, iaa[]
ia ist ein eindimensionales, iaa ein zweidimensionales ( int[] iaa[]
Was sind "array creation expressions"?
z.B. new String[5];
Was ist die Oberklasse von Array?
Object
Was sind Array-initializer?
z.B. int[] ia = {0,1,2,3}
Was schmeißt ein Array wenn man auf ein Feld zugreift das nicht im Bereich liegt? also z.b. bei new Int[4] auf index 5
ArrayIndexOutOfBoundsException
Wie kommt man an die Länge eines Arrays?
array.length --> ohne (), ist ein feld
Wie cloned man ein Objekt und was passiert, wenn das Array Objekte enthält?
array.clone()
Es erzeugt keine kopien der Objekte, nur die referenzen werden gecloned! (shallow copy)
Was passiert bei folgendem code?:
String[] sa = {"1", "2"}
Object[] oa =sa;
oa[0] = new Object();
compiliert aber zur runtime: java.lang.ArrayStoreException
Was bedeutet es, dass Arrays kovariant sind?
Sie können eine Subklasse der objekte speichern
Number[] na; kann also auch Float,.. speichern
Lexikographische Ordnung: kommt 12345 vor oder nach 1235?
Vor, 1235 ist zwar kürzer aber 1234
Was macht java.util.Arrays.compare(int[] a, int[] b)`?
Gibt int wert zurück bei lexikographischem Vergleich:
0 wenn beide gleich, wert kleiner null wenn das erste Array lexikographisch kleiner ist, wert größer null sonst
null-referenz ist lexikographscih kleiner als nicht-null-referenz
Was macht java.util.Arrays.missmatch(int[] a, int[] b)?
Gibt den index der ersten Abweichung zwischen zwei arrays zurück oder -1 wenn kein missmatch gefunden wurde
Ist das übersetzbar?:
Object[] oa = new int[2][3];
Ja
Ist das übersetzbar?:
Object[][]oaa = new int[2][3]
nein, Object[] oaa wär aber ok
Was bedeutet numeric promotion bei Methoden?
Dass eine Methode die angibt int zurückzugeben auch ein byte, short oder char zurückgeben kann (kleinerer Wert)
Kann eine Methode, die angibt "int" zurückzugeben auch "Integer" zurückgeben?
Ja, dank autoboxing/unboxing (Integer als returntype und 10 als return geht also auch)
Was sind die Einschränkungen bei varargs ( wann können sie nicht benutzt werden)?
- kiann nur einmal vorkommen (nicht int .. p1, int ... p2)
- muss der letzte parameter in einer parameterliste sein
Woraus besteht die Methoden-signatur?
methoden name und der geoordneten Parameterliste
Was heißt Method-overloading?
Selber name bei mehreren Methoden aber unterschiedliche Parameterliste -> Signatur damit unterschiedlich
würde etwas in der art kompilieren? (methoden abgekürzt)
static void doSomething(int i, short s) ...
static void doSomething(Integer i, short s)..
public static void main(String[] args) { int i = 0; short s = 30;
doSomething(i,s);
}
Nein. Methoden haben zwar unterschiedliche Signatur und sind damit ok, der compilre weiß aber nicht welche der Methoden er nehmen soll da beide gleich passend wären
Was bedeutet exact match bei method-overloading?
Die Funktion die den passendsten Parameter hat wird ausgewählt (z.b. int für 5 statt Integer, ..)
Was bedeutet "most specific" bei method overloading?
Wenn keine Methode exakt passt wird die passendste ausgewählt - z.B. CharSequence für "hallo", ..
Wie geht die subtype-hierarchie bei primitive types?
double > float > long > int > char
und int > short > byte
Was wäre der output von folgendem?
public static void m(char ch) { System.out.println("in m");}
...
byte b = 10;
m(b);
Gar keiner, incontabile types da byte kein subtype von char
Bei methodoverloading: Wird erst widening angewandt (nächst größerer, passender Datentyp) oder autoboxing (z.B. Byte)
widening, short also bspw. vor Byte wenn processData((byte)b) ausgeführt wird
Kommt bei overloading erst autoboxing oder erst varargs zu tragen?
Erst autoboxing, es würde also Integer genommen bei aufruf von processData(10) statt "int..."
Auf was muss man aufpassen bei instance initializern in Verbindung mit variablen deklarationen/initialisationen?
instance initializer können überall auftreten, es darf aber keine variable in einem initializer verwendet werden die erst später im code deklariert wird
In welcher Reihenfolge werden instance-initializer und variablendeklarationen bearbeitet?
So wie sie da stehen, die ordnung wird nicht verändert.
Ausgabe des folgenden codes? :
public class TestClass {
{ printI(); }
void printI() { System.out.print(i); }
int i = 10;
public static void main(String[] args) { new TestClass(); }
}
0, zum Zeitpunkt in dem printI aufgerufen wird wurde int i zwar deklariert aber noch nicht initialisiert!
kann es eine Funktion "void TestClass(int x)" in der Class "class TestClass" geben?
Ja, eine Klasse kann eine Methode mit dem selben Namen wie die Klasse haben ohne dass es der Konstruktor ist
Was passiert wenn man einen überladenen Konstruktor in einer Klasse erstellt hat und versucht ein Objekt in der Art von "new neueKlasse()" zu erstellen? -> default Konstruktor?
Der Compiler wird direkt mekkern da es keinen solchen Konstkrutor gibt (kein default Konstruktor wenn einer überschrieben wurde)
Was ist die Accessebility des default-Constructors?
Die gleiche wie die der Klasse!
Was ist die einzige Einschränkung wenn man aus einem Konstuktor einen anderen Konstruktor aufrufen will? (this, super)
Muss in der ersten Zeile des Konstruktors stehen
Funktioniert "this = new Instance()"
nein, this ist eine final variable!
Können instance initializer und konstruktoren errors werfen?
instance initializer nicht, konsturktoren schon
Wäre etwas wie folgt möglich und wenn ja, wie?
Foo f = null;
System.out.println(f.bar);
Ja, wenn bar static ist (static binding/ compile time binding : Der compiler bindet den aufruf von bar nicht an instanz sondern an Foo)
Was bedeutet der access-modifier default?
package private, wenn zwei klassen dem gleichen Package angehören können sie sich gegenseitig nutzen
Was bedeutet der access-modifier protected?
Zwei klassen können sich nutzen wenn sie im gleichen Pacakge liegen oder wenn die eine Klasse eine subklasse der anderen Klasse ist (package ist dabei egal)
Welche access-modifier kann eine top-lvl-klasse benutzen?
public und default