Sem I (Program I) - N2 Flashcards
Kann man while-Schleifen schachteln?
JA
int i = 0; while (i < 3) { int j = 0; while (j < 3) { System.out.println("i: " + i + ", j: " + j); j++; } i++; }
Was bewirkt die break-Anweisung in einer for-Schleife?
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 } }
Was ist der Unterschied zwischen break und continue?
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.
Wird eine Methode bei der Programmausführung immer bis zur schließenden geschweiften Klammer } abgearbeitet?
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.
Wo fängt Java die Abarbeitung eines Programms an?
In Java beginnt die Abarbeitung eines Programms in der Regel in der main-Methode der sogenannten Hauptklasse.
Wo kann eine Methode aufgerufen werden?
- Innerhalb derselben Klasse:
- Innerhalb einer anderen Klasse im selben Paket:
- In Unterklassen (bei Vererbung):
- Über einen Objektverweis:
- Innerhalb von statischen Methoden:
-
Aus anderen Paketen, wenn die Methode als
public
deklariert ist:
Was ist der Unterschied zwischen einem formalen und einem aktuellen Parameter einer Methode?
Formale Parameter sind Platzhalter in der Methodendefinition, während aktuelle Parameter die tatsächlichen Werte sind, die beim Methodenaufruf übergeben werden.
Was steht im Methoden-Kopf?(JAVA)
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.
Was bedeutet Iterativer Algorithmus?
Algorithmus heißt iterativ, wenn Abschnitte des Algorithmus innerhalb einer einzigen Ausführung mehrfach durchlaufen werden.
Was ist Euklidischer Algorithmus?
Effizientes Verfahren zur Bestimmung des größten gemeinsamen Teilers (GGT) von zwei ganzen Zahlen.
Rekursion vs. Iteration
- 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
Was ist ein Stack?
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.
Was ist ein Methodenstack?
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.
Was ist eine Methodeninstanz?
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.
Was ist ein rekursiver Algorithmus?
Ein rekursiver Algorithmus ist ein Algorithmus, der zur Lösung eines Problems eine Funktion aufruft, die sich selbst aufruft.
Kann man eine rekursive Methode immer mit einer iterativen ersetzen?
JA
Was passiert bei Rekursion ohne Abbruchsbedingung?
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.
Was passiert bei Iteration ohne Abbruchsbedingung?
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 to convert sting in to chararray using Java?
str.toCharArray()
How would you iterate over an array using for loop and Java?
String str = "Hello, Baeldung!"; for (char c : str.toCharArray()) { System.out.print(c); }
Explain the main abilities of the HashSet (Java)
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); } }
Explain the main abilities of the LinkedHashSet (Java)
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); } }
Explain the main abilities of the TreeSet (Java)
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); } }
Please explain what the following JAVA library does?
“import java.text.DecimalFormat;”
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.
Java ArrayList.
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 } }
Was ist die größte positive Zahl, die mit n Bits dargestellt werden kann? Geben Sie ein Beispiel an.
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.
Welche Darstellung verwendet der Computer und warum?
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.
Was ist der breiteste Datentyp in Java für ganze Zahlen?
long = 2^64 = von -9,223,372,036,854,775,808 bis 9,223,372,036,854,775,807.
Was ist MSB und LSB?
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.
Dürfen in einer Klasse mehrere Methoden mit identischem Methodenkopf vorkommen?
Nein
Kann eine Methode mit Rückgabetyp void eine Return-Anweisung beinhalten?
Ja, aber bedeutet das, dass die Methode keinen Wert zurückgibt, sondern einfach vorzeitig beendet wird, wenn die Return-Anweisung ausgeführt wird.
Was ist eine Methodeninstanz?
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.
Was ist ein Methodenstack?
Aufrufstack oder Call Stack ist eine Datenstruktur, die verwendet wird, um Informationen über die aktiven Methodenaufrufe im Programm zu speichern.
Sollte der Gültigkeitsbereich einer Variable (Deklaration vs. Verwendung) so groß oder so klein wie möglich sein?
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.
Ist jede „nackte“ Zahl im Quellcode eine magische Zahl?
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.
Dürfen im Quellcode magic numbers verwendet werden?
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.
Warum ist die Verwendung von Konstanten vorteilhaft?
- Lesbarkeit und Verständlichkeit:
- Wartbarkeit:
- Fehlervermeidung: :
Was ist der Unterschied zwischen literalen und symbolischen Konstanten?
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;
Was ist eine implizite Typumwandlung?
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.
Kann jeder schmalere DT in einen breiteren implizit umgewandelt werden?
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.
Kann man durch den cast-Operator einen schmaleren DT explizit in einen breiteren DT umwandeln?
Ja, der Cast-Operator ermöglicht es, einen schmaleren Datentyp explizit in einen breiteren Datentyp umzuwandeln. Dies wird oft als “casting” bezeichnet.
Was ist die Gefahr beim explizitem Casting?
- Datenverlust
- Genauigkeitsverlust:
- Typfehler:
Was passiert bei einer Umwandlung boolean → int?
Wird der boolean-Wert true in den int-Wert 1 umgewandelt und der boolean-Wert false in den int-Wert 0.
Füge die richtigen Datentypen ein.
variable1 = ‘\u0061’;
char
Füge die richtigen Datentypen ein.
variable4 = -112 + ‘A’;
int
Füge die richtigen Datentypen ein.
variable15 = “-28” + 2;
String
Arrays.binarySearch()
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
Search for a specific element in a sorted array using the binary search algorithm.
Arrays.binarySearch()
int[] arr = {1, 3, 5, 7, 9}; int index = Arrays.binarySearch(arr, 5); System.out.println(index); // Output: 2
Arrays.sort()
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] } }
Method used to sort arrays in ascending order. (JAVA)
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] } }