Første
Java basis serie, Planche nr. 32
Kursus Indhold

Udskrift af : Java basis

Planche 1 : Java basis

Planche 2 : Syntaks

Java er et friformat sprog.

Det er opbygget af sætninger og blokke.

Sætninger afsluttes af med ';' (Semikolon)

Blokke begynder med '{' og slutter med '}'

En blok indeholder kun sætninger.

En sætning kan være tom

Alle mellemrum, tab og nylinie behandles ens ("whitespace")

En blok starter SIDST på en linie. De næste linier rykkes et niveau ind, indtil en blok sluttes af.

Planche 3 : Kommentarer

Kommentarer betragtes som mellemrum

To former:

Dertil kommer visse krav til INDHOLDET af kommentarerne, hvis man ønsker at anvende automatisk dokumentation (javadoc)

Planche 4 : Variable

Planche 5 : Primitive datatyper

Type Size/Format Description
(integers)
byte 8-bit two's complement Byte-length integer
short16-bit two's complementShort integer
int32-bit two's complementInteger
long64-bit two's complementLong integer
(real numbers)
float32-bit IEEE 754Single-precision floating point
double64-bit IEEE 754Double-precision floating point
(other types)
char16-bit Unicode characterA single character
booleantrue or falseA boolean value (true or false)

Planche 6 : Referencevariable

(Mere om det senere)

Planche 7 : Variabelnavne

Konvention:

Planche 8 : Definitionsområde (Scope)

4 kategorier:

Planche 9 : Definitionsområder (2)

Planche 10 : Variabel erklæring

int i;

java.awt.Button afslutteKnap;

int taeller = 0;

java.lang.String tekst = "Dette er en tekst";

final int count = 0;

Planche 11 : Operatorer

3 typer Operator returnerer værdi: Grupper af operatorer

Planche 12 : Aritmetiske operatore

Operator Use Description
+ op1 + op2 Adds op1 and op2
- op1 - op2 Subtracts op2 from op1
* op1 * op2 Multiplies op1 by op2
/ op1 / op2 Divides op1 by op2
% op1 % op2 Computes the remainder of dividing op1 by op2

Operator Use Description
+ +op Promotes + to int if it's a byte, short, or char
- -op Arithmetically negates op

Operator Use Description
++ op++ Increments op by 1; evaluates to value before incrementing
++ ++op Increments op by 1; evaluates to value after incrementing
-- op-- Decrements op by 1; evaluates to value before decrementing
-- --op Decrements op by 1; evaluates to value after decrementing

Planche 13 : Relationer og betingelser

Operator Use Return true if
> op1 > op2 op1 is greater than op2
>= op1 >= op2 op1 is greater than or equal to op2
< op1 < op2 op1 is less than op2
<= op1 <= op2 op1 is less than or equal to op2
== op1 == op2 op1 and op2 are equal
!= op1 != op2 op1 and op2 are not equal

Planche 14 : '=' vs '=='

Java fælde:

boolean test = false;
if (test = true)
     System.err.println("Test er sand");
else
     System.err.println("Test er ikke sand");

Giver altid 'Test er sand' - hvorfor?

Planche 15 : Betingelsesoperatorer

Operator Use Returns true if
&& op1 && op2 op1 and op2 are both true, conditionally evaluates op2
|| op1 || op2 either op1 or op2 is true, conditionally evaluates op2
! ! op op is false
& op1 & op2 op1 and op2 are both true, always evaluates op1 and op2
| op1 | op2 either op1 or op2 is true, always evaluates op1 and op2

Planche 16 : Bitoperator

Operator Use Operation
>> op1 >> op2 shift bits of op1 right by distance op2
<< op1 << op2 shift bits of op1 left by distance op2
>>> op1 >>> op2 shift bits of op1 right by distance op2 (unsigned)
& op1 & op2 bitwise and
| op1 | op2 bitwise or
^ op1 ^ op2 bitwise xor
~ ~op2 bitwise complement

Planche 17 : Tildeling

Operator Use Equivalent to
+= op1 += op2 op1 = op1 + op2
-= op1 -= op2 op1 = op1 - op2
*= op1 *= op2 op1 = op1 * op2
/= op1 /= op2 op1 = op1 / op2
%= op1 %= op2 op1 = op1 % op2
&= op1 &= op2 op1 = op1 & op2
|= op1 |= op2 op1 = op1 | op2
^= op1 ^= op2 op1 = op1 ^ op2
<<= op1 <<= op2 op1 = op1 << op2
>>= op1 >>= op2 op1 = op1 >> op2
>>>= op1 >>>= op2 op1 = op1 >>> op2

Planche 18 : Udtryk

Et udtryk er en serie af variable, operatorer og metodekald, der resulterer i en værdi. Ex.:

Planche 19 : Operator precedens

postfix operators[] . (params) expr++ expr--
unary operators ++expr --expr +expr -expr ~ !
creation or castnew (type)expr
multiplicative* / %
additive+ -
shift<< >> >>>
relational< > <= >= instanceof
equality== !=
bitwise AND&
bitwise exclusive OR^
bitwise inclusive OR|
logical AND&&
logical OR||
conditional? :
assignment= += -= *= /= %= &= ^= |= <<= >>= >>>=

Planche 20 : Kontrolstrukturer

Planche 21 : Kontrolstrukturer (2)

Eksempel på while-struktur
import java.io.*;
public class Count {
    public static void countChars(Reader in) throws IOException {
    
        int count = 0;

        while (in.read() != -1)
            count++;
        System.out.println("Counted " + count + " chars.");
    }
    // ... Hovedmetode udeladt ...
}

blokstart ({) skrives pr. konvention sidst på linien. 1. position på næste linie indrykkes indtil afslutning af blok (}), som ophæver indrykning.

Planche 22 : Kontrolstrukturer (3)

4 forskellige slags kontrolstrukturer:
Statement Keyword
decision making if-else, switch-case
loop for, while, do-while
exception try-catch-finally, throw
miscellaneous break, continue, label: , return

Planche 23 : If-then og If-then-else

Definition    if (expression)
                   statement

Eksempel      if (DEBUG)
                   System.out.println ("DEBUG: x = " + x);
DEBUG er en bool-variabel og x en variabel, der kan udskrives.

Definition    if (expression)
                   statement
              else statement

Planche 24 : If-then-else eksempler

    . . .
    // response er enten OK eller CANCEL afhaengig
    // af, hvilken knap, der er trykket ned
    . . .
if (response == OK) {
    . . .
    // kode for OK aktion
    . . .
} else {
    . . .
    // kode for Cancel aktion
    . . .
}

Flere betingelser kan kaedes sammen:

int testscore;
char grade;

if (testscore >= 90) {
    grade = 'A';
} else if (testscore >= 80) {
    grade = 'B';
} else if (testscore >= 70) {
    grade = 'C';
} else if (testscore >= 60) {
    grade = 'D';
} else {
    grade = 'F';
}

Planche 25 : Switch-struktur

En kontrolstruktur som:
int month;
. . .
switch (month) {
case 1:  System.out.println("January"); break;
case 2:  System.out.println("February"); break;
case 3:  System.out.println("March"); break;
case 4:  System.out.println("April"); break;
case 5:  System.out.println("May"); break;
case 6:  System.out.println("June"); break;
case 7:  System.out.println("July"); break;
case 8:  System.out.println("August"); break;
case 9:  System.out.println("September"); break;
case 10: System.out.println("October"); break;
case 11: System.out.println("November"); break;
case 12: System.out.println("December"); break;
default: System.out.println("None of the above"); break;
}

Svarer til

int month;
. . .
if (month == 1) {
    System.out.println("January");
} else if (month == 2) {
    System.out.println("February");
. . .
// you get the idea
. . .

'break' afbryder en given case-aktion

'default:' tildeler en aktion til "alt andet".

Planche 26 : Loop-strukturer

for (initialization; termination; increment)
    statements

do {
    statements
} while (booleanExpression);

Planche 27 : break og continue

Man kan afbryde udførslen af en række sætninger, ved at give dem et navn (label) og så angive sætningen break med navnet efter.
navn: { Nogle udtryk
        break navn;
        Udtryk der ikke udføres
}
Man kan afbryde en loop-struktur, således at 'for' eller 'while' straks udføres, ved at give strukturen et navn og skrive continue navn.
public int indexOf(String str, int fromIndex) {
    char[] v1 = value;
    char[] v2 = str.value;
    int max = offset + (count - str.count);
  test:
    for (int i = offset + ((fromIndex < 0) ? 0 : fromIndex); i <=
max ; i++) {
        int n = str.count;
        int j = i;
        int k = str.offset;
        while (n-- != 0) {
            if (v1[j++] != v2[k++]) {
                continue test;
            }
        }    
        return i - offset;
    }
    return -1;
}
Hvis continue-strukturen udføres, startes forfra med næste værdi af i.

Planche 28 : return-struktur

Afslutter den metode, hvori udtrykket findes. Værdien af udtryk bliver metodens returværdi, og skal derfor være af samme type som metoden er erklæret til. Bruges, hvis metoden er erklæret 'void'

Planche 29 : Arrays

basistype navn []; basistype navn [] = { initialiserinsliste }

byte navn [] = { "L", "e", "i", "f" };

byte tomtNavn [] = new byte [10];

byte begyndBogstav = navn [0];

Planche 30 : String-type

String text = new String ("Tekst");

kan også skrives enklere:

String text = "Tekst" ;

String hilsen = "Hej " + navn + ", hvordan går det?" ;

Planche 31 : Pas på med objekter!

String svar = "Ok" ;
if (svar == "Ok") {
	System.err.println("Tekst er Ok");
} else {
	System.err.println("Tekst er IKKE Ok");
}
Denne kodestump giver "Tekst er IKKE Ok". Hvorfor?

Planche 32 : Det var det!


© 1999 BLA*net - Leif E. Andersen, leander@blanet.dk