OCP open points

some open points

some open points


Set of flashcards Details

Flashcards 90
Language Deutsch
Category Computer Science
Level Other
Created / Updated 09.01.2020 / 10.01.2020
Weblink
https://card2brain.ch/box/20200109_ocp_open_points
Embed
<iframe src="https://card2brain.ch/box/20200109_ocp_open_points/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>

Was bedeutet "multiple inheritance of state"?

Dass Felder von mehreren Klassen geerbt werden können. Geht in Java nicht.

Was bedeutet multiple inheritance of implementation?

Dass Implementierungen von Methoden von mehreren Klassen geerbt werden können. Gibt es in java bswp mit default/static-methoden in interfaces

Was ist multiple inheritance of type?

Dass eine Klasse mehrere Interfaces implementieren kann

Wie geht die Subtype-hierarchie bei generics mit extends (A<? extends S) .. ?

A<S> <<<<< A<? extends S> <<<<< A<? extends T>

z.B. Integer <<< Number, List<Integer> <<<< List<? Extends Integer> <<< List<? Extends Number>

Wie geht die Subtype-hierarchie bei generics mit super (A<? super T) .. ?

A<T> <<< A<? super T> <<< A<? super S>

z.B. List<Number> <<< List<? Super Number> <<< List<? Super Integer>

Können statische Methoden zusätzlich abstrakt sein?

Nein!

Kann man das default-package importieren?

Nein, etwas wie import *; existiert nicht

Was gibt es für Optionen um ein statisches Feld aus einer Klasse zu importieren? z.B.:

package taxes;

public class Values {

  public static double TAX_RATE = 0.15;

}

1. Über den FQN nutzen: taxes.Values.TAX_RATE;

2. import taxes.Values; oder import taxes.*; dann: Values.TAX_RATE

3. import static taxes.Values.TAX_RATE; oder import static taxes.Values.*; dann einfach TAX_RATE

Welches Package wird immer automatisch importiert?

java.lang

Ist java statisch oder dynamisch typisiert?

statisch, dynamisch typisierte können den datentyp zur runtime ändern

Wertebereich byte

-128 bis 127

Wertebereich char

0 - 65535

Wertebereich short

-32768 bis 32767

Wertebereich int

-2^31 - 2^31-1

Wertebereich long

-2^63 - 2^61-1

Wie geht die subtypehierarchie bei primitiven Datentypen?

double > float > long > int > char

int > short > byte

Was bedeutet es dass eine konstante nur initialisiert werden kann wenn sie eine compile time constant ist?

Wenn die initialisierung von code abhängt mekkert der compiler (bspw. konstanten-initialisierung in if, ggfls uninitialisiert in else?  --> variable von der das if abhängt müsste final sein damit der compiler es rafft)

Kann man ein char auch hexadezimal angeben?

Ja

Was besagt "implicit narrowing"?

Man kann eine compile time constant in eine andere Variable eines anderen Typen packen wenn sie passen würde, der compiler "narrows the value automatically down to the smaller type"

Was bedeutet "explicit narrowing"?

Casting - wenn der wert größer ist als in den neuen Datentyp eigentlich passt überlauf -> fängt wieder beim kleinsten Wert des Datentyps an!

Ist ein implicit widening von int to float okay?

Wie schaut es umgekehrt aus?

int to float ist okay, float to int braucht cast

Ist ein implicit widening von long to double okay?

Wie ist es umgekehrt?

long to dobule ist okay, double to long braucht cast

Wo kann die var-deklaration überall nicht benutzt werden?

  • class/instance members
  • method parameters
  • uninitialisierte variablen
  • kan nnicht auf null gesetzt werden ( was wäre der typ)
  • [] kann nicht an var geklept werden weil var kein typ ist
  • bei arrays muss der typ spezifiziert werden: var arr = new int[]{1,2};
  • als returntype

Was ist die Oberklasse/Interface von String?

Oberklasse Object, implementiert java.lang.CharSequence

Würde das funktionieren?:

Object m = 1;

m += "2";

System.out.println(m);

Ja, 1 wird erst in ein Integer-objet geboxed. Da "2" ein String ist wird eine String-Konktaenation ausgeführt und in m gepackt

Würde das funktionieren?

Object m = "Hello";

m += 1;

System.out.println(m);

Nein, m ist ein object, 1 ist int. Bei m = m + 1 ist also nichts ein String -> keine Stringkonkatenation 

Was returned string.replace oder strip/.. wenn nichts geändert wird?

Den selben string

Was gibt es für Konstruktoren für StringBuilder?

  • StringBuilder(String str)
  • StringBuilder(int capacity)
  • StringBuilder(CharSequence seq)
  • StringBuilder()

Auf was muss man aufpassen bei der Verwendung von Wrappern für primitive datentypen?

Sie sind immutable, d.h. bei bswp ++ wird nicht der Wert tatscählich erhöht sondern ein neuer (erhöhter) Wert zugewiesen!

Was ist die Ausgabe von:

byte b = 1;

short s = -b;

System.out.println(b);

"error: incompatible types: possible lossy conversion from int to short"

-> numeric promotion, -b wird zu int gecasted und passt nicht in short ohne expliziten cast. --b würde gehen da hier automatisch gecasted werden würde

Was ist der Wert von s2?

short s1 = 1;

short s2 = + s1;

Compiled nicht, ergebnis wäre ein int!  (++s1 würde gehen da hier ein cast davor kommen würde)

Was wäre der Wert von b?

short s1 = 1;

byte b = s1 + 2;

Compiled nicht, ergebnis wäre ein int

Was wäre der Wert von b?

final int i = 10;

byte b = i + 2;

12 , geht weil i eine compile time constant ist und das ergebnis in byte passt

Gelten die Regeln der numeric promotion auch für += usw? 

Nein, hier wird wie bei ++ gecasted

Was wäre der WErt von b?

int i = 0;

byte b = (byte) i + 1;

Compiled nicht, erst wird i zu byte gecasted, dann wieder zu int wegen + 1

Was sind Besonderheiten des ternary operators?

  • hat immer eine Rückgabe
  • ist short-circuiting --> wird immer nur eine Möglichkeit ausgeführt!

Was ist die Ausgabe?:

int x = 0;

int y = 1;

System.out.println(x>y? ++x: y++);

System.out.println(x + " " + y);

1

0  2

Welche Datentypen können nicht in einem switch vorkommen?

long,boolean,float,double

Braucht ein switch-case-block ein case label?

Nein

Wäre das ok?

byte b = 10;

switch(b) {

  case 1000: ....

}

Nein, 1000 passt nicht in byte