• Utvecklat på SUN Microsystems mitten 1990
Short Description
Download • Utvecklat på SUN Microsystems mitten 1990...
Description
Java • • • •
Utvecklat på SUN Microsystems mitten 1990-talet Ursprungligen för Webprogram. Nu mycket spritt. Massor med läroböcker.Vi använder Lewis&Loftus http://java.sun.com/javase/6/docs/api/
Monday, November 2, 2009
Skillnader mellan Python och Java Viktigast: Java har statisk typning. Alla variabler, metoder etc ska deklareras och ges en fix typ. Typen får inte ändras under programmets gång.
Python
Java
-
int a;
def siffersum(n)
int siffersum(int n)
Monday, November 2, 2009
En typ kan vara: inbyggd typ
int boolean float char
namn på en klass
String
array av ovanstående
Monday, November 2, 2009
Ball
int[]
String[]
fallgropar true och false med små bokstäver char har enstaka tecken omslutn av ’ String har textsträngar omslutna av ” Javas arrayer påminner om Matlabs, och är mycket olika Pythons listor. Pythons listor och dictionaries saknas helt i Java
Monday, November 2, 2009
Allt har en typ. Typ ska anges: Varje gång en variabel introduceras För varje attribut till en klass För varje metod: resultattyp och parametrars typer
Monday, November 2, 2009
variabel/attribut: Deklareras genom att skriva typens namn följt av variabelns namn int a; Ball b;
Obs! semikolon avslutar alla satser, liksom i Matlab
Får i samband med deklarationen int a = 1; float b = 2.53; ges ett initialvärde
Monday, November 2, 2009
Arraydeklarationer int[] a; a = new int[5];
a ska vara av typ array of int, ännu inte bestämt hur lång a blir ett arrayobjekt som tar 5 stycken int, a[0]...a[4] (inledningsvis är elementen odefinierade) kombinerar ovanstående
int[] a = new int[5]; int [] a = {5,18,22,0,3}; int [] [] c;
Monday, November 2, 2009
Deklarerar, skapar och initierar i ett drag!
c är en tvådimensionell array. Elementet på plats i,j noteras c[i][j]
Metoddeklaration Resultattypen skrivs före metodnamnet. För varje formell parameter skrivs dess typ före parameterns namn. Inget self ! Python: def checkpos(self,ball,pos) boolean checkpos(Ball ball, Position pos) En metod som inte returnerar något får void istället för en typ: void runsimulation() Monday, November 2, 2009
Allt i Java är klasser med sina metoder. Det finns inget huvudprogram. Det finns inga ”funktioner” - alla sådana måste vara metoder till någon klass Python
Java
def move(self, pos): void move(Position pos) { } ... ... Typdeklarera resultat och parametrar Inget kolon metodkroppen inom krullparanteser { } Monday, November 2, 2009
Blockstruktur Python
Java
Kommandon avslutas med ny rad
Kommandon avslutas med semikolon, ”;”
Block av kommandon anges genom indragning
Block av kommandon anges genom att innesluta dem i krullparanteser, ”{ ... }”
Viktiga inledningar av block följs av kolon
Java använder inte kolon alls
Monday, November 2, 2009
Python if a>b: c = 0 a += 1 b = a
Monday, November 2, 2009
Java if (a>b) { c = 0; a += 1; } b = a;
Indragningar och radbrott är betydelselösa if (a>b) { c = 0; a += 1; } b = a;
if (a>b) {c =0; a += 1;} b = a;
if (a>b) { c = 0; a += 1; } b = a;
Alla dessa är samma!
if (a>b) {c=0;a += 1;}b = a;
Fortsätt att använda indragningar och radbrott för att öka läsbarheten! Monday, November 2, 2009
Statiskt scope För varje deklaration är det väldefinierat för vilket område av koden den gäller Ex: Deklaration av en variabel har räckvidden resten av det kodblocket, alltså det som avgränsas av { } . if (a>b) { int a; Här inne kan a användas . . } Här ute kan a inte användas . . Monday, November 2, 2009
Tilldelning Python
Java
a = 0 b = c/(d+1) c += 2
a = 0; b = c/(d+1); c += 2;
I Java finns dessutom a++; kortform för a+=1; Monday, November 2, 2009
if Python
Java
if a>b: d = 2 elif ab) d = 2; else if (ab: d = 2+a a -= 1
while (a>b) { d = 2+a; a--; }
Paranteser runt villkor obligatoriska Inga kolon Glöm inte krullparanteser om loopen består av flera kommandon, och semikolon efter kommandon Monday, November 2, 2009
do Python
Java
Finns inte
do { d = 2+a; a--; } while (a
View more...
Comments