Grunnleggende Java

Fra Programmering

Gå til: navigasjon, søk

Denne siden dekker grunnleggende Java-programmering, hovedsaklig inngangspunktet i et program og enkle variabler og operatorer.

Innhold

Hovedklasse

Java er et objekt-orientert programmeringsspråk som krever at alt er en del av klasser. Derfor må alle Java-programmer ha en hovedklasse som inneholder inngangspunktet til programmet. Inngangspunktet er der programmet starter opp og får tilgang til parametre gitt på kommandolinja. I Java legges dette inngangspunktet i en klasse som er public og har samme navn som fila den ligger i. Under vises et eksempel på en hovedklasse (og altså et Java-program) som ikke gjør noe som helst (koden lagres altså i fila HelloWorld.java):

public class HelloWorld {
 
    public static void main(String[] args) {
    }
}

Inngangspunktet i programmet ovenfor er metoden main ovenfor.

Det vanligste eksemplet på et minimalt program kalles ofte HelloWorld og er et program som skriver ut teksten «Hello World!» til terminalen.

public class HelloWorld {
 
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

Kompilering og kjøring

For å kompilere et Java-program bruker vi programmet javac:

For å kjøre et program bruker vi java:

Merk at filetternavnet er tatt med når vi kompilerer, men ikke når vi kjører programmet. Det er vanligvis nok å angi hovedklassen når man skal kompilere et program; Java-kompilatoren prøver å lete opp andre filer den trenger (hvis det er flere filer), men det er ikke alltid dette går eller at den ikke ser at en fil som ikke er hovedklassen har blitt endret. I verste fall kan man bruke kommandoen under for å kompilere alle Java-filer i en mappe:

Metoder

Metoder (methods eller member functions) er der instruksjonene (programsetningene) ligger. I Java kan ikke noe annet enn klasse- og variabeldeklarasjoner ligge utenfor metoder [1].

Variabler

Primitive typer

Primitive typer er datatyper som er grunnleggende byggeblokker i programmeringsspråk og i Java finnes det primitive datatyper for heltall, flyttall (desimaltall), tegn og boolske verdier (sannhetsverdier). Sannhetsverdier har typen boolean og verdien er enten true eller false. Tegn har typen char og kan være et hvilket som helst Unicode-tegn. double er mest brukt for flyttall og int for heltall. Om man trenger heltall med høyere verdier, brukes long, og om man har stort behov for å spare minne, kan man bruke float for flyttall og short eller byte for heltall.

Heltall
Type Laveste verdi Høyeste verdi
byte -128 127
short -32 768 32 767
int -2 147 483 648 2 147 483 647
long -9 223 372 036 854 775 808 9 223 372 036 854 775 807
Flyttall
Type Antall siffer Høyeste eksponent
float ca. 7 ca. 38
double ca. 16 ca. 308

Typeomforming

Typeomforming (casting) vil si å endre typen til en variabel. I Java gjøres det ved å putte den ønskede typen i parenteser foran det man vil konvertere til den typen. Dette er ikke begrenset til primitive typer, men brukes mest til å konvertere mellom hel- og flyttall:

public class Casting {
 
    public static void main(String[] args) {
        double x = 65.7;
	int y = (int)x;
	char z = (char)y;
        System.out.println(x);
	System.out.println(y);
	System.out.println(z);
    }
}

Operatorer

Operatorer kjenner vi fra matematikken. Vi deler dem inn i forskjellige kategorier ut fra hva de lar oss gjøre. Her tar vi først og fremst for oss aritmetiske/matematiske operatorer og tilordningsoperatoren. Vi har operator for addisjon (legge sammen), subtraksjon (trekke fra), multiplikasjon (gange) og divisjon (dele). Akkurat som i matematikken utføres multiplikasjon og divisjon før addisjon og subtraksjon, men vi kan bruke parenteser for å angi at utregningene i parentesene skal gjøres først.

Operator Operasjon Eksempel Verdi
+ Addisjon 1 + 1; 2
- Subtraksjon 5 - 4; 1
* Multiplikasjon 2 * 3; 6
/ Divisjon 15 / 3; 5
= Tilordning int i = (2 + 2 - 1) * 6 / 2; 9

Under vises et eksempel på et enkelt program som bruker en tallvariabel og skriver ut verdien i terminalen.

public class TwoPlusTwo {
 
    public static void main(String[] args) {
        int four = 2 + 2;
        System.out.println("2 + 2 = " + four);
    }
}

Sammensatte typer

Javas sammensatte typer er objekter av klasser. Vi skal ikke se på så mange slike her.

Tekst

Tekst brukes veldig ofte og er derfor en litt spesiell type i Java. Vi har allerede sett tekst brukt i programmene ovenfor, men her skal vi se hvordan tekstvariabler kan brukes. Tekstvariabler har typen String (klassen til strenger) og kalles gjerne strenger eller tekststrenger fordi de er flere tegn satt sammen til en streng av tegn.

public class Text {
 
    public static void main(String[] args) {
        String name = "Superman";
        System.out.println("Your name is: " + name);
    }
}

Operatoren + slår sammen to tekster ved å legge den ene etter den andre (om du har prøvd eksemplene for tall ovenfor har du sett dette allerede). + er den eneste matematiske operatoren som fungerer med tekst, altså kan du ikke fjerne tekst fra en tekstvariabel med -. Primitive verdier kan også legges til strenger, men merk at du må ha parenteser rundt eventuelle matematiske uttrykk (ellers tolkes disse som strengeoperasjoner).

Tall som tekst

Noen ganger har vi tall som er representert som tekst. Da kan det være greit å kunne konvertere teksten til tall:

public class NumberString {
 
    public static void main(String[] args) {
        String numberString = "1024";
        int number = Integer.parseInt(numberString);
        number = number * number;
        System.out.println(number);
    }
}

Metoden parseInt konverterer en streng som inneholder tall til et heltall. Det finnes liknende metoder for alle de andre primitive typene Double.parseDouble(doubleString) eller Boolean.parseBoolean(booleanString).

Rekker

Man kan assosiere ett navn med flere variabler ved bruk av rekker (arrays på engelsk). En rekke angis ved å legge til klammeparenteser bak typen eller variabelnavnet. Dette har du sett i deklarasjonen til metoden main. Om man skal ha tak i en bestemt variabel i rekka, bruker man igjen klammeparenteser og et tall i parentesene for å angi hvilket element det er:

public class ArrayTest {
 
    public static void main(String[] args) {
        double[] values = new double[3];
        values[0] = 1.2;
        values[1] = 5.5;
        values[2] = values[0] + values[1];
        System.out.println(values[0] + " + " values[1] + " = " + values[2]);
        System.out.println("Number of elements in values: " + values.length);
    }
}

Vi har her brukt operatoren new for å opprette en rekke med tre flyttall. Det første tallet i rekka refereres til som element 0, ikke 1. Derfor er det siste elementet 2 ikke 3. Merk at vi henter ut lengden til rekka ved å sjekke konstanten length i rekka: values.length.

Kommandolinjeargumenter

Merk at main har en parameter, args, av typen String[]. Denne parameteren inneholder alle kommandolinjeargumentene som gis når programmet blir kjørt:

public class ArgsTest {
 
    public static void main(String[] args) {
        int i = 0;
        while (i < args.length) {
            System.out.println("- " + args[i]);
            i = i + 1;
        }
    }
}

Programmet ovenfor viser også bruk av en enkel while-løkke (les gjerne om for-løkker i løkkeartikkelen om du vil ha en mer kompakt måte å skrive den samme løkka på). Programmet skriver ut alle argumentene som ble gitt på kommandolinja:

Fotnoter

  1. Dette er en sannhet med modifikasjoner. Alt av deklarasjoner og definisjoner kan puttes utenfor metoder. Som en del av definisjoner kan derfor uttrykk ligge utenfor metoder.
Personlige verktøy