GENERELT.Javaprogram skal funke på alle plattformer og OS'er. Et Javaprogram funker gjennom JVM, Java Virtual Maskin. JSDK - Java Softvare Development Kit. Vi kan lage program i SDK. En Java Compiler omformer, eller "kompilerer" programmet til kjørbar kode. Det blir i utgangspunktet lagd i extension java. Etter koplilering får det extension class. Komentarer. Java er et objektorientert språk. Vi beskriver et objekt i egen
fil, gir det egenskaper og metoder, for siden å opprette instanser
av objektet og kalle på det fra andre program. Java består av en rekke ferdiglagede klasser, f.eks java.lang (language) og java.math, eller java.swing for grafisk grensesnitt. Vi kan i tillegg lage våre egne. For å bruke hverandres filer og holde orden i systemet bør
man følge en navnekonvensjon, snu maskinnavnet. Husk å endre settinga i kontrollpanelet: Mer under Komme igang
Komme igang.Et eksempel: //det er mulig å begynne med en kommentar package no.itat.student.geir.servering; //deretter må en eller flere eventuelle importer import javax.swing.*; //navnet på klassen, lagres som FilNavn.java //deklarering av klassevariabler (gyldig i hele klassen) //eventuelle metoder //main metoden hvis fila skal gjøre noe selvstendig arbeid } //sluttparentes for public class FilNavn
Dersom programmet skal bruke pakker, packages, klassebibliotek som henger sammen, må man starte fila med nøkkelord i toppen av fila. Man kan kun ha kommentar eller blanke linje foran. Vil man gjøra ei fil i mappa servering tilgjengelig, skriv:
Vil man bruke filer fra mappa servering, skriv: For å lage ei java fil skriver man: public class FilNavn { Innhold i fila } Javafiler bruker å ha stor forbokstav. For å kjøre et program leter Java etter en metode som heter
main. public static void main(String[] args) { } IDENTIFIERSIdentifiers skal begynne med bokstaver, dollartegn($) eller underscore (_). Man kan ikke bruke keywords eller reserverte ord.
|
|
Error |
|
Runtime |
|
Checked |
Det er kun de Checked exceptions vi må behandle. Error kan vi likevel ikke gjøre noe med, og runtime bør vi kode oss bort fra, f.eks med if-betingelser.
Vi kan behandle runtime exceptions på to måter:
I try og catch blokker. Eller vi kan bruke nøkkelordet throws og
sende ansvaret for behandlinga videre til stedet metoden som lagde dem
blei kalt.
Denne vil så få de samme to muligheter.
Se også try, catch,
finally, throw
og throws. her
Når du arver fra en klasse og overkjører en metode som kaster exceptions, kan ikke den nye metoden kaste exceptions fra andre klasser eller subklasser enn originalen. Man kan ikke utvide exceptions, men man kan godt la være å kaste noen exceptions fra den nye metoden.
Man kan ikke tvinge JAVA til Søppeltømming. Det skjer automatisk når JAVA sjøl vil av en lavprioritets tråd i bakgrunnen, men man kan gjøre klar til tømming på flere måter:
Arrays er organiserte samlinger av primitivs, objekt referanser eller andre arrayer.
For å lage og bruke en array må man:
Deklarasjon og konstruksjon på en linje:
int[]ints = new int[25;
Deklarasjon, konstruksjon og initialisering på en linje:
float[] diameters = {1.1f, 2.2f, 3.3f};
Deklarering: Man deklarerer elementtypen og navnet,
sammen med et par firkantparenteser,
bruker nøkkelordet new og gir en størrelse, slik:
int lock[];
lock = new int[25];
Eller på en linje slik:
int[] lock = new int[25];
Henter vi en array fra dos-promten som vi ikke veit lengden av kan vi skrive:
int lock[] = new int[args.length];
-Siden den alltid kommer som en String Array må vi caste den
til integer, slik:
for (i = 0; i < args.length; i++) {
lock[i] = Integer.parseInt(args[i]);
}
Vi bruker ofte for-løkker sammen med arrays, f.eks slik:
for (i = 0; i <lock.length; i++) {
sum += lock[i];
}
Her legger vi sammen alle tallene i arrayen.
Hvis vi skal referer til det første elementet i en allerede deklarert array lock skriver vi:
lock[0];
Hvis vi skal tilordne de første 3 elementene i arrayen lock
en verdi, f.eks tallene 5, 4 og 9 skriver vi:
lock[0] = 5;
lock[1] = 4;
lock[2] = 9;
Man kan også skrive:
int lock = (5, 4, 9), men da får arrayen bare de tre verdiene.
Vi kan også lage en array av objekter. En array av 7 kanneobekter som vi kaller kjøkkenSkap vil se slik ut:
kanne kjøkkenSkap[] = new kanne[6];
Hvis vi skal sende arrayen lock til en metode som parameter skriver vi arrayens navn UTEN parenteser, slik;
minMetode(t);
En array av boolean blir automatisk initialisert til false.
Konstruktøren har alltid samme navn som klassen, og ingen
returverdi.
Eksempel: Hvis klassen heter Kanne - public class Kanne
så vil kostruktøren se slik ut:
Kanne(en eller flere parameter) {
// en eller flere komandoer
}
int j;
if (j= =0) {
l = 1.0;
}
else if(j= =1) {
l = 1.5;
}
else if(j= =2) {
l = 2.0;
}
else {
System.out.println("Dette gikk i dass");
}
if (temp <-50) {
System.out.println("Veldig kaldt!");
}
else {
System.out.println("Varmere enn - 50");
}
int temp;
if (temp <-50) {
System.out.println("VELDIG sjelden det er så kalt.");
}
else if (temp <=0) {
System.out.println("Vannet fryser");
}
else {
System.out.println("Plussgrader");
int i = 4; //f.eks
while (i <=6) {
i++;
System.out.println(" + i + " Geir Sundet " + i );
}
Merk: Det er ikke lov å deklarere variabelen inne i parantesen etter while, slik vi gjør i for-løkker.
int i;
do {
System.out.println( i );
i++;
}
while (i <59);
Merk: Variabelen må deklareres og tilordnes utenfor betingelsen.
int i = 0;
for (i = 0; i <object.length; i++) {
sum = intTall1 * i;
System.out.println("--------------------");
}
Merk: Fullt lovlig å deklarere variabelen i parantesen etter do, slik:
for(int i = 0; i < object.length; i++) osv...
Se også Arrays
switch (wash)
{
case 1:
j = 1.0;
break;
case 2:
j = 1.5;
break;
case 3:
j = 2.0;
break;
default:
System.out.println("Dette gikk i dass");
}
cd mysql
cd bin
mysql
show databases; //viser tilgjengelige databaser
use NavnetPåDatabasen //åpner spesifisert database
create database sample_db; //oppretter db som heter sample_db
show tables;
create table user; //oppretter en tabell som heter user
Man kan kjøre sql-setninger fra tilgjengelige tabeller, f.eks:
select * from kontakt //hvor kontakt er en av tabellene
Arv. arv Power Point
I ei pakke har vi et hovedobjekt,
men flere spesialiserete underobjekter som arver egenskaper og metoder
fra det generelle hovedobjektet.
Feks
Bopel
//medlemsvariablene:
string betegnelse; //hva bopelen heter
int boligflate; //som sier seg sjøl
--------------------------------
toString () : String; // toString metode returnerer string
Bopel(String, int); // Constructor
---------------------------------
Alle objekter har en toString metode, fordi alle objekter er subklasser av Java's objektklasse og har arvet den. Vi lager en egen toString. Notasjonen String() : String betyr at den returnerer en string.
Med toString metoden kan alle objekter skrives ut slik: System.out.println(b); der b er et objekt b.
Ny subclass:
Telt
------------------------
// medlemsvariabler:
float vekt;
string dukType;
------------------------
toString() : String;
Telt(int, float,string); //Constructor
Bopel er nå er superklasse og Telt er en subclass.
Klassen Telt arver fra superklassen Bolig.
Vi kan også lage Leilighet, Campingvogn og Caravan som subklasser
til Bolig.
Når vi lager constructor vil ikke Java lage default constructor for oss. Derfor er det viktig å lage en default constructor selv.
F.eks:
public Bopel() {
betegnelse = "Ukjent";
boareal = 0;
}
For å lage en subclass Telt i pakka oopDemo start fila med:
no itat.student.geir.oopDemo;
public class Telt extends Bopel {
float vekt;
public Telt(float vekt, int areal) { //(Constructor)
super("Telt", areal);
/*Kallet til superklassen må skje først. Merk at classenavnet
skal stå i "anførselstegna"*/
this.vekt = vekt;
/*this viser til medlemsvariabelen vekt, mens den andre er
parameteretvekt. Brukes inne i en metode*/
Overlasting og overkjøring.
Grafic User Interface lar oss lage et grafisk grensesnitt.
Bygger nesten i sin helhet på javax.swing klassen. Desuten på
java.awt. javax.swing er en videreutvikling av awt, de to klassene har
mye felles og javax.swing bruker mye fra java.awt. (abstract window
toolkit).
For å lage en grafisk applikasjon trenger vi et vindu,
JFrame
en instans av klassen JFrame
Oppå JFrame bruker vi en
container
som vi får tak på ved
getContentPane()
For å kontrollere hvordan ting fordeler seg i containeren brukes
en
Layout Manager
Vi kan f.eks bruke BorderLayout (andre finnes).
Den deler containeren i fem deler,
NORTH, EAST, WEST, SOUTH og CENTER.
Inni de forskjellige delene kan vi plassere objekter, f.eks
JRadioButton, JCheckBox, JButton.
//Vi arver som regel fra disse to :
import.javax.swing.*;
import.java.awt.*;
public class GUIDemo {
public static void main (String[] args) {
//Oppretter et JFrame objekt:
JFrame f = new JFrame ("GUIDemo");
//Objektet arver en masse Metoder:
f.setSize(400, 200); //sette størrelsen til 400 * 200
//metode for å stenge aplikasjonen:
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Vi kan opprette flere objekter:
Container c = f.getContentPane();
//Sette inn en ledetekst
c.add(new JLabel("Ledetekst"), BorderLayout.SOUTH);
JButton button = NewJButton("Trykk på meg!");
//legg til i containeren:
c.add(button, BorderLayout.NORTH); //Siste ledd
valgfritt, default er center.s
Med BorderLayout kan man bare ha en komponent i hver del, men ved å
bruke f.eks box kan vi legge flere komponenter i box og så plassere
boks f.eks i EAST.
Box radioBox = new Box(BoxLayout, Y_AXIS); // der Y_AXIS vi sette
elementene under hverandre. Fyll på med:
radioBoks.add(new JCheckBox("Sjekk 1"));
radioBoks.add(new JCheckBox("Sjekk 2"));
c.add(radioBoks, BorderLayout.EAST); //som plasserer boksen med alle checkBoxene i east
//Siden framen blir oppretta som skjult må den gjøres synlig,
og det må gjøres tilslutt.
f.setVisible(true);
}
}
== og != tester for likhet eller ulikhet og returnerer et boolsk true
eller false.
For primitive verdier sammenlikner man tallverdier, og
en float på 10.0 er lik en byte på 10.
For objekt variabler sammenlikner man objekt referansene,
IKKE innholdet i objektreferansene.
For å sammenlikne innholdet i objektreferanser bruker man metoden equals().
f.eks slik:
String s = "Marcus";
String s2 = new String("Marcus");
if(s.equals(s2)){
System.out.println("Halleluja, we have a match!");
}
else {
System.out.println("No match");
&, ^, og |
~
Brukes til å sammenlikne bits.
~ utfører bitwise inversion på integraler.
~ converterer alle 1 til 0 og alle 0 til 1.
Brukes ofte sammen med <<, >> og >>>
Regler:
&: 1 og 1 blir 1 Alt annet blir 0 |
1 AND 1 blir 1 |
^: 1 eller 0 blir 1 0 eller 1 blir 1 Alt annet blir 0 |
Bare 1 OG 0 blir 1 Kun ULIKE tall blir 1 |
|: 0 og 0 blir 0 Alt annet blir 1 |
1 OG hvaSomHelst blir 1 |
Disse operatorene kan også brukes på boolske operasjoner.
Regler:
&: Sant og Sant blir Sant Alt annet blir False |
Sant AND Sant blir Sant |
^: Sant eller False blir Sant False eller Sant blir Sant Alt annet blir False |
Bare Sant OG False blir Sant |
|: False og False blir False Alt annet blir Sant |
Sant OG hvaSomHelst blir Sant |
&& og || brukes til logiske AND og OR operasjoner på boolske typer.
For && må må BEGGE betingelsen være
true for at utrykket er true.
Hvis en den første betingelsen er falsk blir ikke den
andre testet. Utrykket er false.
For || må begge være False for at utrykket blir false.
Hvis en den første betingelsen er true blir ikke den andre
testet. Uttrykket er true.
+, -, ++, -- og ~ kalles unaty operatorer når de opptrer sammen med bare et tall.
++ betyr et opp
-- betyr et ned
~ bitwise inversion operator
Når en unary operator brukes på en Byte, short eller char
konverteres de automatisk til int.
Unntak: ++, --
~ konverterer alle 1 bits i binær verdi til 0 og alle 0 til 1.
+, -, *, /, %, <<, >>>, >>, &, ^, |
kalles binary operators når de opptrer sammen med to eller flere
tall.
Konverteringsregler:
Det eller de andre tallene konverteres til den høyeste (av long,
float og double). Hvis tallene er lavere enn int konverteres de til int.
&, ^, | se Bitwise Operators
<<, >>>, >> se Shift Operators
<<, >>>, >>
? :
tar 3 operander
Med denne kan vi kode if - else betingelser på ei linje,
slik:
Hvis a, b og c er int variabler, og x er boolean:
a = x ? b : c;
betyr
if (x) {
a = b;
}
else {
a = c;
}
Merk: Resultat type bestemmes ved kompilering, så hvis variablene er av forskjellig type gjelde vanlige konverteringsregler. Eks: hvis et argument er int og et er float, blir svaret float uansett om int'en blir valgt.