---
title: 'Fragen zur Java-Zertifizierung, Standardklassen'
url: 'https://tutego.de/blog/javainsel/2013/09/fragen-zur-java-zertifizierung-standardklassen'
markdown: 'https://tutego.de/blog/javainsel/2013/09/fragen-zur-java-zertifizierung-standardklassen.md'
date: '2013-09-28'
description: "Frage Was ist die Ausgabe des folgenden Programmstücks bei der Ausführung? int i = 3; int j = 0; float k = 3.2F; long m = -3; if ( Math.ceil(i) < Math.floor(k) ) if ( Math.abs(i) == m )\_\_\_\_ System.out.println( i ); else\_\_\_\_ System.out.println( j ); else\_\_ System.out.println( Math.abs(m) + 1 …"
taxonomy:
  category:
    - Allgemein
---

# Fragen zur Java-Zertifizierung, Standardklassen

![Illustration einer tropischen Insel mit Palmen und einem hohen Berg](https://tutego.de/blog/javainsel/user/themes/tutego/images/insel-cover.jpg)# Java Blog für Programmierer

[Java Blog für Programmierer](https://tutego.de/blog/javainsel/)

## Fragen zur Java-Zertifizierung, Standardklassen

28.09.2013 · [Christian Ullenboom](https://tutego.de/blog/javainsel/author/admin/)

### Frage

Was ist die Ausgabe des folgenden Programmstücks bei der Ausführung?

```java
int i = 3;
int j = 0;
float k = 3.2F;
long m = -3;
if ( Math.ceil(i) < Math.floor(k) )
  if ( Math.abs(i) == m )     System.out.println( i );
  else     System.out.println( j );
else   System.out.println( Math.abs(m) + 1 );
```

1. -3
2. 0
3. 3
4. 4
5. keine dieser

Die Ausgabe ist 4.

### Frage

Welche der folgenden sind gültige Objektmethoden der Klasse `String`?

1. `equals( String )`
2. `equals( Object )`
3. `trim()`
4. `round()`
5. `toString()`

`equls(Object)` und `toString()` sind zwei Objekte, die von `Object` kommen. Also sind B und E richtig. Eine `equals()` Funktion mit der Parameter `String` gibt es nicht und muss es auch nicht geben. Also ist A falsch. Denn da `equals(Object)` für alle Objekt gilt, gilt im besonderen auch `equals(String)`. Da die `String` Klasse `equals()` überschreibt, wird schon darauf geachtet, dass keine beliebigen Objekte verglichen werden. `trim()` schneidet Leerzeichen vor und hinter der Zeichenkette ab, auch C ist richtig. Eine Rundungsfunktion ist bei `String` Objekten nicht nötig und möglich. `round()` ist eine Funktion der Klasse Math. Also ist D falsch.

### Frage

Welche Anweisung ergibt den Wert -4.0?

1. Math.floor( -4.7 )
2. Math.round( -4.7 )
3. Math.ceil( -4.7 )
4. Math.min( -4.7 )

Antwort A und B erzeugen die Ausgabe -5 sind also falsch. Antwort C erzeugt die entsprechende Ausgabe. Lösung D kann nich kompiliert werden,da die `min()` Funktion zwei Parameter erwartet.

### Frage

Was schreibt das Programm auf den Schirm?

```java
String s = "Ulli"; 
int begin = 1;
char end = 3;
System.out.println( s.substring(begin, end) );
```

1. Ull
2. ll
3. lli
4. error: no method matching `substring(int,char)`

B) ll

### Frage

Welche Operationen sind bei den gegeben Deklarationen erlaubt?

```java
String s1 = new String("Hello")

String s2 = new String("there");

String s3 = new String();

1. s3 = s1 + s2;
2. s3 = s1-s2;
```

3. s3 = s1 & s2
4. s3 = s1 && s2

```java
A s3 = s1 + s2;
```

### Frage

Gegeben ist das folgende Programm:

```java
import java.util.Date;

public class Datum {
  public static void main( String args[] ) {
    Date d1 = new Date( 99, 11, 31 );
    Date d2 = new Date( 99, 11, 31 );
    foo( d1, d2 );
    System.out.println( "d1 ist " + d1 + "\nd2 is " + d2 );
  }
  public static void foo( Date d1, Date d2 ) {
   d2.setYear( 100 );
   d1 = d2;
  }
}
```

Welche Aussage trifft auf das Programm zu?

1. Das Programm kompiliert und die Ausgabe ist

    d1 ist Fri December 31 00:00:00 GMT 1999 d2 ist Fri December 31 00:00:00 GMT 1999
2. Das Programm kompiliert und die Ausgabe ist d1 ist Fri December 31 00:00:00 GMT 1999 d2 ist Sun December 31 00:00:00 GMT 2000
3. Das Programm kompiliert und die Ausgabe ist d1 ist Sun December 31 00:00:00 GMT 2000 d2 ist Sun December 31 00:00:00 GMT 2000
4. Die Anweisung ‚d1 = d2‘ wird vom Compiler zurückgewiesen, da `Date` den Gleich-Operator nicht überladen hat.
5. Der Ausdruck (d1 is " + d1 + "\\nd2 is " + d2) wird vom Compiler zurückgewiesen, da die `Date` Klasse den Plus-Operator nicht überladen kann.

Das Programm lässt sich korrekt kompilieren, da keine Zeile fehlerhaft ist. Daher sind Antwort D und E falsch. Mit dem Gleichheitszeichen werden lediglich die Referenzen unterschieden und das ist immer erlaubt. Auch der Plusoperator bereitet keine Probleme, da in im Zusammenbauen eines Ausgabestrings auf die `Date`-Objekte immer `toString()` aufgerufen wird. Fast alle Objekte nutzen diese Methode zur Identifikation ihrer inneren Werte. Nun bleiben zwei Dinge interessant. Zunächst einmal der Konstruktor mit den Werten und die Methode `foo()`. Der Konstruktor ist in Ordnung und in der Ausgabe sind Stunde, Minute und Sekunde auf Null, da sie von uns nicht gesetzt wurde. Werfen wir einen Blick auf `foo()`. Es ändert im ersten Objekt das Jahr auf 100. Aber da die Zuweisung nur lokal wirkt, ändert sich d2 nicht und es ist ein klassischer Programmierfehler. Lokale Variablen haben keine Außenwirkung. Nur im Block der Methode ist nun d1 mit d2 identisch, da d2 auf d1 zeigt. So sind auch die Jahreszahlen gleich. Aber nach dem Verlassen der Methode verschwindet auch die Zuweisung, nur die Änderung in d2 bleibt gültig. d1 behält das Jahr 99. Also ist C falsch. Es bleiben noch A und B als Lösungen. Nun muss man wissen, dass `setYear(100)` das Jahr tatsächlich auf 2000 setzt. Somit ergibt sich als richtige Lösung nur B, da d1 und d2 die Jahre 1999 und 2000 beschreiben.

Kategorien: [Allgemein](https://tutego.de/blog/javainsel/category/allgemein/)

[← Alle Beiträge](https://tutego.de/blog/javainsel/)

---

## Navigation

- Previous: [Fragen zur Java-Zertifizierung, Threads](https://tutego.de/blog/javainsel/2013/09/fragen-zur-java-zertifizierung-threads.md)
- Next: [Der Report-Generator JasperReport](https://tutego.de/blog/javainsel/2013/09/der-report-generator-jasperreport.md)
