Blatt6.1

Transcrição

Blatt6.1
Prof. Dr. Detlef Krömker
Ashraf Abu Baker
Robert-Mayer-Str. 10
60054 Frankfurt am Main
Tel.: +49 (0)69798-24600
Fax: +49 (0)69798-24603
EMail: [email protected]
1. Betrachte das folgende Programm:
1.x = 0;
2.if (x1.hashCode() != x2.hashCode() ) x = x + 1;
3.if (x3.equals(x4) ) x = x + 10;
4.if (!x5.equals(x6) ) x = x + 100;
5.if (x7.hashCode() == x8.hashCode() ) x = x + 1000;
6.System.out.println("x = " + x);
Angenommen die Methoden equals() und hashCode() aus java.lang.Object sind implementiert, und
x1 bis x8 sind Objekte vom gleichen Typ. Wenn die Ausgabe des Programms „x = 1111“ ist, welche
der folgenden Aussagen ist immer richtig?
A.
B.
C.
D.
x2.equals(x1)
x3.hashCode() == x4.hashCode()
x5.hashCode() != x6.hashCode()
x8.equals(x7)
2. Betrachte das folgende Programm:
1.class Test1
2.
public
3.
public
4.
5.
6.
}
7.}
{
int value;
8.class Test2
public
9.
10.
11.
public
12.
13.
}
14.}
{
int value;
int hashCode() {
return 42;
int hashcode() {
return (int) (value ^ 5);
Welche Aussage ist wahr?
A.
B.
C.
D.
E.
Die Klasse Test1 compiliert nicht.
Die hashCode() Methode in Test1 ist effizienter als die hashCode()
Methode in Test2.
Die hashCode() Methode in Test1 ist weniger effizient als die hashCode()
Methode in Test2.
Die Klasse Test2 compiliert nicht.
Die beiden Methoden sind gleich effizient.
3. Seien die equals() und die hashCode() Methode für die Klasse X legal überschrieben .
Was gilt für Objekte A,B (Instanzen von X)?
A.
B.
C.
D.
E.
A.equals(B) == true => A.hashCode() == B.hashCode()
A.equals(B) == false => A.hashCode() == B.hashCode()
A.hashCode() == B.hashCode() => A.equals(B) == true
A.hashCode() == B.hashCode() => (möglicherweise) A.equals(B) == true
A.hashCode() != B.hashCode() => (möglicherweise) A.equals(B) == true
4. Welche Klasse überschreibt nicht die equals() und die hashCode() Methoden?
A.
B.
C.
D.
E.
java.lang.String
java.lang.Double
java.lang.StringBuffer
java.lang.Character
java.util.ArrayList
5.Welche Aussagen sind richtig für legal überschriebene hashCode() and equals()
Methoden?
A.
B.
C.
D.
hashCode() muss nicht überschrieben werden, wenn equals() schon überschrieben
ist.
equals() muss nicht überschrieben werden, wenn hashCode() schon überschrieben
ist.
hashCode() liefert bei wiederholtem Lauf eines Programms immer den gleichen
Wert für ein bestimmtes Objekt zurück.
Zwei verschiedene Objekte können niemals den gleichen Hash-Code haben.
6. Welche Methode der Klasse java.io.File kann auf der Festplatte eine Datei
erzeugen ?
A.
B.
C.
D.
E.
newFile()
makeFile()
makeNewFile()
createFile()
createNewFile()
7. Was ergibt die Ausführung des folgenden Programms?
1. File f1 = new File("dirname");
2. File f2 = new File(f1, "filename");
A.
B.
C.
D.
E.
Ein neues Directory mit dem Namen dirname wird im aktuellen Verzeichnis erzeugt.
Ein neues Directory mit dem Namen dirname wird im aktuellen Verzeichnis erzeugt.
Darin wird die Datei mit dem Namen filename erstellt.
Im aktuellen Verzeichnis wird sowohl ein Verzeichnis dirname als auch die Datei
filename erstellt.
Im aktuellen Verzeichnis wird die Datei filename erstellt.
Kein Verzeichnis und keine Datei werden erstellt.
8. Welche Aussagen sind richtig?
A.
B.
C.
Ein File Objekt muss nicht unbedingt ein reale Datei repräsentieren.
Ein File Objekt kann sowohl Dateien als auch Verzeichnisse repräsentieren.
Ein File Objekt kann nur Dateien und keine Verzeichnisse repräsentieren.
9. Welche Aussagen sind richtig ?
A.
B.
C.
D.
Man erhält eine IOException, wenn man eine Instanz von File erzeugt, und die
Filenamenkonventionen der Hardware nicht beachtet.
Wird eine Instanz von File mit einem Filenamen erzeugt, der noch nicht existiert, so
wird die Datei automatisch angelegt.
Wenn eine Instanz von File gelöscht (garbage collected) wird, wird die
entsprechende Datei im Filesystem gelöscht.
Keines aus A-C.
10. Welche Aussagen sind richtig?
A.
Datastreams (DataInputStream/DataOutputstream) unterstüzen I/O von primitiven
Datentypen (boolean, char, byte, short, int, long, float, and double) und Strings.
B.
FileStreams (FileInputStream/FileOutputStream) lesen/schreiben einzelne Bytes oder
Arrays von Bytes.
C.
Ein RandomAccessFile erlaubt den nichtsequenziellen Zugriff auf die Daten einer
Datei.Es stehen Methoden zum Lesen/Schreiben aller primitiven Datentypen zur
Verfügung.
D.
BufferedStreams (BufferedInputStream/BufferedOutputstream) schreiben/lesen
Daten aus einem Pufferspeicher. Das hat den Vorteil, dass nicht für jedes einzelne
Datum eine I/O Operation mit der Hardware initiert werden muss, d.h. mehrere Bytes
werden immer auf einmal geschrieben/gelesen.
11. Wieviele Bytes werden von dem folgenden Programm in die Datei dest geschrieben?
1.try {
2.
FileOutputStream fos = new FileOutputStream("dest");
3.
DataOutputStream fos = new DataOutputStream(fos);
4.
dos.writeInt(3);
5.
dos.writeDouble(0.0001);
6.
dos.close();
7.
fos.close();
8.}
9.catch (IOException e) { }
A.
B.
C.
D.
E.
2
8
12
16
Die Anzahl der geschriebenen Bytes ist von der Hardware abhängig.
12. Die seek() Methode erlaubt es zu bestimmen an welcher Position in RandomAccessFile) gelesen oder geschrieben wird. Welcher Position entspricht das erste Byte
einer Datei. (seek(0) oder seek(1))?
A.
B.
0
1
13. Die Methode getFilePointer() hat als Rückgabewert die aktuelle Lese/Schreibposition
in der Datei. Welchen Typ hat der Rückgabewert ?
A.
B.
C.
int
double
long
14. Was gibt das Programm in Zeile 9 aus?
1.FileOutputStream fos = new FileOutputStream("xx");
2.for (byte b=10; b<50; b++)
3.
fos.write(b);
4.fos.close();
5.RandomAccessFile raf = new RandomAccessFile("xx", "r");
6.raf.seek(10);
7.int i = raf.read();
8.raf.close()
9.System.out.println("i = " + i);
A.
B.
C.
D.
E.
Die Ausgabe ist: i = 30
Die Ausgabe ist: i = 20
Die Ausgabe ist: i = 10
Es gibt keine Ausgabe, weil in Zeile 1 eine Exception geworfen wird.
Es gibt keine Ausgabe, weil in Zeile 5 eine Exception geworfen wird.
15. Was sind gültige Modusstrings für den RandomAccessFile Konstruktor ?
A.
B.
C.
D.
E.
"r"
"ro"
"rw"
"rws"
"rwd"
16. Was sind gültige Argumente für den DataInputStream Konstruktor ?
A.
B.
C.
D.
File
FileReader
FileInputStream
RandomAccessFile
17. Was passiert beim Compilieren und Ausführen des folgenden Programms?
(Man kann annehmen, das in das aktuelle Verzeichnis geschrieben werden darf,
und, daß keine Datei datafile existiert.)
1.try {
2.
RandomAccessFile raf =
3.
new RandomAccessFile("datafile", "rw");
4.
BufferedOutputStream bos =
5.
new BufferedOutputStream(raf);
6.
DataOutputStream dos =
7.
new DataOutputStream(bos);
8.
dos.writeDouble(Math.PI);
9.
dos.close()
10.
bos.close()
11.
raf.close()
12.}
13.catch (IOException e) { }
A.
B.
C.
D.
Das Progamm compiliert nicht.
Das Programm compiliert, wirft aber eine Exception in Zeile 4.
Das Programm compiliert und läuft, aber ohne das ein File erzeugt und Daten
geschrieben werden.
Das Programm compiliert und läuft. Danach exisitiert die Datei datafile im aktuellen
Verzeichnis.
18. Was gilt für Readerklassen (FileReader, StringReader, etc.) in Java?
A.
B.
C.
D.
E.
Sie besitzen Methoden, die float und double lesen.
Sie besitzen Methoden, die float lesen.
Sie besitzen Methoden, die double lesen.
Sie besitzen Methoden, die int lesen.
Keines von A-D.
19. Es soll eine Datei gelesen werden, die nicht von einem Javaprogramm erzeugt wurde.
Die Datei enthält 8-Bit Text. Die einzelnen Zeilen werden durch newline Zeichen getrennt. Welches Programm liest die Datei in Java Strings?
A.
B.
C.
D.
E.
Erzeuge eine Instanz von RandomAccessFile und benutzte die Methode readText().
Erzeuge eine Instanz von RandomAccessFile und benutzte die Methode readUTF().
Erzeuge eine Instanz von FileReader.
Übergebe die Instanz dem Konstruktor von LineNumberReader.
Rufe die readLine() Methode von LineNumberReader auf.
Erzeuge einen FileInputStream.
Übergebe die Instanz dem Konstruktor von LineNumberReader.
Rufe die readLine() Methode von LineNumberReader auf
Erzeuge einen FileInputStream.
Übergebe die Instanz dem Konstruktor von DataInputStream.
Rufe die readLine() Methode von DataInputStream auf
20. Wie kann man den Inhalt eines Verzeichnisses auflisten, wenn myFile ein Fileobjekt
ist?
A.
B.
C.
D.
String[] contents = myFile.list();
File [] contents = myFile.list();
StringBuilder[] contents = myFile.list();
Die File Klasse bietet keine Möglichkeit ein Verzeichnis aufzulisten.
21. Welche der Aussagen sind richtig ?
A.
B.
C.
D.
Man kann das Arbeitsverzeichnis durch den Aufruf der Methode
setWorkingDirectory() der File Klasse wechseln.
Man kann das Arbeitsverzeichnis durch den Aufruf der Methode cd() der
File Klasse wechseln.
Man kann das Arbeitsverzeichnis durch den Aufruf der Methode
changeWorkingDirectory() der File Klasse wechseln.
Keines aus A-C.
22. Die Datei datafile wird mit dem folgenden Code erzeugt:
1.FileOutputStream fos = new FileOutputStream("datafile");
2.DataOutputStream dos = new DataOutputStream(fos);
3.for (int i = 0; i<500; i++)
4.
dos.writeInt(i);
Es soll ein Programm geschrieben werden, das die geschriebenen Daten ausliest. Welche
Lösungen sind richtig?
A.
Erzeuge einen FileInputStream mit dem Filenamen als Argument.
Erzeuge einen DataInputStream mit dem erhaltenen FileInputStream als
Argument.Rufe die readInt() Methode des DataInputStream auf.
B.
Erzeuge einen FileReader mit dem Filenamen als Argument.
Rufe die readInt() Methode des FileReader auf.
C.
Erzeuge einen PipedInputStream mit dem Filenamen als Argument.
Rufe die readInt() Methode des PipedInputStream auf.
D.
Erzeuge einen RandomAccessFile mit dem Filenamen als Argument.
Rufe die readInt() Methode des RandomAccessFile auf.
Erzeuge einen FileReader mit dem Filenamen als Argument.
Erzeuge einen DataInputStream mit dem erhaltenen FileReader als Argument.
Rufe die readInt() Methode des DataInputStream auf.
E.
23. Angenommen eine Datei ‚aaa’ wurde von einem Javaprogramm mit der Methode
DataOutputStream erzeugt. Sie enthält 10 doubles gefolgt von einem UTF-String.
Welches Programm liest den String korrekt ein?
A. RandomAccessFile raf =
new RandomAccessFile(“aaa”, “r”);
i=0; i<10;i++)
raf.readDouble();
String s = raf.readUTF();
for(int
B
RandomAccessFile raf =
new RandomAccessFile(“aaa”, “r”);
raf.seek(10*8);
String s = raf.readUTF();
C. FileReader fr = new FileReader(fr);
for(int
i=0; i<10*8;i++)
fr.read();
String s = fr.readUTF();
D. FileInputStream fis = new FileInputStream(„aaa“);
DataInputStream dis = new DataInputStream(fis);
for(int i=0; i<10;i++)
dir.readDouble();
String s = dis.readUTF();
E.
FileInputStream fis = new FileInputStream(„aaa“);
DataInputStream dis = new DataInputStream(fis);
dis.seek(10*8);
String s = dis.readUTF();
24. Welche Aussagen sind richtig ?
A.
B.
C.
D.
System.out hat eine println() Methode.
System.out hat eine format() Methode.
System.err hat eine println() Methode.
System.err hat eine format() Methode.
25. Was passiert beim Compilieren und Ausführen des Programms ?
1.import java.io.*;
2.
3.public class Xxx {
4.
public static void main(String[] args) {
5.
try {
6.
File f = new File("xxx.ser");
7.
FileOutputStream fos = new FileOutputStream(f);
8.
ObjectOutputStream oos = new ObjectOutputStream(fos);
9.
oos.writeObject(new Object());
10.
oos.close()
11.
fos.close()
12.
}
13.
catch (Exception x) { }
14.
}
15.}
A.
B.
C.
D.
Compilerfehler in Zeile 9.
Eine Ausnahme wird in Zeile 9 geworfen.
Eine Ausnahme wird in Zeile 10 geworfen.
Es tritt kein Compilierfehler und auch keine Ausnahme auf.
Vorname
Nachname
Matrikelnummer
Erreichte
Punktzahl
Gesamtpunktzahl
Tutor:
Frank Abromeit
Igor Geier
Gerold Kühne
Muhammed Sayar
25

Documentos relacionados