Innehåll: Arrays Arraylists For loops For-each loops

Slides:



Advertisements
Liknande presentationer
Föreläsning 9 Programmeringsteknik och Matlab 2D1312/2D1305
Advertisements

Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
Algoritmer och data strukturer -Länkade listor
Metoder i java Det finns två typer av metoder i java
Välkommen Vahid Mosavat
Programmeringsteknik för K och Media
Programmeringsteknik för K och Media
Föreläsning 13 Allt om tentan. Sistaminutenhjälp: På fredag 17 december kl 12 sitter Linda i kemi-fiket och svarar på frågor.
Programkodens uppbyggnad
Föreläsning 2 Datalogi för E1 2D1343
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
Strömmar Vid läsning och skrivning används något som kallas strömmar.
Next previous Introduktion till Java Av Björn Eiderbäck Adress: Rum 1641, 6tr NADA Osquars Backe 2 Tel: OOMPAE 2000.
1 Föreläsning 6 Klass Object, instans av klass public/private Klassvariabler och klassmetoder.
Alice in Action with Java
Föreläsning 4, Kapitel 4 Gruppera objekt Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
Föreläsning 11 Arrayer.
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Programmering i C# 3. Klasser.
PROCESSPROGRAMMERING
Programmering B PHP Lektion 2
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Vektorer (klassen Vector) Sortering
Objektorienterad Modellering Programmering och Analys
Programmeringsteknik för Media1 & K1
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
Föreläsning 8 Arv och abstrakta klasser. Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen ( extends.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Föreläsning 10 Stränghantering.
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 5 Arrayer & ArrayList Hur man använder API:n
Föreläsning 12 Om slutprovet. Repetition –deklaration av variabler –skapande av objekt (instansiering) –Vektorer och Vector-klassen –Klasser –Instans-/klassvariabler.
OOP F14:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 14 Repetition Tips inför inlämningsuppgift 2.
Föreläsning 4 Klasser Och Objekt.
1. Ett problem/uppgift.
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
INTRODUKTION TILL PROGRAMMERING
Class VattenKraft{ public static void main(String[] args){ int num=150; int i, totflöde, maxflöde; int[] fall = new int[num]; //vattenflödet i vattenfallen.
OOP F13:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 13 Repetition variabler, selektion och iteration.
TILLÄMPAD DATALOGI (TILDA) Övningsgrupp 2 Marcus Hjelm
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
Övning 3. Repetition Metoder class RepetitionMetoder { public static void main(String [] args) double längd = 2.0; double bredd = 1.0; double area =
Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt.
Programmeringsteknik för K och Media
Föreläsning 5 Klasser och instanser
Föreläsning 7 programmeringsteknik och Matlab 2D1312/2D1305 Metoddeklaration och parametrar Arrayer och ArrayList.
Föreläsning 7 Repetition Sammansatta datatyper –vektor (hakvektor, array) –matris.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning4 Repetition slingor Metoder. while-sats består av följande delar: 1. while 2. Villkor-sats (condition) 3. uttryck (statement) while-sats int.
Föreläsning 7 Metoder Parametrar Klassmetod.
OOP&M - teori1 OOP – Föreläsning 7 (Sista oop I) Konstruktioner för att hantera upprepningar Kapitel 11.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
Malmö högskola Rolf Axelsson 2003/2004 DA7231, 4 poäng Referensvariabel Klass och konstruktorer Klass med set- och get-metoder Klass och fält Fler metoder.
OOP&M - teori1 OOPM del II– Föreläsning vecka Mer om ärvning.. Abstrakta klasser/metoder Gränssnitt/Interface klasser.
Namn på tillfället (kan skrivas på flera rader) Namn på den som presenterar Datum xx.xx.2016.
1 Mer om metoder, variabler, klasser och objekt. Kursboken: - Kapitel 6 - Kapitel 8.
Gruppövning Applikationsprogramering Klassuppdelning Loose Coupling Model View Controller Inversion of Control Layout med Swing JSplitPane Mouse-over Events.
Föreläsning 2 Programmeringsteknik DD1310
Föreläsning 3: Booleans, if, switch
Föreläsning 6: Metoder och fält (arrays)
Föreläsning 4: for, while, do-while
Föreläsning 8: Exempel och problemlösning
Föreläsning 2: Typer, klasser, tilldelning
Föreläsning 9: Arv och UML
Föreläsning 5: Att använda klasser & objekt
Kan du begreppen? Para ihop rätt begrepp med rätt beskrivning. Algoritm Precis Program Är ett annat ord för exakt, tydlig eller noggrant. Är klara och.
Presentationens avskrift:

Programmeringsstuga 2 2016-10-26

Innehåll: Arrays Arraylists For loops For-each loops Koppling mellan arrays & arraylists med for- & foreach-loop Klasser Åtkomst Konstruktorer Attribut Metoder Parametrar Returnvärde

Arrays Syntax: Bra: Typ[] variabelNamn = new Typ[int storlek]; Mindre bra: Typ variabelNamn[] = new Typ[int storlek]; Innebär samma sak, men första exemplet ger bättre läsbarhet samt branschstandard Exempel: String[] bracketsEfterTyp = new String[5]; String bracketsEfterNamn[] = new String[5]; Typade: String[] lista = new String[2]; lista[0] = “Test”; // OK lista[1] = true; // Fel Icke typade: Object[] lista = new Object[2]; lista[1] = true; // OK visa typade listor vs icke typade

Arrays Fördelar: Har index Bra ifall det handlar om ett bestämt antal element Nackdelar: Måste veta antalet element i förhand kan inte ändra storlek efter arrayen är initialiserad och ha kvar de värden som finns Visa exempel på String[5] = massa värden, sedan ändra till String[6], vilket tar bort all data som finns

Arrays - Integer public class ArrayDemo { public static void main(String[] args) { int[] array = new int[5]; array[0] = 141; array[1] = 551; array[2] = 61; array[3] = Integer.MIN_VALUE; array[4] = Integer.MAX_VALUE; // Kan också deklareras från början: String[] array2 = new String { 141, 551, 61, Integer.MIN_VALUE, Integer.MAX_VALUE }; System.out.println(array2[0]); // prints “141” } }

Arrays -boolean public class ArrayDemo { public static void main(String[] args) { boolean[] charArray = new boolean[3]; charArray[0] = true; charArray[1] = false; charArray[2] = (charArray[1] == true); //false }

Arrays -character public class ArrayDemo { public static void main(String[] args) { char[] charArray = new char[3]; charArray[0] = ‘a’; charArray[1] = ‘B’; charArray[2] = ‘!’; }

Arrays - Andra public class ArrayDemo { public static void main(String[] args) { double[] multiDimensional; float[] floatArray; long[] longArray; }

Arrays - Jämförelse med parkering public class ArrayDemo { public static void main(String[] args) { }

Arrays - Jämförelse med parkering public class ArrayDemo { public static void main(String[] args) { Bil[] bilarPåParkering = new Bil[10]; }

Arrays - Jämförelse med parkering public class ArrayDemo { public static void main(String[] args) { Bil[] bilarPåParkering = new Bil[10]; bilarPåParkering[0] = new Bil(“blå”); }

Arrays - Jämförelse med parkering public class ArrayDemo { public static void main(String[] args) { Bil[] bilarPåParkering = new Bil[10]; bilarPåParkering[0] = new Bil(“blå”); bilarPåParkering[1] = new Bil(“gul”); }

Arrays - Jämförelse med parkering public class ArrayDemo { public static void main(String[] args) { Bil[] bilarPåParkering = new Bil[10]; bilarPåParkering[0] = new Bil(“blå”); bilarPåParkering[1] = new Bil(“gul”); bilarPåParkering[2] = new Bil(“röd”); }

Arrays - Jämförelse med parkering public class ArrayDemo { public static void main(String[] args) { Bil[] bilarPåParkering = new Bil[10]; bilarPåParkering[0] = new Bil(“blå”); bilarPåParkering[1] = new Bil(“gul”); bilarPåParkering[2] = new Bil(“röd”); bilarPåParkering[4] = new Bil(“gul”); }

Arrays - Jämförelse med parkering public class ArrayDemo { public static void main(String[] args) { Bil[] bilarPåParkering = new Bil[10]; bilarPåParkering[0] = new Bil(“blå”); bilarPåParkering[1] = new Bil(“gul”); bilarPåParkering[2] = new Bil(“röd”); bilarPåParkering[4] = new Bil(“gul”); bilarPåParkering[5] = new Bil(“orange”); }

Arrays - Jämförelse med parkering public class ArrayDemo { public static void main(String[] args) { Bil[] bilarPåParkering = new Bil[10]; bilarPåParkering[0] = new Bil(“blå”); bilarPåParkering[1] = new Bil(“gul”); bilarPåParkering[2] = new Bil(“röd”); bilarPåParkering[4] = new Bil(“gul”); bilarPåParkering[5] = new Bil(“orange”); bilarPåParkering[7] = new Bil(“blå”); }

Arrays - Jämförelse med parkering public class ArrayDemo { public static void main(String[] args) { Bil[] bilarPåParkering = new Bil[10]; bilarPåParkering[0] = new Bil(“blå”); bilarPåParkering[1] = new Bil(“gul”); bilarPåParkering[2] = new Bil(“röd”); bilarPåParkering[4] = new Bil(“gul”); bilarPåParkering[5] = new Bil(“orange”); bilarPåParkering[7] = new Bil(“blå”); bilarPåParkering[8] = new Bil(“grön”); }

Arrays - Jämförelse med parkering public class ArrayDemo { public static void main(String[] args) { Bil[] bilarPåParkering = new Bil[10]; bilarPåParkering[0] = new Bil(“blå”); bilarPåParkering[1] = new Bil(“gul”); bilarPåParkering[2] = new Bil(“röd”); bilarPåParkering[4] = new Bil(“gul”); bilarPåParkering[5] = new Bil(“orange”); bilarPåParkering[7] = new Bil(“blå”); bilarPåParkering[8] = new Bil(“grön”); bilarPåParkering[9] = new Bil(“röd”); }

Arrays - Jämförelse med parkering public class ArrayDemo { public static void main(String[] args) { Bil[] bilarPåParkering = new Bil[10]; bilarPåParkering[0] = new Bil(“blå”); bilarPåParkering[1] = new Bil(“gul”); bilarPåParkering[2] = new Bil(“röd”); bilarPåParkering[4] = new Bil(“gul”); bilarPåParkering[5] = new Bil(“orange”); bilarPåParkering[7] = new Bil(“blå”); bilarPåParkering[8] = new Bil(“grön”); bilarPåParkering[9] = new Bil(“röd”); System.out.println(bilarPåParkering[3]); }

Arrays - Jämförelse med parkering public class ArrayDemo { public static void main(String[] args) { Bil[] bilarPåParkering = new Bil[10]; bilarPåParkering[0] = new Bil(“blå”); bilarPåParkering[1] = new Bil(“gul”); bilarPåParkering[2] = new Bil(“röd”); bilarPåParkering[4] = new Bil(“gul”); bilarPåParkering[5] = new Bil(“orange”); bilarPåParkering[7] = new Bil(“blå”); bilarPåParkering[8] = new Bil(“grön”); bilarPåParkering[9] = new Bil(“röd”); System.out.println(bilarPåParkering[3]); bilarPåParkering[3].toString(); } google stacktrace

Arrays - Multidimensional arrays public class ArrayDemo { public static void main(String[] args) { String[][] multiDimensional = new String[2][3]; // tänk [rader][kolumner] multiDimensional[0][0] = “rad 0, kolumn 0”; multiDimensional[0][1] = “rad 0, kolumn 1”; multiDimensional[0][2] = “rad 0, kolumn 2”; multiDimensional[1][0] = “rad 1, kolumn 0”; multiDimensional[1][1] = “rad 1, kolumn 1”; multiDimensional[1][2] = “rad 1, kolumn 2”; } multiDimensional[0] “rad 0, kolumn 0” “rad 0, kolumn 1” “rad 0, kolumn 2” “rad 1, kolumn 0” “rad 1, kolumn 1” “rad 1, kolumn 2” multiDimensional[1]

ArrayList Syntax: ArrayList<Typ> variabelNamn = new ArrayList<Typ>(); Exempel: ArrayList<String> listOfStrings = new ArrayList<String>(); För typade listor: ArrayList<Typ1> lista = new ArrayList<Typ1>(); lista.add(Typ1); // OK lista.add(Typ2); // Fel För icke typade listor: ArrayList lista = new ArrayList(); lista.add(Typ2); // OK visa typade listor vs icke typade

ArrayList Fördelar: Bra ifall det handlar om ett icke bestämt antal element Listan ökar i storlek automatiskt Uppbackad av Collection = Har många användbara metoder Nackdelar: Saknar förmågan att lägga in element på bestämda index Listan har index, men inte några som vi kan påverka

ArrayList - Metoder ArrayList<String> list = new ArrayList<String>(); Add list.add(“an entry”); Remove list.remove(“an entry”); ELLER String s = “an entry”; list.remove(s);

ArrayList - Metoder från Collection ArrayList<String> list = new ArrayList<String>(); // T.ex.: Collections.sort(list); Collections.frequency(list, “a”); //returnerar hur många gånger “a” finns i list Collections.max(list); //returnerar största värdet i listan (måste vara en lista med numeriska värden) ...och många fler

ArrayList - String import java.util.ArrayList; public class ArraylistDemo { public static void main(String[] args) { ArrayList<String> lista = new ArrayList<String>(); lista.add(“string one”); lista.add(“string two”); lista.add(“string three”); String externalString = “string four”; lista.add(externalString); lista.add(1); // fel, kan endast hålla strings lista.add(“1”); // OK lista.add(1 + “”); // OK } “sträng” och String s = “sträng” är samma sak

ArrayList - Andra import java.util.ArrayList; public class ArraylistDemo { public static void main(String[] args) { ArrayList<Integer> lista = new ArrayList<Integer>(); ArrayList<Double> lista = new ArrayList<Double>(); ArrayList<Float> lista = new ArrayList<Float>(); ArrayList<Character> lista = new ArrayList<Character>(); ArrayList<ArrayList<String>> lista = new ArrayList<ArrayList<String>>(); ArrayList<Object> lista = new ArrayList<Object>(); // kan hålla allt ArrayList lista1 = new ArrayList(); // kan också hålla allt // T.ex.: lista.add(new ArrayList<String>()); lista2.add(new ArrayList<String>()); lista.add(1); lista2.add(1); }

For- och foreach-loopar For-loop: for (nummer; villkor; utförande_vid_varje_iteration) { // Kod som exekveras varje iteration } Exempel: for (int i = 0; i < 11; i++) { System.out.println(i); } Foreach-loop: for (Typ variabelNamn : lista) { // Kod som exekveras varje iteration } Exempel: for (String namn : listaMedNamn) { System.out.println(namn); } For/Foreach går under samma namn “forloopa genom den listan”

For-loop Är detsamma som: int i = 0; int ANTAL_GÅNGER = 3; if (i < ANTAL_GÅNGER) { // Är 0 < 3? true System.out.println(i); i++; } if (i < ANTAL_GÅNGER) { // Är 1 < 3? true System.out.println(i); if (i < ANTAL_GÅNGER) { // Är 2 < 3? true System.out.println(i); if (i < ANTAL_GÅNGER) { // Är 3 < 3? false Skriv ut något X antal gånger: int ANTAL_GÅNGER = 3; for (int i = 0; i < ANTAL_GÅNGER; i++) { System.out.println(i); }

For-loop - Hur fungerar ++? Tankesätt i loopar: i++ använder först variabeln och ökar sedan värdet med ett ++i ökar först värdet med 1, och använder sedan variabeln Exempel: int i = 0; System.out.println(i++); // printar 0 System.out.println(i); // printar 1 System.out.println(++i); // printar 2 System.out.println(i); // printar 2

For-loop - Hur fungerar ++? 1a iterationen: for (int i = 0; i < 4; i++) { // i är nu 0 } // här blir i = 1 2a iterationen: // i är nu 1 } // här blir i = 2 3e iterationen: // i är nu 2 } // här blir i = 3 4e iterationen: // i är nu 4 } // här blir i = 4 5e iterationen: Är i < 4? (Dvs 4 < 4?) - false, loopen slutar Skriven som loop: for (int i = 0; i < 4; i++) { // kod }

For-loop for (int i = 0; i < 4; i++) { System.out.println(i); } Iteration for (int i = 0; i < 4; i++) { System.out.println(i); } // Villkoret i loopen är nu // false och koden fortsätter // på nästa rad System.out.println(“klar”); Output: “0” “1” “2” “3” “klar” 1a 2a 3e 4e For/Foreach går under samma namn “forloopa genom den listan”

Forloopar - Iterera genom en array String[] listaMedNamn = new String[] { “hans”, “peter”, “pelle”, “jöns”, “peter-niklas” }; int längdPåListan = listaMedNamn.length; // 5 For-loop: for (int i = 0; i < listaMedNamn.length; i++) { // detsamma som att skriva i < 5 System.out.println(listaMedNamn[i]); } Foreach: for (String name : listaMedNamn) { System.out.println(name); }

For-loopar - Fördelar/nackdelar Du kan ange hur många gånger du vill ska loopas Du har en variabel som håller reda på vilken iteration du är på Man kan iterera baklänges (reverse): T.ex: for (int i = list.length; i >= 0; i--) Nackdelar: Den tar inte hänsyn till eventuella tomma indexes T.ex. ifall array[5] = null, så loopar den ändå genom indexet

Foreach-loopar - Fördelar/nackdelar Enklare syntax Man slipper ha en extra variabel (int i = 0) Den struntar i tomma indexes - Fel, det gör den visst! Nackdelar: Det går inte att hålla reda på vilken iteration/index man är på Det går inte att iterera baklänges

Loopar - break och continue break avbryter hela loopen Exempel: for (int i = 0; i < 5; i++) { System.out.println(“test”); break; } //Printar endast ut “test” en gång

Loopar - break och continue continue börjar om från början på nästa iteration Exempel: for (int i = 0; i < 5; i++) { System.out.println(“test”); continue; System.out.println(“test2”); // Exception: unreachable statement }

Loopar - tankesätt Iteration: 1 temporärBilVariabel = public class ArrayDemo { public static void main(String[] args) { Bil[] bilarPåParkering = new Bil[10]; bilarPåParkering[0] = new Bil(“blå”); bilarPåParkering[1] = new Bil(“gul”); bilarPåParkering[2] = new Bil(“röd”); bilarPåParkering[4] = new Bil(“gul”); bilarPåParkering[5] = new Bil(“orange”); bilarPåParkering[7] = new Bil(“blå”); bilarPåParkering[8] = new Bil(“grön”); bilarPåParkering[9] = new Bil(“röd”); for (Bil temporärBilVariabel : bilarPåParkering) { System.out.println(temporärBilVariabel); } Iteration: 1 temporärBilVariabel =

Loopar - tankesätt Iteration: 2 temporärBilVariabel = public class ArrayDemo { public static void main(String[] args) { Bil[] bilarPåParkering = new Bil[10]; bilarPåParkering[0] = new Bil(“blå”); bilarPåParkering[1] = new Bil(“gul”); bilarPåParkering[2] = new Bil(“röd”); bilarPåParkering[4] = new Bil(“gul”); bilarPåParkering[5] = new Bil(“orange”); bilarPåParkering[7] = new Bil(“blå”); bilarPåParkering[8] = new Bil(“grön”); bilarPåParkering[9] = new Bil(“röd”); for (Bil temporärBilVariabel : bilarPåParkering) { System.out.println(temporärBilVariabel); } Iteration: 2 temporärBilVariabel =

Loopar - tankesätt Iteration: 3 temporärBilVariabel = public class ArrayDemo { public static void main(String[] args) { Bil[] bilarPåParkering = new Bil[10]; bilarPåParkering[0] = new Bil(“blå”); bilarPåParkering[1] = new Bil(“gul”); bilarPåParkering[2] = new Bil(“röd”); bilarPåParkering[4] = new Bil(“gul”); bilarPåParkering[5] = new Bil(“orange”); bilarPåParkering[7] = new Bil(“blå”); bilarPåParkering[8] = new Bil(“grön”); bilarPåParkering[9] = new Bil(“röd”); for (Bil temporärBilVariabel : bilarPåParkering) { System.out.println(temporärBilVariabel); } Iteration: 3 temporärBilVariabel =

Loopar - tankesätt Iteration: 4 temporärBilVariabel = NULL public class ArrayDemo { public static void main(String[] args) { Bil[] bilarPåParkering = new Bil[10]; bilarPåParkering[0] = new Bil(“blå”); bilarPåParkering[1] = new Bil(“gul”); bilarPåParkering[2] = new Bil(“röd”); bilarPåParkering[4] = new Bil(“gul”); bilarPåParkering[5] = new Bil(“orange”); bilarPåParkering[7] = new Bil(“blå”); bilarPåParkering[8] = new Bil(“grön”); bilarPåParkering[9] = new Bil(“röd”); for (Bil temporärBilVariabel : bilarPåParkering) { System.out.println(temporärBilVariabel); } Iteration: 4 temporärBilVariabel = NULL

Loopar - tankesätt Iteration: 5 temporärBilVariabel = public class ArrayDemo { public static void main(String[] args) { Bil[] bilarPåParkering = new Bil[10]; bilarPåParkering[0] = new Bil(“blå”); bilarPåParkering[1] = new Bil(“gul”); bilarPåParkering[2] = new Bil(“röd”); bilarPåParkering[4] = new Bil(“gul”); bilarPåParkering[5] = new Bil(“orange”); bilarPåParkering[7] = new Bil(“blå”); bilarPåParkering[8] = new Bil(“grön”); bilarPåParkering[9] = new Bil(“röd”); for (Bil temporärBilVariabel : bilarPåParkering) { System.out.println(temporärBilVariabel); } Iteration: 5 temporärBilVariabel =

Loopar - tankesätt Iteration: 6 temporärBilVariabel = public class ArrayDemo { public static void main(String[] args) { Bil[] bilarPåParkering = new Bil[10]; bilarPåParkering[0] = new Bil(“blå”); bilarPåParkering[1] = new Bil(“gul”); bilarPåParkering[2] = new Bil(“röd”); bilarPåParkering[4] = new Bil(“gul”); bilarPåParkering[5] = new Bil(“orange”); bilarPåParkering[7] = new Bil(“blå”); bilarPåParkering[8] = new Bil(“grön”); bilarPåParkering[9] = new Bil(“röd”); for (Bil temporärBilVariabel : bilarPåParkering) { System.out.println(temporärBilVariabel); } Iteration: 6 temporärBilVariabel =

Loopar - tankesätt Iteration: 7 temporärBilVariabel = NULL public class ArrayDemo { public static void main(String[] args) { Bil[] bilarPåParkering = new Bil[10]; bilarPåParkering[0] = new Bil(“blå”); bilarPåParkering[1] = new Bil(“gul”); bilarPåParkering[2] = new Bil(“röd”); bilarPåParkering[4] = new Bil(“gul”); bilarPåParkering[5] = new Bil(“orange”); bilarPåParkering[7] = new Bil(“blå”); bilarPåParkering[8] = new Bil(“grön”); bilarPåParkering[9] = new Bil(“röd”); for (Bil temporärBilVariabel : bilarPåParkering) { System.out.println(temporärBilVariabel); } Iteration: 7 temporärBilVariabel = NULL

Loopar - tankesätt Iteration: 8 temporärBilVariabel = public class ArrayDemo { public static void main(String[] args) { Bil[] bilarPåParkering = new Bil[10]; bilarPåParkering[0] = new Bil(“blå”); bilarPåParkering[1] = new Bil(“gul”); bilarPåParkering[2] = new Bil(“röd”); bilarPåParkering[4] = new Bil(“gul”); bilarPåParkering[5] = new Bil(“orange”); bilarPåParkering[7] = new Bil(“blå”); bilarPåParkering[8] = new Bil(“grön”); bilarPåParkering[9] = new Bil(“röd”); for (Bil temporärBilVariabel : bilarPåParkering) { System.out.println(temporärBilVariabel); } Iteration: 8 temporärBilVariabel =

Loopar - tankesätt Iteration: 9 temporärBilVariabel = public class ArrayDemo { public static void main(String[] args) { Bil[] bilarPåParkering = new Bil[10]; bilarPåParkering[0] = new Bil(“blå”); bilarPåParkering[1] = new Bil(“gul”); bilarPåParkering[2] = new Bil(“röd”); bilarPåParkering[4] = new Bil(“gul”); bilarPåParkering[5] = new Bil(“orange”); bilarPåParkering[7] = new Bil(“blå”); bilarPåParkering[8] = new Bil(“grön”); bilarPåParkering[9] = new Bil(“röd”); for (Bil temporärBilVariabel : bilarPåParkering) { System.out.println(temporärBilVariabel); } Iteration: 9 temporärBilVariabel =

Loopar - tankesätt Iteration: 10 temporärBilVariabel = public class ArrayDemo { public static void main(String[] args) { Bil[] bilarPåParkering = new Bil[10]; bilarPåParkering[0] = new Bil(“blå”); bilarPåParkering[1] = new Bil(“gul”); bilarPåParkering[2] = new Bil(“röd”); bilarPåParkering[4] = new Bil(“gul”); bilarPåParkering[5] = new Bil(“orange”); bilarPåParkering[7] = new Bil(“blå”); bilarPåParkering[8] = new Bil(“grön”); bilarPåParkering[9] = new Bil(“röd”); for (Bil temporärBilVariabel : bilarPåParkering) { System.out.println(temporärBilVariabel); } Iteration: 10 temporärBilVariabel =

Övning - for-loopar T.ex., input “3 5” ger output: “X X X X X Skriv ett program som läser in två tal. Det första talet anger hur många rader som ska skrivas ut. Det andra talet anger hur många kolumner som ska skrivas ut på varje rad. Vilken bokstav ni använder som utskrift bestämmer ni själva (i detta exempel används X). T.ex., input “3 5” ger output: “X X X X X X X X X X X X X X X” Input “1 10” ger output: “X X X X X X X X X X” Input “0 1231231233123” ger output: “” Tips på googlesökningar: “how to use for loop java” “for loop example java” “nested for loops java” T.ex: int rader = 3; int kolumner = 4; for (int i = 0; i < rader; i++) { for (int j = 0; j < kolumner; j++) { }

Lösning - for-loopar Scanner scan = new Scanner(System.in); int rows = scan.nextInt(); int cols = scan.nextInt(); for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { System.out.print(“x “); } System.out.println();

Övning - array + forloop Skriv ett program som läser in ett tal. Talet anger hur många Strings ni kommer att skriva in härnäst (varje string är separerad från nästa string med ett mellanslag eller en ny rad) De X-antal Strings som ni skriver in ska lagras i en array. (Dvs String[]) Därefter ska listan loopas igenom med hjälp av en foreach-loop, där varje String i listan skrivs ut på en egen rad. Tips på google-sökningar: “string array java” “initialize array java” “scanner java” “for loop java” “foreach loop java” “nextline java skips input” (tips, scan.next() ) Exempel: Input: “3 Namn1 Namn2 Namn3” Output: “Namn1 Exempel: Input: “1 Namn1” Output: “Namn1” Exempel: Input: “0” Output: ingen output

Lösning - array + forloop Scanner scan = new Scanner(System.in); int numberOfEntries = scan.nextInt(); String[] listOfStrings = new String[numberOfEntries]; for (int i = 0; i < numberOfEntries; i++) { listOfStrings[i] = scan.next(); } for (String s : listOfStrings) { System.out.println(s);

Metoder & Klasser Gemensamt för båda är åtkomsten Åtkomsten bestäms av modifierare: De två vanligaste modifierarna (de ni behöver kunna): public = Alla kan komma åt den private = Endast den egna klassen kan komma åt den Andra modifierare: protected default _____________ Klassen, package, subklasser

Metoder Något som en klass kan utföra. Returnerar antingen ett värde som vi sedan kan stoppa in någon annanstans, T.ex.: int, double, String, float, egenskapade klasser Eller så returnerar den ingenting alls (void) Kan ta in parametrar, dvs input till det den ska utföra Kortfattat: returnvärde = output parametrar = input

Metoder Utför allt som finns inom dess måsvingar steg för steg: public int returnOnePlusOne() { int one = 1; // Steg 1 int result = one + one; // Steg 2 // (hoppar över denna rad) return result; // Steg 3 } Det värde som metoden returnerar måste vara av samma typ som typen i metodhuvudet public int returnOnePlusOne() { <-- Metodhuvud int one = 1; int result = one + one; return result;

Metoder Return avbryter metoden public int returnOnePlusOne() { int one = 1; int result = one + one; return result; System.out.println(result); // unreachable code } Metoder avbryts/slutar automatiskt när alla instruktioner är utförda public void calculateOnePlusOneButDontReturn() { int one = 1; // Steg 1 int result = one + one; // Steg 2, och sedan avslutas

Metoder - Skillnad på return och println() System.out.println() printar endast ut det till consolen: public void printStringLength(String inputString) { System.out.println(inputString.length()); } Medan return returnerar värdet så att den kan användas som ett värde: public int returnStringLength(String inputString) { return inputString.length();

Metoder - Använda return-värdet (int exempel) public static void main(String[] args) { printStringLength(“test string”); // Output: “11”; int length = returnStringLength(“test string”); // length-variabeln är nu “11” //length-variabeln kan användas som ett nummer System.out.println(length + 2); // Output: “13” } public void printStringLength(String inputString) { System.out.println(inputString.length()); } public int returnStringLength(String inputString) { return inputString.length(); Tänk att “returnStringLength(“test string”); → byts ut mot 11

Metoder - Använda return-värdet (char exempel) public static void main(String[] args) { printFirstCharacter(“test string”); // Output: “t”; char firstLetter = returnFirstCharacter(“test string”); // firstLetter-variabeln är nu ‘t’ //firstLetter-variabeln kan användas System.out.println(firstLetter); // Output: ‘t’ } public void printFirstCharacter(String inputString) { System.out.println(inputString.charAt(0)); } public char returnFirstCharacter(String inputString) { return inputString.charAt(0);

Metoder - Parametrar (input) Parametrar är input som metoden kan använda En metod kan ha en parameter: public void printFirstCharacter(String inputString) { System.out.println(inputString.charAt(0)); } En metod kan ha flera parametrar: public int addTwoNumbers(int numberOne, int numberTwo) { return numberOne + numberTwo; En metod kan ha noll parametrar: public long returnCurrentTime() { return System.currentTimeMillis();

Metoder - När ska parametrar finnas? Tankesätt: Behöver jag skicka med en input för att metoden ska kunna fungera? Ingen parameter behövs public String getName() { return “Stinky McFly”; } En parameter behövs, då vi ska sätta namnet till något public void setName(String newName) { String name = newName; varför är det String / void på dem?

Metoder - Returnvärde Varför returnerar getName() en String, men setName() returnerar void (dvs ingenting)? public String getName() { return “Stinky McFly”; } public void setName(String newName) { String name = newName; varför är det String / void på dem?

Metoder - Static Statiska metoder kallas för Klassmetoder public static int getTotalHoursPerDay() { return 24; } Icke-statiska metoder kallas för Instansmetoder (dvs metoder som finns i en instans av klassen) public int getAge() { return 23; varför är det String / void på dem?

Metoder - Exempel på static Metoderna ska ligga var för sig, dvs utanför en annan metods måsvingar, men innanför klassens måsvingar public class StaticDemo { public static void main(String[] args) { int totalHours = getTotalHoursPerDay(); System.out.println(totalHours); } public static int getTotalHoursPerDay() { return 24; varför är det String / void på dem?

Metoder - Exempel på static En metod körs inte ifall den inte blir kallad på public class StaticDemo { public static void main(String[] args) { System.out.println(“running main method”); } public static int getTotalHoursPerDay() { // This is never used return 24; varför är det String / void på dem?

Metoder - Exempel på static En metod körs inte ifall den inte blir kallad på public class StaticDemo { public static void main(String[] args) { System.out.println(“running main method”); int totalHours = getTotalHoursPerDay(); } public static int getTotalHoursPerDay() { // This is now used return 24; varför är det String / void på dem?

Klasser En klass är som en ritning/mall för objekt som ska instantieras En klass kan ha attribut, t.ex: int, String, ArrayList, double, char En klass kan ha metoder, t.ex: getName(), setName(String name) Vad innebär “instantieras”? När ett barn föds, så instantieras denne från dess DNA vilket agerar som en ritning för hur barnet ska “byggas” När en maträtt tillagas så instantieras denne från ett recept, ifall receptet har 4 tomater har även varje instans (lagad maträtt) 4 tomater.

Klasser - Attribut När ett barn föds/skapas får den olika attribut, dvs egenskaper, t.ex.: Fingrar Vikt Namn I java kan detta översättas till: public class Barn { private int antalFingrar; private double vikt; // Varför är vikt av typen double? private String namn; }

Klasser - Konstruktor Barnets defualtvärde på dess egenskaper är null , dess egenskaper är således inte initierade: public class Barn { private int antalFingrar; //null private double vikt; //null private String namn; //null } För att instantiera barnet, dvs skapa, används en konstruktor: private int antalFingrar; private double vikt; private String namn; public Barn() { vi har i princip sagt: “ett barn kommer att finnas med dessa egenskaper, men de är inte bestämda ännu”

Klasser - Konstruktor, användning public class TestClass { public static void main(String[] args) { Barn b = new Barn(); // “b” är nu en referens till ett Barn-objekt // som har null på antalFingrar, vikt och namn } public class Barn { private int antalFingrar; //null private double vikt; //null private String namn; //null public Barn() { } hur sätter vi antalFingrar, vikt och namn?

Klasser - Set och get public class Barn { private int antalFingrar; private double vikt; private String namn; public Barn() { // instantierar ett barn med null på alla attribut. } public void setAntalFingrar(int antalFingrar) { this.antalFingrar = antalFingrar; public int getAntalFingrar() { return this.antalFingrar; public void setVikt(double vikt) { this.vikt = vikt; public double getVikt() { return vikt; //Samma klass public void setNamn(String namn) { this.namn = namn; } public String getNamn() { return this.namn; Ordet THIS kan utläsas som “den här klassens…”. Varje gång ni ser “this” så tänk: “den här klassens”

Klasser - Set och get public class Barn { private int antalFingrar; private double vikt; private String namn; public Barn() { // instantierar ett barn med null på alla attribut. } public void setAntalFingrar(int antalFingrar) { this.antalFingrar = antalFingrar; public int getAntalFingrar() { return this.antalFingrar; public void setVikt(double vikt) { this.vikt = vikt; public double getVikt() { return vikt; //Samma klass public void setNamn(String namn) { this.namn = namn; } public String getNamn() { return this.namn; likt en metod så har en konstruktiv INPARAMETRAR

Klasser - Flera konstruktorer public class Barn { private int antalFingrar; private double vikt; private String namn; public Barn() { // instantierar ett barn med null på alla attribut. } public Barn(int antalFingrar, double vikt, String namn) { //Parametrar som en metod this.antalFingrar = antalFingrar; this.vikt = vikt; this.namn = namn; likt en metod så har en konstruktiv INPARAMETRAR

Klasser - Flera konstruktorer, vilken väljs? public class Barn { private int antalFingrar; private double vikt; private String namn; public Barn() { // instantierar ett barn med null på alla attribut. } //Parametrar som en metod public Barn(int antalFingrar, double vikt, String namn) { this.antalFingrar = antalFingrar; this.vikt = vikt; this.namn = namn; //set och get på alla attribut public class ConstructorDemo { public static void main(String[] args) { Barn b = new Barn(); b.setAntalFingrar(5); b.setVikt(3.4); b.setNamn(“Pelle”); System.out.println(b.getAntalFingrar + “ “ + b.getVikt + “ “ + b.getNamn()); // Printar “5 3.4 Pelle” Barn b2 = new Barn(6, 3.1, “Jöns”); System.out.println(b2.getAntalFingrar + “ “ + b.getVikt + “ “ + b.getNamn()); // Printar ut “6 3.1 Jöns” } likt en metod så har en konstruktiv INPARAMETRAR

Klasser - Instansmetoder vs Klassmetoder Set och Get är instansmetoder, då de är beroende av en instans av klassen. main-metoden är en klassmetod, då den inte är beroende av en instans. Main-metoden är således static Vi kan ju inte fråga klassen vad den heter, då det finns många barn som heter olika saker