180 likes | 319 Views
02 - Java datatyper. Grundlæggende om datatyper og variable. En simpel klasse. {…} Er samling af udtryk Kaldes blok eller scope. Definer klassen Book. public class Book { private String title; private String author; public Book(String t, String a) //Constructor { title= t;
E N D
02 - Java datatyper Grundlæggende om datatyper og variable
En simpel klasse {…} Er samling af udtryk Kaldes blok eller scope Definer klassen Book public class Book { private String title; private String author; public Book(String t, String a) //Constructor { title= t; author= a; } public @Override String toString(){ return (title+" "+author); } } Attribut eller instans variable Variabel, der hører til en instans, dvs. objekt. Bruges normalt til initialisering Konstruktør. Kaldes når objektet instanseres Instans metode. Er en funktion der udføres på objektet Metoden er arvet fra Object, og overskrives @Override bruges fra Java 1.5
Driver program Programmet startes fra main-metodenDen skal have signaturen:public static void main(String[] args) public class Main { public static void main(String[] args) { Book b1= new Book("C#","Troelsen"); Book b2= new Book("Java","Kölling"); System.out.println(b1.toString()); System.out.println(b2); } } Instansering af 2 objekter af klassen Book Kald metode på objekt toString() kaldes implicit Output fra program: C# Troelsen Java Kölling
Coding Guidelines • Java programmer børaltid have.javaextensionen. • Filnavneskalværedetsammesomnavnetpå public class. F.eks hvisnavnetpå public class erHello, bør du gemme den I en filderhedderHello.java. • Du børskrivekommentarerikodenderbeskriverhvadklassenogevt. vissemetodergør. • Deter en konventioni Java at klassenavne starter med stortbogstav, oghvertnytord starter også med stort. F.eks: MinEgenKlasse • Det samme gælder for variabel og metodenavne, bortset fra at de starter med lille bogstav: minVariabel, minMetode()
Kommentarer • Der findes 3 typer kommentarer i Java: • C++ style://Resten af linien er en kommentar • C style: /* Det er mellem /* ..*/ er en kommentar */ • JavaDocs: Kan bruges til automatisk generering af dokumentation. F.eks: /** This is an example of special java doc comments used for \n generating an html documentation. It uses tags like: @author Florence Balagtas@version 1.2 */
UdtrykKort • Udtryk eller statements består af en eller flere linier afsluttet med semikolon • F.eks: • System.out.println(“Hello world”); • Flere statements kan samles i en blok, markeret med { ….} • F.eks: • for(int i=0;i<10;i++){intx=i*i;System.out.println(i+”: ”+x);}
Datatyper • I Java er der de simple datatyper man forventer: • boolean (for logical) • char (for textual) • byte • short • int 20 svarertil 024 (octal) og x014 (hex) • long (integral) • Double 450.0 svarertil 450f og 4.5e2 • float (floating point). • String er lidt speciel, da den er en klasse, men kan opføre sig som en simpel datatype
Variable • Variable skal erklæres med en datatype: • Og initialiseres før den kan bruges: public void metode() { int width, height; width = 2; height = 4; int area = width * height; intx; int y = x * 2; ... } Erklæring Erklæring + initialiering Fejl, xerikkeinit.
Type konversion • Implicit type konversion: • fra mindre til større type • Ellers er der brug for typecast eller explicit konversion… • typecast syntaksen er typen i parentes • Konversion baseret på System.Convert klassen inti = 5; double d = 3.2; string s = "496"; d = i; i = (int) d; i = Integer.parseInt(s); implicit konversion typecast nødvendig Konversion nødvendig
"calico" Value vs. reference typer • I Java er 2 kategorieraf data typer • Value typer: • variablenrepræsenterer en værdi ("bits") • Reference typer: • variablenrepræsenterer en reference til et objekt • aktuelle data erindeholdtiobjektet int i; i = 10; 10 string s; s = "calico";
Value type eller primitiv type: • Variable med primitive data typersominteller long. • Gemmer data direktepådetstedi memory, hvorvariablenergemt • Reference Variables • Variable, erklæret med abstrakte datatyper. • Variablengemmeradressenpåobjektet • Dvs. den pegerpå et andetsted I memory, de faktiske data er. • Når du erklærer en variable af en klasse, erklærer du I virkeligheden en reference variabeltil et objektafklassen.
int num = 10; // primitiv type String name = "Hello"; // reference type
Boxing og Unboxing • Java konvertererværdi <==> objekt, nårdererbehov • værdi ==> objektkaldes "boxing" • objekt ==> værdikaldes "unboxing" int i, j; object obj; i = 32; obj = i; // boxed copy! i = 19; j = (Integer) obj; // unboxed!
Anvendelse af reference typer (klasser) … • Oprettelse, tildeling, og sammenligning: Customer c1, c2, c3; String s1, s2; c1 = new Customer("joehummel", 36259); c2 = new Customer("marybeth lore", 55298); c3 = null; // c3 references no object c3 = c1; // c3 now references same obj as c1 if (c1 == null) ... // do I ref an object? if (c1 == c2) ... // compares references if (c1.equals(c2)) ... // compares objects if (s1 == s2) ... // exception: == overloaded to // compare string data
Definering af “Lig med” • Klasserkanomdefinere equals boolean equals(Object obj) { Book other; if ((obj == null) || (!(objinstanceof Book))) { return false; // definitely not equal } other = (Book) obj; // typecast to access // equal if same author... return this.author == other.author; }
Arrays • Arrays er reference typer • oprettes med new • 0-baseret indeksering • Tildelt default værdier (0 for numerisk, null for references, etc.) int[] a; a = newint[5]; a[0] = 17; a[1] = 32; int x = a[0] + a[1] + a[4]; int l = a.Length; Opret Tilgå element Antal elementer
Multi-dimensionelle arrays • Java understøtter arrays som array af arrays • nedenstående implementer et 2D array med forskelliglængde (Jagged) Customer[][] twoD; int[][] jagged2D; // 2D array as single object twoD = new Customer[10][100]; twoD[0, 0] = new Customer(…); twoD[9, 99] = new Customer(…); // 2D array as array of arrays jagged2D = new int[10][]; jagged2D[0] = new int[10]; jagged2D[1] = new int[20]; jagged2D[9] = new int[100]; jagged2D[0][0] = 1; jagged2D[9][99] = 100; Samme længde Forskellig længde
Opsummering • I Java er der de simple datatyper man kan forvente • Simple data typer er value typer • Mens Objekter er referencer • Objekter bør sammenlignes med equals metoden, som evt. kan overskrives