Blog / Home
About
Media Gallery

Welcome
to
Thronic.com

ժʝ_

JAVA Notater


Personlige Notater 1 av 2                                   
Læring av Java og Android                                  
                                                            
                                                           Oktober 2016, Java 8
                                                                   
===============================================================================
                          Kjøring av Javaprogrammer
===============================================================================

Eclipse IDE for Java Developers
Neon.1 Release (4.6.1):

    Fil > Export > Runnable JAR file
    Kjør med:
        <CMD>java -jar <jarfil>

        

        
===============================================================================
                                    Typer
===============================================================================

Primitive Typer

    TYPE    VERDI        ANTALL BITS                              STANDARDVERDI
    
    boolean 1-bit verdi  (0)                                              false
    byte    8-bit verdi  (0000 0000)                                          0
    short   16-bit verdi (0000 0000 0000 0000)                                0
    int     32-bit verdi (0000 0000 0000 0000 0000 0000 0000 0000)            0
    long    64-bit verdi (0000 0000 0000 0000 0000 0000 0000 0000
                          0000 0000 0000 0000 0000 0000 0000 0000)            0
    float   32-bit verdi                                                   0.0f
    double  64-bit verdi                                                   0.0d
    char    16-bit verdi                                               '\u0000'
    
    MERK:
        - Sammenslåing gjøres med '+'. Selv mellom objekter og primitive typer.
        - Standardverdi for ikke-initialiserte objekter er 'null'.
        - Typekasting eksempel: int i = (int) variabel_av_annen_type.
        


        
===============================================================================
                                   Strenger
===============================================================================

Strengbehandling

    Sammenslåing av strenger bør gjøres med StringBuilder eller StringBuffer. 
    Det er en mer effektiv måte enn ved kun '+', som skaper et nytt objekt i 
    minnet hver gang man sammenslår. StringBuffer er identisk med StringBuilder
    med unntak av at StringBuffer er "thread-safe".
    
    Sammenslåing Eksempel:
    
        StringBuilder sb = new StringBuilder("");
        sb.append("Ole")
        .append("Dole")
        .append("Doffen");
        
Strengformatering

    F.eks. med System.out.printf(<format>, <verdi>)
    
    %2d     =    La verdien bruke en total bredde på 2.
    %-2d    =    Samme, men justering av verdi skjer mot venstre.
    %.2f    =    .2 betyr visning av 2 desimaler.
    %5.1f   =    Totalt 5 tall med 1 desimal.
    %-5.1f  =    Samme, men justering av verdi skjer mot venstre.
    
    MERK:
        - Streng klassen kan returnere formatert streng med .format()
        

        
    
===============================================================================
                                    Pakker
===============================================================================
                                    
MERK:

    - Man kan ikke ha flere klasser med like navn i samme pakke.
    - Klasser i pakker under default må ha pakkedefinisjon øverst.
    - Pakkehierarkiet er den samme som mappestrukturen.
    - Klasser i underpakker må ha importdefinisjon før bruk 
      (må være etter pakkedefinisjoner).
    - Wildcard '*' kan brukes ved import av 'pakke.klasser'.
    - Navnekonvensjon for pakker: com.thronic.pakkenavn
    
    Pakkedefinisjon for tilhørighet som skrives i klassefiler - eksempel:
        package pakke;
        
    Importdefinisjon eksempel:
        import pakke.klasse;
    

    
    
===============================================================================
                               Kontrollstrukturer
===============================================================================
    
IF/ELSE
    
    if () {
    
    } else if() {
    
    } else {
    
    }
    
SWITCH

    switch() {
        case "":
            break;
        
        default:
    }
    
FOR

    for (int n=0; n<10; n++) { ... }
    for (int n : matrise) { ... }
        - Samme som 'foreach' men heter i dette tilfellet 'Enchanced For-Loop'.

WHILE
    while (1) { ... }
    
try {
    // Prøv dette.
    
} catch (Exception e) {
    // Oi da.
    
} finally {
    // Vi gjør uansett dette til slutt.
}
    

    
    
===============================================================================
                             Matriser og Samlinger
===============================================================================
                             
Matriser

    int[] verdier;              // Deklarasjon.
    verdier = new int[3];       // Initialisering.
    int[] tall = {1,2,3}        // Deklarering og initialisering samtidig.
    int[][] par_odde = {        // Multidimensjonell matrise.
        {2,4,6},
        {1,3,5}
    }
    
Listetyper

    Det finnes 9 typer lister i 3 kategorier: 
    
        ArrayList, LinkedList og Vector.
        HashSet, TreeSet og LinkedHashSet.
        HashMap, HashTable og TreeMap.
        
    Eksempel:
        ArrayList<String,int> id_liste = new ArrayList<String,int>();
    
        tall.add(123);
        tall.add(789);
        tall.add(2,456);    // Setter inn 456 på plass 2 i matrisen og
                               dytter nåværende verdi nedover.
                               
    HashSet, TreeSet og LinkedHashSet er lik i funksjonalitet, men godtar ikke
    identiske verdier. De blir ikke lagt til ved forsøk og blir ignorert.
    Kart opererer med nøkler og verdier (som collections i C#).
    
    Eksempel:
        HashMap<String,int> kart1 = new HashMap<String,int>();
        
    Eksempel med nøsting:
        HashMap<String,HashMap<String,int>> kart2 = 
        new HashMap<String,HashMap<String,int>>();
        
        kart1.put("DaGonny",1234);
        kart1.put("Kristine",5678);
        kart2.put("Navneliste", kart1);
        

        
        
===============================================================================
                                 Funksjoner
===============================================================================

Eksempelkode

    class Eksempel {
        private String s = "";
        private int i = 0;
        
        public void settVerdier(String s, int i) {
            this.s = s;
            this.i = i;
        }
        
        public String hentVerdier() {
            return s + i;
        }
    }
    
    public class Test1 {
        public static void main(String[] args) {
            Eksempel e = new Eksempel();
            e.settVerdier("Dette er test nr ",1);
            System.out.println(e.hentVerdier());
        }
    }
    
    
    
    
===============================================================================
                     Klasser, Objekter og Grensesnitt
===============================================================================

MERK:
    - Klasser kan kun ha 'public' eller ingenting foran definisjonen.
    - Abstrakte klasser kan kun arves og tjener kun som et templat/prototype.
    - private : Kun synlig for klassen.
    - protected : Kun synlig for pakken og underklasser.
    - public : Synlig for alt.
    - Deklarasjoner uten nøkkelord ovenfor er kun synlige på pakkenivå.
    
Konkret klasse:

    public class SvartStol {
        String farge = "Svart";
        int antallBein = 4;
        
        public void Sitte() {
            // Bestemt kode for å sitte på en svart stol.
        }
    }
    
Abstrakt klasse:

    public abstract class Stol {
        protected String farge;
        protected int antallBein;
        
        // Prototype for underklasser.
        public abstract void Sitte();
        
        // Felles ferdig definert funksjon for alle underklasser.
        public String hvilkenFarge() {
            return farge;
        }
    }
    
    Bruk:
        public class TVStol extends Stol {
            @Override
            public void Sitte() {
                // Unik kode for TVStol ang. sitting. Ekstrem avslapping her!
            }
        }
        
Konstruktbruk

    public class Klasse {
        private int i;
        
        public Klasse() {
            i = 0;
        }
        
        // Overlasting av konstrukt er lov.
        public Klasse(int i) {
            this.i = i;
        }
    }
    

    
===============================================================================
                            Komplett Eksempelkode
===============================================================================

interface Sitting {
	public void sittNed();
	public void reisOpp();
}

abstract class Stol {
	protected int antallStolBein;
	protected String farge;
	protected String puteType;
	
	public static void sitteAksjon(boolean b, Sitting s) {
		if (b) {
			s.sittNed();
		} else {
			s.reisOpp();
		}
	};
}

class Godstol extends Stol implements Sitting {
	public Godstol() {
		antallStolBein = 1;
		farge = "Grønn.";
		puteType = "Lazyboy.";
	}
	
	public void sittNed() {
		System.out.println("Setter meg ned i godstolen!\nDEILIG! ZZZZzzzzz");
	}
	
	public void reisOpp() {
		System.out.println("Reiser meg opp fra godstolen!\nUthvilt!");
	}
}

class Drittstol extends Stol implements Sitting {
	public Drittstol() {
		antallStolBein = 4;
		farge = "Muggen grå og jævlig.";
		puteType = "Treplate med spiker i fu-området.";
	}

	public void sittNed() {
		System.out.println("Setter meg på drittstolen:\nHELVETE! BLOD OGSÅ!");
	}

	public void reisOpp() {
		System.out.println("Reiser meg fra drittstolen:\n1 LITER BLOD. VEKK.");
	}
}

public class Test1 {
	public static void main(String[] args) {
		Godstol stol1 = new Godstol();
		Drittstol stol2 = new Drittstol();
		
		Stol.sitteAksjon(true, stol1);
		Stol.sitteAksjon(false,  stol1);
		
		Stol.sitteAksjon(true,  stol2);
		Stol.sitteAksjon(false, stol2);
	}
}



Original Post: Jan 27th, '22 19:19 CET.

Java
π