Sem I (Program I) - N2 Flashcards

1
Q

Kann man while-Schleifen schachteln?

A

JA

int i = 0;
while (i < 3) {
    int j = 0;
    while (j < 3) {
        System.out.println("i: " + i + ", j: " + j);
        j++;
    }
    i++;
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Was bewirkt die break-Anweisung in einer for-Schleife?

A

In einer for-Schleife bewirkt die break-Anweisung, dass die Schleife sofort verlassen wird, unabhängig von der aktuellen Iteration.

for (int i = 0; i < 10; i++) {
    System.out.println(i);
    if (i == 5) {
        break; // Schleife wird verlassen, wenn i gleich 5 ist
    }
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Was ist der Unterschied zwischen break und continue?

A

break:
1) Die break-Anweisung wird verwendet, um eine Schleife vorzeitig zu beenden.
2) Wenn break innerhalb einer Schleife aufgerufen wird, wird die Schleife sofort verlassen, und die Steuerung wird an die Anweisung nach der Schleife übergeben.
3) break wird häufig verwendet, um eine Schleife zu beenden, wenn eine bestimmte Bedingung erfüllt ist, oder um eine Endlosschleife zu verlassen.

continue:
1) Die continue-Anweisung wird verwendet, um den aktuellen Schleifendurchlauf zu beenden und mit dem nächsten Durchlauf fortzufahren.
2) Wenn continue innerhalb einer Schleife aufgerufen wird, wird der restliche Code innerhalb des Schleifenkörpers für den aktuellen Schleifendurchlauf übersprungen, und die Steuerung wird zurück an den Anfang der Schleife gegeben, um mit dem nächsten Durchlauf fortzufahren.
3) continue wird typischerweise verwendet, um bestimmte Iterationen einer Schleife zu überspringen, basierend auf einer Bedingung.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Wird eine Methode bei der Programmausführung immer bis zur schließenden geschweiften Klammer } abgearbeitet?

A

Nein, eine Methode wird nicht zwangsläufig bis zur schließenden geschweiften Klammer } abgearbeitet. Die Ausführung einer Methode endet normalerweise, wenn entweder die letzte Anweisung in der Methode ausgeführt wurde oder eine return-Anweisung erreicht wurde, je nachdem, was zuerst eintritt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Wo fängt Java die Abarbeitung eines Programms an?

A

In Java beginnt die Abarbeitung eines Programms in der Regel in der main-Methode der sogenannten Hauptklasse.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Wo kann eine Methode aufgerufen werden?

A
  1. Innerhalb derselben Klasse:
  2. Innerhalb einer anderen Klasse im selben Paket:
  3. In Unterklassen (bei Vererbung):
  4. Über einen Objektverweis:
  5. Innerhalb von statischen Methoden:
  6. Aus anderen Paketen, wenn die Methode als public deklariert ist:
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Was ist der Unterschied zwischen einem formalen und einem aktuellen Parameter einer Methode?

A

Formale Parameter sind Platzhalter in der Methodendefinition, während aktuelle Parameter die tatsächlichen Werte sind, die beim Methodenaufruf übergeben werden.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Was steht im Methoden-Kopf?(JAVA)

A

Im Methoden-Kopf stehen verschiedene Elemente, die die Signatur der Methode definieren. Die Signatur einer Methode enthält den Rückgabetyp, Methodennamen und die Parameterliste.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Was bedeutet Iterativer Algorithmus?

A

Algorithmus heißt iterativ, wenn Abschnitte des Algorithmus innerhalb einer einzigen Ausführung mehrfach durchlaufen werden.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Was ist Euklidischer Algorithmus?

A

Effizientes Verfahren zur Bestimmung des größten gemeinsamen Teilers (GGT) von zwei ganzen Zahlen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Rekursion vs. Iteration

A
  • rekursive Methode speicherintensiver als iterative
  • Performance: rekursive Methode langsamer als iterative
  • jede rekursive Methode kann in eine iterative umgewandelt werden (übrigens: es gilt auch umgekehrt)
    ===> iterative Methode meist komplexer als rekursive und oft schwerer zu verstehen
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Was ist ein Stack?

A

Verwendet wird, um die Reihenfolge der Aufrufe von Methoden und die entsprechenden lokalen Variablen zu verwalten.
Spielt eine wichtige Rolle bei der Verwaltung des Methodenaufruf- und Ausführungsflusses in Java-Anwendungen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Was ist ein Methodenstack?

A

Spielt eine wichtige Rolle bei der Verwaltung des Methodenaufruf- und Ausführungsflusses in Java-Anwendungen. Wenn der Methodenstack voll ist, kann eine StackOverflowError auftreten, und wenn er leer ist, wird die Ausführung des Programms beendet.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Was ist eine Methodeninstanz?

A

In Java gibt es keine “Methodeninstanz” im eigentlichen Sinne. Stattdessen werden Methoden als Teil von Klassen definiert und können aufgerufen werden, indem man Instanzen dieser Klassen erzeugt und auf sie zugreift.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Was ist ein rekursiver Algorithmus?

A

Ein rekursiver Algorithmus ist ein Algorithmus, der zur Lösung eines Problems eine Funktion aufruft, die sich selbst aufruft.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Kann man eine rekursive Methode immer mit einer iterativen ersetzen?

A

JA

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Was passiert bei Rekursion ohne Abbruchsbedingung?

A

Wenn eine rekursive Funktion ohne eine korrekte Abbruchsbedingung oder Basisfall aufgerufen wird, führt dies in der Regel zu einer Endlosschleife oder einem sogenannten rekursiven Absturz. In einem rekursiven Algorithmus ist die Abbruchsbedingung entscheidend, um zu verhindern, dass der rekursive Prozess unendlich weiterläuft.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Was passiert bei Iteration ohne Abbruchsbedingung?

A

Wenn eine Iteration ohne eine Abbruchsbedingung auftritt,führt dies zu einer Endlosschleife, bei der die Schleife unendlich weiterläuft und niemals terminiert. In einer solchen Situation wird die Ausführung des Programms blockiert und es kommt zu einer sogenannten Endlosschleife, die den Programmfluss nicht mehr verlassen kann.

Im Gegensatz zur Rekursion, bei der eine fehlende Abbruchsbedingung oft zu einem Stapelüberlauf (Stack Overflow) führt, führt eine fehlende Abbruchsbedingung in einer Iteration zu einer endlosen Wiederholung der Schleife, was die Ausführung des Programms blockiert.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

How to convert sting in to chararray using Java?

A

str.toCharArray()

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

How would you iterate over an array using for loop and Java?

A
String str = "Hello, Baeldung!"; 
for (char c : str.toCharArray()) { 
    System.out.print(c);
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Explain the main abilities of the HashSet (Java)

A

HashSet offers constant-time performance for basic operations and does not guarantee any particular order. Very fast.

import java.util.HashSet;
import java.util.Set;

public class HashSetExample {
    public static void main(String[] args) {
        Set<String> hashSet = new HashSet<>();

        // Adding elements
        hashSet.add("Apple");
        hashSet.add("Banana");
        hashSet.add("Orange");
        
        // Adding a duplicate element (ignored)
        hashSet.add("Apple");

        // Displaying elements
        System.out.println("HashSet elements: " + hashSet);
    }
}
22
Q

Explain the main abilities of the LinkedHashSet (Java)

A

Maintains insertion order but offers slightly slower performance compared to HashSet due to the extra overhead of maintaining the linked list.

import java.util.LinkedHashSet;
import java.util.Set;

public class LinkedHashSetExample {
    public static void main(String[] args) {
        Set<String> linkedHashSet = new LinkedHashSet<>();

        // Adding elements
        linkedHashSet.add("Apple");
        linkedHashSet.add("Banana");
        linkedHashSet.add("Orange");

        // Displaying elements (preserves insertion order)
        System.out.println("LinkedHashSet elements: " + linkedHashSet);
    }
}
23
Q

Explain the main abilities of the TreeSet (Java)

A

Maintains elements in sorted order and offers slower performance for basic operations compared to HashSet and LinkedHashSet. However, it provides efficient operations for retrieving elements in sorted order.

import java.util.TreeSet;
import java.util.Set;

public class TreeSetExample {
    public static void main(String[] args) {
        Set<String> treeSet = new TreeSet<>();

        // Adding elements
        treeSet.add("Apple");
        treeSet.add("Banana");
        treeSet.add("Orange");

        // Displaying elements (sorted order)
        System.out.println("TreeSet elements: " + treeSet);
    }
}
24
Q

Please explain what the following JAVA library does?
“import java.text.DecimalFormat;”

A

Used for formatting decimal numbers according to a specified pattern.

1) format numerical values into strings
2) parse strings back into numerical values.
3) special characters that define how numbers should be formatted.

25
Q

Java ArrayList.

A

1) Resizable: Unlike arrays, ArrayList can dynamically resize itself to accommodate the addition or removal of elements.
2)Ordered Collection: ArrayList maintains the order of elements as they are inserted.
3) Generics: ArrayList supports generics, allowing you to specify the type of elements it will hold.
4) Random Access: ArrayList provides fast, constant-time access to elements by index.

import java.util.ArrayList;

public class ArrayListExample {
    public static void main(String[] args) {
        // Creating an ArrayList of Strings
        ArrayList<String> names = new ArrayList<>();

        // Adding elements to the ArrayList
        names.add("Alice");
        names.add("Bob");
        names.add("Charlie");
        names.add("David");

        // Accessing elements by index
        System.out.println("First name: " + names.get(0)); // Output: Alice
        System.out.println("Second name: " + names.get(1)); // Output: Bob

        // Iterating over the ArrayList
        System.out.println("All names:");
        for (String name : names) {
            System.out.println(name);
        }

        // Removing an element
        names.remove("Bob");
        System.out.println("After removing Bob:");
        for (String name : names) {
            System.out.println(name);
        }

        // Checking if an element exists
        if (names.contains("Alice")) {
            System.out.println("Alice is in the list.");
        } else {
            System.out.println("Alice is not in the list.");
        }

        // Getting the size of the ArrayList
        System.out.println("Number of names: " + names.size()); // Output: 3
    }
}
26
Q

Was ist die größte positive Zahl, die mit n Bits dargestellt werden kann? Geben Sie ein Beispiel an.

A

Mit 3 Bits können 2^3 = 8 − 1=7. Daher ist 7 das größte positive Beispiel, das mit 3 Bits dargestellt werden kann.

27
Q

Welche Darstellung verwendet der Computer und warum?

A

Computer verwenden in der Regel das Zweierkomplement zur Darstellung von ganzen Zahlen. Das Zweierkomplement ist eine Methode zur Darstellung von sowohl positiven als auch negativen ganzen Zahlen mithilfe von Binärzahlen.

1) Einfache Addition und Subtraktion.
2) Jede ganze Zahl hat im Zweierkomplement eine eindeutige Darstellung.
3) Nur ein weg um 0 zu darzustellen.
4) Effiziente Uberprufung auf Vorzeichen. 0 ist positiv und 1 ist negativ.

28
Q

Was ist der breiteste Datentyp in Java für ganze Zahlen?

A

long = 2^64 = von -9,223,372,036,854,775,808 bis 9,223,372,036,854,775,807.

29
Q

Was ist MSB und LSB?

A

MSB und LSB sind Abkürzungen für “Most Significant Bit” und “Least Significant Bit”

1) MSB: den höchsten Wert hat und daher am weitesten links steht, wenn man die Binärzahl betrachtet oder 0 fur positiv und 1 fur negativ.
2) LSB: den niedrigsten Wert hat und daher am weitesten rechts steht, wenn man die Binärzahl betrachtet. Es hat den geringsten Einfluss auf den Wert der Zahl.

30
Q

Dürfen in einer Klasse mehrere Methoden mit identischem Methodenkopf vorkommen?

A

Nein

31
Q

Kann eine Methode mit Rückgabetyp void eine Return-Anweisung beinhalten?

A

Ja, aber bedeutet das, dass die Methode keinen Wert zurückgibt, sondern einfach vorzeitig beendet wird, wenn die Return-Anweisung ausgeführt wird.

32
Q

Was ist eine Methodeninstanz?

A

Spricht man von einer “Methodeninstanz”, wenn eine Methode einer Klasse aufgerufen wird und eine bestimmte Operation ausführt. Jedes Mal, wenn eine Methode aufgerufen wird, wird eine Instanz dieser Methode erstellt.

33
Q

Was ist ein Methodenstack?

A

Aufrufstack oder Call Stack ist eine Datenstruktur, die verwendet wird, um Informationen über die aktiven Methodenaufrufe im Programm zu speichern.

34
Q

Sollte der Gültigkeitsbereich einer Variable (Deklaration vs. Verwendung) so groß oder so klein wie möglich sein?

A

Der Gültigkeitsbereich einer Variablen sollte so klein wie möglich sein. Dies wird oft als Prinzip der “lokalen Abgrenzung” bezeichnet.

Wenn eine Variable nur innerhalb einer bestimmten Methode benötigt wird, sollte sie daher innerhalb dieser Methode deklariert werden, anstatt sie im gesamten Programm verfügbar zu machen.

35
Q

Ist jede „nackte“ Zahl im Quellcode eine magische Zahl?

A

Ja, im Allgemeinen wird eine “nackte” Zahl im Quellcode oft als magische Zahl betrachtet. Eine “magische Zahl” ist eine Zahl, die direkt im Code verwendet wird, ohne eine aussagekräftige Bezeichnung oder Erläuterung.

36
Q

Dürfen im Quellcode magic numbers verwendet werden?

A

Ja, im Quellcode können Magic Numbers verwendet werden, aber es ist eine bewährte Praxis, sie zu vermeiden oder zumindest zu minimieren. Magic Numbers sind Zahlen, die direkt im Code verwendet werden, ohne eine erklärende Variable oder Konstante.

37
Q

Warum ist die Verwendung von Konstanten vorteilhaft?

A
  1. Lesbarkeit und Verständlichkeit:
  2. Wartbarkeit:
  3. Fehlervermeidung: :
38
Q

Was ist der Unterschied zwischen literalen und symbolischen Konstanten?

A

1. Literale Konstanten: sind feste Werte, die direkt im Code angegeben werden.
~~~
int zahl = 10;
String name = “Max”;
~~~
2. Symbolische Konstanten: sind benannte Konstanten, die mit einem sprechenden Namen definiert werden und zur Verbesserung der Lesbarkeit und Wartbarkeit des Codes beitragen.
~~~
final int MAX_ZAHL = 100;
final double PI = 3.14159;
~~~

39
Q

Was ist eine implizite Typumwandlung?

A

Auch als automatische tritt auf, wenn ein Wert eines bestimmten Datentyps in einen anderen Datentyp umgewandelt wird, ohne dass explizite Anweisungen vom Programmierer erforderlich sind.

40
Q

Kann jeder schmalere DT in einen breiteren implizit umgewandelt werden?

A

Nein. Einige schmalere Datentypen können negative Werte speichern, die in einem breiteren Datentyp nicht dargestellt werden können.
Beispiel dafür ist die Umwandlung von einem byte in einen char.

41
Q

Kann man durch den cast-Operator einen schmaleren DT explizit in einen breiteren DT umwandeln?

A

Ja, der Cast-Operator ermöglicht es, einen schmaleren Datentyp explizit in einen breiteren Datentyp umzuwandeln. Dies wird oft als “casting” bezeichnet.

42
Q

Was ist die Gefahr beim explizitem Casting?

A
  1. Datenverlust
  2. Genauigkeitsverlust:
  3. Typfehler:
43
Q

Was passiert bei einer Umwandlung boolean → int?

A

Wird der boolean-Wert true in den int-Wert 1 umgewandelt und der boolean-Wert false in den int-Wert 0.

44
Q

Füge die richtigen Datentypen ein.
variable1 = ‘\u0061’;

A

char

45
Q

Füge die richtigen Datentypen ein.
variable4 = -112 + ‘A’;

A

int

46
Q

Füge die richtigen Datentypen ein.
variable15 = “-28” + 2;

A

String

47
Q

Arrays.binarySearch()

A

It’s used to search for a specific element in a sorted array using the binary search algorithm. If the element is found, the method returns the index of the element

int[] arr = {1, 3, 5, 7, 9};
int index = Arrays.binarySearch(arr, 5);
System.out.println(index);  // Output: 2
48
Q

Search for a specific element in a sorted array using the binary search algorithm.

A

Arrays.binarySearch()

int[] arr = {1, 3, 5, 7, 9};
int index = Arrays.binarySearch(arr, 5);
System.out.println(index);  // Output: 2
49
Q

Arrays.sort()

A

method used to sort arrays in ascending order.

import java.util.Arrays;

public class SortExample {
    public static void main(String[] args) {
        int[] numbers = {5, 3, 8, 1, 2};
        Arrays.sort(numbers);
        System.out.println(Arrays.toString(numbers));  // Output: [1, 2, 3, 5, 8]
    }
}
import java.util.Arrays;

public class SortExample {
    public static void main(String[] args) {
        String[] fruits = {"Banana", "Apple", "Mango", "Cherry"};
        Arrays.sort(fruits);
        System.out.println(Arrays.toString(fruits));  // Output: [Apple, Banana, Cherry, Mango]
    }
}
50
Q

Method used to sort arrays in ascending order. (JAVA)

A

Arrays.sort()

import java.util.Arrays;

public class SortExample {
    public static void main(String[] args) {
        int[] numbers = {5, 3, 8, 1, 2};
        Arrays.sort(numbers);
        System.out.println(Arrays.toString(numbers));  // Output: [1, 2, 3, 5, 8]
    }
}
import java.util.Arrays;

public class SortExample {
    public static void main(String[] args) {
        String[] fruits = {"Banana", "Apple", "Mango", "Cherry"};
        Arrays.sort(fruits);
        System.out.println(Arrays.toString(fruits));  // Output: [Apple, Banana, Cherry, Mango]
    }
}