Här är andra omgången av övningsuppgifter. Kom ihåg att det är OK att diskutera övningsuppgifterna i forumet.
Kontrollera att Java finns installerat på din dator. Om inte, gå till Oracles sidor och installera. Skansholm ger fler tips på sidan 8.
Börja med att provköra nåt enkelt, tex programmet Hej.java
som
beskrivs i avsnitt 2.
Modifiera programmet! Gör en liten ändring och kontrollera att programmet fortfarande fungerar.
Skansholm har några lämpliga uppgifter i kapitel 1. Uppgifterna använder dialogrutor som jag inte har tagit upp, men Skansholm förklarar dem i kapitel 1.
Jag föreslår att du tittar på någon eller några av uppgifterna 2-5.
Försäkra dig om att du kan besvara frågorna nedan. Om du är osäker, skriv enkela testprogram och provkör.
Koden utgår från att det finns en klass K
definierad sen tidigare. Ge
en lämplig definition av klassen K
. (Det kan vara en bra idé att lägga
till en instansvariabel i klassen K
så du kan skilja på olika
objekt av samma klass.)
Vad händer om man tilldelar två variabler samma objekt?
K x = new K();
K y = x;
Vad händer om man passar ett objekt som parameter?
void m(K x) { ... }
K y = new K();
m(y);
Vad händer om en metod returnerar ett objekt?
K m() { K x = new K(); return x; }
Vad händer om en variabel som tilldelas redan har ett värde?
K x = new K(); K y = new K(); y = x;
Vad händer med det gamla objektet? Vad händer med det nya? Kombineras de två objekten på nåt sätt?
Jag skriver (om programspråk med dynamisk typning) "det kan gå bra att köra ett program trots att det innehåller typfel."
Ge exempel på när det kan vara en fördel att kunna köra ett program med typfel. När kan det vara en nackdel?
Avsnittet om kodningsstandarder avslutas med några frågor. Jag upprepar dem här:
Betrakta programmen nedan. (E3
och E4
använder klassen Object
som jag inte har tagit upp ännu.)
Vilka av programmen kan köras utan fel?
När fel uppstår, är det kompileringsfel eller uppstår felen först vid körning?
Förklara felen.
Javas felmeddelanden innehåller en hel del värdefull information. Studera gärna de felmeddelanden du får.
public class E1 { public static void main(String[] arg) { int x; int y; x = 3; y = 4; System.out.println(x*y); } }
public class E2 { public static void main(String[] arg) { int x; int y; x = 3; y = "4"; System.out.println(x*y); } }
public class E3 { public static void main(String[] arg) { Object x; int y; x = 3; y = 4; System.out.println((int)x*y); } }
public class E4 { public static void main(String[] arg) { Object x; int y; x = "three"; y = 4; System.out.println((int)x*y); } }
Ge ett program där den statiska typen för en variabel inte är densamma som typen av det värde den lagrar.