Übungen zu ``Jav a 2`

Werbung
Übungen zu ‘‘Java 2’’
Sommersemester 99, Bernd Kühl, [email protected]
Blatt 3
vom:
letzter Abgabetermin:
3. Mai 99
10. Mai 99, 10:00 Uhr
Aufgabe 1 (1 Punkt)
a)
Was bedeutet das Wort final bei Variablen, Methoden und Klassen? (Hinweis: Es gibt Java-Bücher.)
b)
Wo ist der Unterschied zwischen der Identität und Äquivalenz/Gleichheit von Objekten? Wie prüfen
Sie beides in Java ab? Was macht die Methode
public boolean equals(Object obj)
der Klasse Object, was die der Klasse String?
c)
Erklären Sie den Unterschied der Operatoren & und && bzw. von | und || bei Verkettung von boolschen Ausdrücken.
Aufgabe 2 (1 Punkt)
Machen Sie sich mit /home/java/Uebungen/Blatt3/Src/InputFile.java vertraut:
import java.io.*;
class InputFile {
FileInputStream fis;
InputFile(String filename) {
fis = new FileInputStream(filename);
}
String getLine() {
int c;
StringBuffer buf = new StringBuffer();
do {
c = fis.read();
if (c == ´\n’)
// UNIX new line
return buf.toString();
buf.append((char)c);
} while (c != -1);
return null;
}
}
Wieso kann die Klasse nicht korrekt übersetzt werden? Beseitigen Sie das/die Problem/e.
Aufgabe 3 (3 Punkte)
Machen Sie sich mit der internen Darstellung von float- und double-Werten vertraut. Ein Tip: Lesen Sie
Kapitel 20 der Java Language Specification. Erklären Sie Ihrem Tutor die interne Darstellung für -1.0,
-Infinity, NaN, 0 und für die kleinste darstellbare Zahl.
-2-
Implementieren Sie ein Java-Programm, mit dem Sie die interne Darstellung testen können.
$ java CvtFloat
usage: CvtFloat float-number
CvtFloat [-] exponent mantisse
values are decimal or hexadecimal
Wird das Kommando mit einem Argument aufgerufen, so muß es eine float-Konstante sein, deren Mantisse
und Exponent ausgegeben werden.
$ java CvtFloat 100.
float 100.0
Bits:
0 10000101 10010000000000000000000
effektive Bits:
0 10000101 110010000000000000000000
sign=0(0x0) exp.=133(0x85) man.=4718592(0x480000)
eff. mant.=13107200(0xc80000)
Zwei Argumente repräsentieren Zahlenwerte für die Bits des Exponenten und der Mantisse. Ein optionales
``-´´ signalisiert eine negative Zahl. Jetzt muß der zusammengesetzte Gleitkommawert ausgegeben werden.
$ java CvtFloat 150 2
Bits:
0 10010110 00000000000000000000010
effektive Bits:
0 10010110 100000000000000000000010
float 8388610.0
$ java CvtFloat 0 0x400000
Bits:
0 00000000 10000000000000000000000
effektive Bits:
0 00000000 100000000000000000000000
float 5.877472E-39
$ java CvtFloat - 0 334
Bits:
1 00000000 00000000000000101001110
effektive Bits:
1 00000000 000000000000001010011100
float -4.68E-43
Beachten Sie mögliche Fehleingaben, die zu Exceptions führen könnten.
-3-
Aufgabe 4 (2 Punkte)
Was macht folgendes Programm (/home/java/Uebungen/Blatt3/Src/Test.java):
public class Test {
public static void main(String args[]) {
System.out.\u0070\u0072\u0069\u006e\u0074\u006c\u006e(
"\u005c\u0022Hello world!\u005c\u0022");
}
}
Warum erhält man in der Ausgabe andere Resultate, wenn man anstelle von \u005c\u0022 nun
\\u0022 nutzt?
Wo ist das Problem mit der Zeile
char c =’\u000a’;
Hilft ein Auskommentieren der Zeile mit //?
Aufgabe 5 (3 Punkte)
Wir wollen einige java.lang.String-Methoden kennenlernen. Implementieren Sie ein Programm, das ungefähr folgendermaßen benutzt werden kann:
$ java StringTest "axel" startsWith "ax"
true
$
oder allgemeiner
$ java <Empfaenger> <Methode> <Argument[e]...>
Verwirklichen Sie zumindest fünf Methoden der String-Klasse.
Wettbewerb: Versuchen Sie soviele Methoden wie möglich zu implementieren. Pro Methode mit einem
Argument gibt es einen Wertungspunkt, bei Methoden mit zwei Argumenten zwei Wertungspunkte, und so
weiter.
Die Gewinnerin bzw. der Gewinnner erhält ein Präsent!
Herunterladen