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