{"id":2398,"date":"2013-09-28T13:00:51","date_gmt":"2013-09-28T11:00:51","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=2398"},"modified":"2013-09-28T13:00:51","modified_gmt":"2013-09-28T11:00:51","slug":"fragen-zur-java-zertifizierung-flusskontrolle-und-ausnahmebehandlung","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2013\/09\/fragen-zur-java-zertifizierung-flusskontrolle-und-ausnahmebehandlung\/","title":{"rendered":"Fragen zur Java-Zertifizierung, Flusskontrolle und Ausnahmebehandlung"},"content":{"rendered":"<h3>Frage<\/h3>\n<p>Was wird ausgegeben, wenn die folgende Methode aufgerufen wird?<\/p>\n<pre>void test() {\none:\ntwo:\n  for ( int i = 0; i &lt; 3; i++ ) {&#160;&#160; three:\n    for ( int j = 10; j &lt; 30; j++ ) {&#160;&#160;&#160;&#160;&#160; System.out.println( i + j );\n      if ( i &gt; 2 )\n      continue one;\n    }\n  }\n}<\/pre>\n<ol>\n<li>10 und 20 <\/li>\n<li>11 und 21 <\/li>\n<li>12 und 22 <\/li>\n<li>13 und 23 <\/li>\n<li>30, 31, 32, 33<\/li>\n<\/ol>\n<h3>Frage<\/h3>\n<p>Analysiere den folgenden Programmtext:<\/p>\n<pre>1: void schleife() {\n2:   int x = 0;\n3: one:\n4:   while ( x &lt; 100 ) {\n5:&#160;&#160; two:\n6:&#160;&#160;&#160;&#160; System.out.println( ++x );\n7:     if ( x &gt; 3 )\n8:     break two;\n9:   }\n0: }<\/pre>\n<ol>\n<li>Der Code l\u00e4sst sich nicht kompilieren. <\/li>\n<li>Die Funktion schreibt die Zahl 0 in die Standardausgabe. <\/li>\n<li>Die Funktion schreibt die Zahl 1 und 2 in die Standardausgabe. <\/li>\n<li>Die Funktion schreibt die Zahl 3 in die Standardausgabe. <\/li>\n<li>Die Funktion schreibt die Zahl 4 in die Standardausgabe. <\/li>\n<li>Die Funktion schreibt die Zahlen 5 bis 9 in die Standardausgabe. <\/li>\n<li>Die Funktion schreibt die Zahl 10 in die Standardausgabe.<\/li>\n<\/ol>\n<p>Der Programmcode kann nicht kompiliert werden, da Zeile 8 eine ung\u00fcltige Sprungadresse enth\u00e4lt. Daher ist Antwort A korrekt. Die break Anweisung dient immer dazu, aus einer Schleife zu entkommen und nicht aus einer if Anweisung. W\u00fcrde der Sprung nach two: gelingen, w\u00e4re man aber immer noch in der Schleife. Eine g\u00fcltige Anweisung f\u00fcr Zeile 8 ist break one;<\/p>\n<h3>Frage<\/h3>\n<p>Betrachte den folgenden switch Block. (Zwei Antworten.)<\/p>\n<pre>char mychar = 'c';\nswitch ( mychar )\n{&#160;&#160; default:\n  case 'a': System.out.println( &quot;a&quot; ); break;\n  case 'b': System.out.println( &quot;b&quot; ); break;\n}<\/pre>\n<p>Welche der folgenden Antworten ist richtig?<\/p>\n<ol>\n<li>Der switch Block ist illegal, weil nur Ganzzahlen in der switch Anweisung benutzt werden k\u00f6nnen. <\/li>\n<li>Mit der switch Anweisung ist alles in Ordnung. <\/li>\n<li>Der switch Block ist illegal, da die default Anweisung zum Schluss kommen muss. <\/li>\n<li>Wenn das Programmst\u00fcck l\u00e4uft, wird nichts auf die Standardausgabe geschrieben. <\/li>\n<li>Wenn das Programmst\u00fcck ausgef\u00fchrt wird, erscheint der Buchstabe &quot;a&quot; auf dem Bildschirm.<\/li>\n<\/ol>\n<p>Der Ausdruck in einer switch Anweisung muss sich auf ein 32-Bit Wert konvertieren lassen. Also sind auch die kleineren Datentypen byte, char, short und int erlaubt. Im Beispiel ist ein Buchstabe ein char, der auf ein int konvertiert wird. Dies ist korrekt, also ist Antwort A falsch. Da die Kompilation somit in Ordnung ist, ist Antwort B korrekt. Die Reihenfolge, wann default auftaucht ist egal, somit ist C falsch. Daher folgt auch erst die richtige Ausgabe. Denn der Buchstaben &#8218;c&#8216; passt nicht auf &#8218;a&#8216; und &#8218;b&#8216;, somit k\u00fcmmerst sich der default Teil um die Eingabe. Da hinter default jedoch kein break steht l\u00e4uft der Programmcode direkt in die Ausgabe &quot;a&quot; hinein. Also ist ebenfalls E korrekt und D falsch.<\/p>\n<h3>Frage<\/h3>\n<p>Welche der folgenden Aussagen \u00fcber try, catch und finally sind wahr? <\/p>\n<ol>\n<li>Einem try Block muss immer ein catch Block folgen. <\/li>\n<li>Einem try Block kann entweder ein catch Block, ein finally Block oder beides folgen. <\/li>\n<li>Ein catch Block muss immer mit einem try Block verbunden sein. <\/li>\n<li>Ein finally kann nicht ohne ein try Block auftauchen. <\/li>\n<li>Keine dieser Aussagen sind wahr.<\/li>\n<\/ol>\n<p>Einem try Block muss entweder ein finally ein catch oder beides folgen. Also ist A falsch und B richtig. Wenn man ein catch oder ein finally schreibt, so ist dies immer mit einem try verbunden, daher ist auch C und D richtig. Da mindestes eine Antwort richtig ist, ist E falsch.<\/p>\n<h3>Frage<\/h3>\n<pre>1: public class Clazz {\n2:   public static void main( String args[] ) {\n3:     String s = null;\n4:     if ( s != null &amp; s.length() &gt; 0 );\n5:     if ( s != null &amp;&amp; s.length() &gt; 0 );\n6:     if ( s == null | s.length() &gt; 0 );\n7:     if ( s == null || s.length() &gt; 0 );\n8:   }\n9: }<\/pre>\n<p>Welche der Aussagen ist wahr?<\/p>\n<ol>\n<li>Zeile 4 erzeugt eine NullPointerException <\/li>\n<li>Zeile 5 erzeugt eine NullPointerException <\/li>\n<li>Zeile 6 erzeugt eine NullPointerException <\/li>\n<li>Zeile 7 erzeugt eine NullPointerException<\/li>\n<\/ol>\n<p>Antwort A und C sind korrekt und Zeile 4 und 6 erzeugen eine NullPointerException. Man muss wissen, dass &amp; und | beide Seiten auswerten. Ist also die Referenz null, so ist auch s.length() ung\u00fcltig. In Zeile 4 und 6 kommen aber diese Auswertungen vor. &amp;&amp; wertet den rechten Ausdruck nur dann aus, wenn der linke wahr ist. Also wird in Zeile 5 keine L\u00e4nge abgefragt. || wertet nur dann die rechte Seite aus, wenn die linke Seite falsch ist. s == null ist aber wahr und die L\u00e4nge muss nicht ausgewertet werden.<\/p>\n<h3>Frage<\/h3>\n<p>Welche Methoden kann man f\u00fcr das Kommentar \/\/XX einsetzen?<\/p>\n<pre>class Base{\n  public void method( int i ) { }\n}\npublic class Extension extends Base {\n  public static void main( String args[] ) { }\n  \/\/XX\n}<\/pre>\n<ol>\n<li>void method( int i ) throws Exception {} <\/li>\n<li>void method( long i ) throws Exception {} <\/li>\n<li>void method( long i ) {} <\/li>\n<li>public void method( int i ) throws Exception {}<\/li>\n<\/ol>\n<p>Eine Methode kann in einer Unterklasse \u00fcberschieben oder \u00fcberladen werden. \u00dcberladene Funktionen haben den selben Namen wie eine andere Funktion in der Klasse oder der Basisklasse, jedoch verschiedene Parameter. Da in Antwort B und C die Methode mit einem long definiert ist, hat sie mit der in der Klasse Base definierten Methode au\u00dfer den Namen nichts gemeinsam. So \u00fcberl\u00e4dt B und C method(int) aus Base und f\u00fcgt sie der Klasse Extension zu. B und C sind korrekte Antworten und f\u00fchren zu keinen \u00dcbersetzungsfehler. Anders dagegen A und D. Beide f\u00fchren zu Compilerfehlern, da sie versuchen die Methode aus der Basisklasse zu \u00fcberschreiben und eine Exception hinzuzuf\u00fcgen. Auch die Methode in Base m\u00fcsste die Ausnahme schmei\u00dfen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Frage Was wird ausgegeben, wenn die folgende Methode aufgerufen wird? void test() { one: two: for ( int i = 0; i &lt; 3; i++ ) {&#160;&#160; three: for ( int j = 10; j &lt; 30; j++ ) {&#160;&#160;&#160;&#160;&#160; System.out.println( i + j ); if ( i &gt; 2 ) continue one; } } [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[1],"tags":[],"class_list":["post-2398","post","type-post","status-publish","format-standard","hentry","category-allgemein"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/2398","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=2398"}],"version-history":[{"count":1,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/2398\/revisions"}],"predecessor-version":[{"id":2399,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/2398\/revisions\/2399"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=2398"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=2398"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=2398"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}