Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Relevanta dokument
Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

Programmering A. Johan Eliasson

Klassdeklaration. Metoddeklaration. Parameteröverföring

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Parameteröverföring. Exempel. Exempel. Metodkropp

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

SMD 134 Objektorienterad programmering

TDIU01 - Programmering i C++, grundkurs

Datastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada

Objektorienterad Programmering (TDDC77)

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Objektorienterad Programmering (TDDC77)

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Föreläsning 3: Booleans, if, switch

OOP Objekt-orienterad programmering

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val

Objektorienterad programmering Föreläsning 4

Föreläsning 11. Arrayer. Arrayer. Arrayer. Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt. Kan ha en array av t.

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Övning2. Variabler. Data typer

Java, klasser, objekt (Skansholm: Kapitel 2)

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Lite om reella tal. Programmering. I java. Om operatorers associativitet och prioritet

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Föreläsning 3-4 Innehåll

TDDC77 Objektorienterad Programmering

Undervisning. Examination

Föreläsning REPETITION & EXTENTA

1 Datorn som miniräknare. 1.1 Räkneoperationer. 1.2 Variabler

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Anteckningar 1: Grundläggande saker

Introduktion till Java

Föreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.

Undervisning. Examination

Föreläsning 7. Nyckelord I Java. Uttryck. Uttryck, Operatorer Och Kontrollflöden

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

Objektorienterad programmering i Java

Programmering för språkteknologer I, VT2012. Rum

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:

Typkonvertering. Java versus C

Arrayer (fält)

Heltalsrepresentation. Fler byggstenar. Overflow och Underflow. TvŒ-komplement. FlyttalsvŠrden. Fyra heltalstyper. Tecken-bit

Instuderingsfrågor, del D

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser

Innehållsförteckning

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Programmering i C++ EDA623 Mer om klasser. EDA623 (Föreläsning 6) HT / 26

Data, typ, selektion, iteration

Tentamen OOP

Föreläsning 2 sept 05 (Onsdag v 36). DD Chapter 2.

Programmering i C. Vad är C? Målsättning. Litteratur. Jämförelse med Java. Exempel : Ett program som skriver ut texten Hello, world

Lösningsförslag: Instuderingsfrågor, del A

Lösningsförslag: Instuderingsfrågor, del D

Enkla datatyper minne

Kapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12

F4. programmeringsteknik och Matlab

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Lite mer om Javas stöd för fält. Programmering. Exempel: vad är det största talet? hh.se/db2004. Fält samt Input/Output

Outline. For. I istället för att följa det normala ordningen, man ändra den. I i Java får man inte göra hopp hur som helst

JAVAUTVECKLING LEKTION 8

Programmeringsteknik I

[] Arrayer = Indexerad variabel

Föreläsning 2, vecka 8: Repetition

E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

System.out.println("Jaså du har "+ antalhusdjur+ " husdjur"); if ( antalhusdjur > 5 ) System.out.println("Oj det var många);

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

Föreläsningsmaterial (Syntax och variabler)

Visual Basic, en snabbgenomgång

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

Tentamen ID1004 Objektorienterad programmering May 29, 2012

OOP Objekt-orienterad programmering

TDDC77 Objektorienterad Programmering

JAVAUTVECKLING LEKTION 3

Den som bara har en hammare tror att alla problem är spikar

Föreläsning 8: Exempel och problemlösning

Beräkningsvetenskap föreläsning 2

OOP Objekt-orienterad programmering

Exempel på ett litet Ada-program

OOP F1:1. Föreläsning 1. Introduktion till kursen OOP Vad är Java? Ett första Java-program Variabler Tilldelning. Marie Olsson

C++ - En introduktion

Repetition C-programmering

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

Hur ser ett Java-program ut?

Transkript:

De åtta primitiva typerna Java, datatyper, kontrollstrukturer Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Typ Innehåll Defaultvärde Storlek boolean true, false false 1 bit char Tecken \u000 16 bit byte Heltal 0 8 bit short Heltal 0 16 bit int Heltal 0 32 bit long Heltal 0 64 bit float Flyttal 0.0 32 bit double Flyttal 0.0 64 bit Objectorienterad programmering Sida 1 Objectorienterad programmering Sida 3 Datatyper i Java: Tre slag Primitiva: Sanningsvärden, tecken, heltal, flyttal (8 stycken) Arrayer (nästan inte alls som i C) Objekt Typen boolean 1. representerar ett sanningsvärde 2. genereras av relationsoperatorer (tex ==, <) 3. if och while-satser kräver att alla sanningsvärden representeras som boolean Objectorienterad programmering Sida 2 Objectorienterad programmering Sida 4

Typen char Ett tecken i Unicode. Heltalstyper, exempel 16 bitar. char back = \b ; byte b = 42; short s = 4711; int i = 1000000000; //En miljard char tab = \t ; s = b; // OK; s = (short)i; // s == -13824 char A = A ; char A = \101 ; char A = \u0041 ; char A = (char)65; i = i + i; // OK; två miljarder i = i + i; // i == 294967296 Objectorienterad programmering Sida 5 Objectorienterad programmering Sida 7 Heltalstyper Typ Antal bitar Min Max byte 8 128 127 short 16 32768 32767 int 32 2 31 2 31 1 long 64 2 63 2 63 1 Heltalstyper, regler Ett värde av heltalstyp kan automatiskt omvandlas till ett heltal av en större representation. Ett heltal kan omvandlas till en mindre representation via en uttrycklig omvandling, Aritmetiska operatorer (tex +) returnerar alltid ett värde av type int eller long. b = b + 1 är ej korrekt om b är en byte. Objectorienterad programmering Sida 6 Objectorienterad programmering Sida 8

Logiska operatorer Flyttal (Skansholm: reella tal) Typ Strl Max Noggrannhet float 32 3,4 10 38 7 siffror double 64 1,7 10 308 15 siffror Logiska operatorer används tillsammans med jämförelseoperatorer för att skapa mer komplexa uttryck. Både operanderna och resultatat är av typen boolean. op1 && op2 op1 op2 och eller! op inte op1 & op2 op1 op2 op1 ^ op2 och eller xor, är op1 och op2 olika Med && evalueras op2 endast om op1 är sann. Objectorienterad programmering Sida 9 Objectorienterad programmering Sida 11 Jämförelseoperatorer Båda operanderna är en primitiv typ, resultatet är boolean op1 > op2 op1 >= op2 op1 < op2 op1 <= op2 op1 == op2 likhet op1!= op2 olikhet Blanda inte ihop == och =. Bitvisa operatorer All operander och resultat är heltal. op1 >> op2 op1 shiftas op2 bitar till höger op1 << op2 op1 shiftas op2 bitar till vänster op1 & op2 bitvis and op1 op2 bitvis or op1 ^ op2 bitvis xor ~op2 bitvis komplement (not) Objectorienterad programmering Sida 10 Objectorienterad programmering Sida 12

Arrayer (Skansholm: fält) Arrayer i Java: Inte som i C Att deklarera en array int[] a; eller int a[]; a = new int[100]; skapar en array med elementen a[0]... a[99] Att updatera element a[42] = 3; Att läsa ett element int x = a[42]; arrayer skapas explicit storlek anges dynamiskt index testas int[] a = new int [10]; a[-1] och a[10] ger felmeddelande! inititiering int[] a = {1, 2, 3; men även int[] a = {1, n+1, 2*n, n*n; Objectorienterad programmering Sida 13 Objectorienterad programmering Sida 15 Arrayer: Ett enkelt exempel int n =... int a[] = new int[n]; Inte som i C (forts) Tilldelning int[] a = new int [10]; int[] b = a; for (int i = 0; i < n; i++) { a[i] = i; int s = 0; for (int i = 0; i < n; i++) { s = s + a[i]; System.out.println("s = " + s); a och b refererar till samma array! Storlek på array ges av.length. int[] a = new int[10]; int x = a.length; a = new int[100]; int y = a.length; Objectorienterad programmering Sida 14 Objectorienterad programmering Sida 16

Deklarationer i Java Inte som i C (forts) null står för ingen array. int[] a = null; betyder samma sak som int[] a; En variabel deklareras med typ var; eller typ var = init; En deklaration behöver inte stå först. En deklarerad variabel får inte deklareras igen. init kan vara ett godtyckligt uttryck. Identifierare får innehålla å, ä, och ö! (Men ibland blir det strul när man flyttar program mellan olika OS, så undvik att använda svenska bokstäver i uppgifterna.) Objectorienterad programmering Sida 17 Objectorienterad programmering Sida 19 Exempel: Byt värde på två array-variabler static void main (String args[]) { int[] a = {1,2,3; int[] b = {99, 98, 97, 93, 92, 91; int[] temp; temp = a; a = b; b = temp; System.out.println("b[0] = " + b[0]); if (i>0) { x = x + 1; else { y = y + 1; while(s<10) s = s + 7; Kontrollstrukturer, exempel for (int i = 0; i<10; i++) { a[i] = 0; Objectorienterad programmering Sida 18 Objectorienterad programmering Sida 20

Lite om strängar I Java är strängar objekt av en speciell klass String ; inte en primitiv datatyp och inte heller en array. Tecknen i en sträng är av char -typ, dvs Unicode-tecken. Objekt av typ String är konstanta man kan inte ändra i en sträng. (Det finns en klass StringBuffer som tillåter ändringar.) Man kan skapa ett nytt sträng-objekt med syntaxen "En sträng". Strängar, jämförelse Notera att två strängar kan ha samma innehåll utan att vara identiska. Operatorn == testar om två referenser är till samma objekt. För att testa om två strängar har samma innehåll, skriv (tex) s1.equals(s2) Objectorienterad programmering Sida 21 Objectorienterad programmering Sida 23 Strängar (forts) Jämförelse av strängar, exempel Strängar slås ihop (konkateneras) med +. Om a och b är strängar så returnerar uttrycket a + b en ny sträng som är konkateneringen av a och b. Om det ena argumentet till + är ett String-objekt, så omvandlas det andra till en sträng. Exempel: int x = 42; System.out.println("Shoesize: " + x); Resultat: Shoesize: 42. String a = "java.1.4.2"; String b = new String("java.1.4.2"); //Tvinga kompilatorn att skapa ett nytt objekt! System.out.println("a==b : " + (a==b)); System.out.println("a.equals(b) : " + (a.equals(b))); ger utskriften a==b : false a.equals(b) : true Objectorienterad programmering Sida 22 Objectorienterad programmering Sida 24

Sammanfattning Java har tre slag av datatyper: primitiva (heltal, flyttal, char, boolean) arrayer klasser primitiva typer fungerar ungefär som i C/C++. arrayer är lite annorlunda; alla index testas, allokering sker explicit. Strängar är objekt i en fördefinierad klass. Objectorienterad programmering Sida 25