'
Jerzy
Sobczyk
$
'
Jerzy
Sobczyk
$
Składnia
Operatory
+ - * / %
operatory arytmetyczne
! && ||
operatory logiczne
komentarze
// /* */ /** */
~ & | ^
operatory bitowe
litery
’A’..’Z’,’a’..’z’,’\udddd’
dddd>00C0
<<
przesunięcie w lewo
identyfikatory
pierwszy znak=’_’,’$’ lub litera, następne
>>
przesunięcie w prawo z roszerzeniem znaku dodatkowo ’0’..’9’
>>>
przesunięcie w prawo z uzupełnieniem zerami liczby dziesiętne
Ddddd (D 6= 0)
< > <= >= == !=
porównania
++ --
inkrementacja i dekrementacja
liczby ósemkowe
0dddd
= += -= *= /=
podstawienia
liczby szesnastkowe
0xddddd
&= |= ^= %=
podstawienia
liczby rzeczywiste
IEEE 754 (zapis z literami: E, F, D)
<<= >>= >>>=
podstawienia
? :
wyrażenie warunkowe
znaki
Unicode
(){}[];,.
inne
1
3
&
19
padziernika
1998
roku
W5
WWW
%
&
19
padziernika
1998
roku
W5
WWW
%
'
Jerzy
Sobczyk
$
'
Jerzy
Sobczyk
$
Typy proste
Znaki specjalne
typ
opis
\n
NL - nowa linia
\
kontynuacja
byte
8 bitowa liczba ze znakiem
\r
CR - początek wiersza
\\
”back slash”
short
16 bitowa liczba ze znakiem
\t
HT - tabulator
\’
apostrof
int
32 bitowa liczba ze znakiem
\f
FF - nowa strona
\"
cudzysłów
long
64 bitowa liczba ze znakiem
\ddd
znak o kodzie ósemkowym ddd
float
32 bitowa liczba rzeczywista ze znakiem
\xdd
znak o kodzie szenastkowym dd
double
64 bitowa liczba rzeczywista ze znakiem
\udddd
znak kodu Unicode dddd
char
16 bitowy znak kodu Unicode
boolean
wartość logiczna true lub false 2
4
&
19
padziernika
1998
roku
W5
WWW
%
&
19
padziernika
1998
roku
W5
WWW
%
'
Jerzy
Sobczyk
$
'
Jerzy
Sobczyk
$
Wartości początkowe
Inicjalizatory
class Abc {
0, null, false.
static int arr[] = new int[7];
Stałe
static { .... } // inicjalizator Abc() { .... } // konstruktor
}
public static final STAŁA=17
int a = 3 * b; // błąd!!
Przykłady:
int b = 4;
math.PI
Color.red
int c = 3 * d; // OK
Color.blue
static int d = 5;
5
7
&
19
padziernika
1998
roku
W5
WWW
%
&
19
padziernika
1998
roku
W5
WWW
%
'
Jerzy
Sobczyk
$
'
Jerzy
Sobczyk
$
Opakowania (wrappers)
Tablice
typy: Integer, Long, Float, Double, Character, Boolean Przykłady:
int[] a;
⇔ int a[];
byte[] f(int n);
⇔ byte f(int n)[];
Integer I = new Integer(123);
Character CH = new Character(’z’); for (i=0; i<a.length; i++) {
Double D = I.doubleValue();
a[i]=i;
String s = I.toString();
}
char[][]x = new char[14][];
StringBuffer buff;
x[0] = new char[7];
double d = Double.valueOf(buff.toString()).doubleValue(); 6
8
&
19
padziernika
1998
roku
W5
WWW
%
&
19
padziernika
1998
roku
W5
WWW
%
'
Jerzy
Sobczyk
$
'
Jerzy
Sobczyk
$
Zakres dostępu
Hierarchia klas tablicowych
public
Dowolna klasa niezależnie od tego do jakiego pa-Object
kietu należy ma prawo dostępu do zmiennych zde-finiowanych jako publiczne.
Array
A
private
Tylko obiekty klasy, która zdefiniowała tą zmienną mają prawo dostępu do niej. Nawet obiekty klas int[]
float[]
A[]
B
potomnych nie będą miały dostępu.
protected
Tylko obiekty klas definiujących zmienną i obiekty B[]
klas potomnych mają prawo dostępu.
(bez niczego)
Zmienna jest dostępna bez ograniczeń w ramach pakietu. (Jest to zakres domyślny.) 9
11
&
19
padziernika
1998
roku
W5
WWW
%
&
19
padziernika
1998
roku
W5
WWW
%
'
Jerzy
Sobczyk
$
'
Jerzy
Sobczyk
$
Klasy
Modyfikatory
/** Komentarz dokumentacyjny */
public class Klasa
extends Superklasa
final
Nie można zdefiniować klas potomnych.
implements Interfejs {
Klasa() { super(17); ... }
abstract
Nie można tworzyć obiektów danej klasy.
Klasa(int i) { this(); j=i; ...}
native
Metoda zaimplementowana w innym języku.
void finalize() { ... }
synchronized
Klasa jest jest monitorem Hoare.
static public void main(String[] args) {...}
}
10
12
&
19
padziernika
1998
roku
W5
WWW
%
&
19
padziernika
1998
roku
W5
WWW
%
'
Jerzy
Sobczyk
$
'
Jerzy
Sobczyk
$
Instrukcje
Dziedziczenie
if (...) ... else ...
Najczęściej używane klasy bazowe: switch (..) { case ..: ... default: ... }
Object
tylko elementarne własności
break ...;
continue ...;
Applet
aplety dla WWW
return ...;
Thread
wątki współbieżne
for (...; ...; ...) ...
Panel
interfejsy użytkownika
while (...) ...
do ... while (...);
13
15
&
19
padziernika
1998
roku
W5
WWW
%
&
19
padziernika
1998
roku
W5
WWW
%
'
Jerzy
Sobczyk
$
'
Jerzy
Sobczyk
$
Wyjątki
Interfejsy
class UjemnyWyjątek extends Exception {
metody
}
public abstract
...
zmienne
final public static
int f(int i) throws UjemnyWyjątek {
interface Superinterfejs {
if (i < 0)
public int f();
throw new UjemnyWyjątek
}
}
interface Interfejs extends Superinterfejs {...}
...
class Klasa implements Interferjs {
try {
public int f() {...}
f(k);
}
} catch (UjemnyWyjątek e) {
}
14
16
&
19
padziernika
1998
roku
W5
WWW
%
&
19
padziernika
1998
roku
W5
WWW
%
'
Jerzy
Sobczyk
$
'
Jerzy
Sobczyk
$
Wątki
Łańcuchy
class X implements Runnable {
public void m() {
StringBuffer sb = new StringBuffer( "Cześć!" ); Thread t = new Thread();
String s = sb.toString();
t.target = this;
char c;
t.start();
}
while ((c = (char) System.in.read()) != -1) public void run() {
sb.appendChar(c);
// treść wątku
}
}
17
19
&
19
padziernika
1998
roku
W5
WWW
%
&
19
padziernika
1998
roku
W5
WWW
%
'
Jerzy
Sobczyk
$
'
Jerzy
Sobczyk
$
Wątki
Prosty program
start()
uruchomienie wątku
class Echo {
stop()
zakończenie działania wątku
static public void main(String args[]) {
suspend()
zawieszenie wątku
int i = 0;
while (i < args.length) {
resume()
wznowienie wątku
System.out.println("Arg[" + i + "]=" + args[i++]); sleep()
zawieszenie się wątku na określony czas wait()
oczekiwanie na zdarzenie
}
notify()
wygenerowanie zdarzenia
}
notifyAll()
poinformowanie wszystkich wątków
}
18
20
&
19
padziernika
1998
roku
W5
WWW
%
&
19
padziernika
1998
roku
W5
WWW
%
'
Jerzy
Sobczyk
$
'
Jerzy
Sobczyk
$
Najprostszy aplet - plik HTML
<HTML>
Prosty program - rezultaty
<HEAD>
<TITLE> A Simple Program </TITLE> dss<jurek>(98)$ javac Echo.java
</HEAD>
dss<jurek>(99)$ java Echo a1 b2 c3
<BODY>
Arg[0]=a1
Arg[1]=b2
Here is the output of my program: Arg[2]=c3
<APPLET CODE="HelloWorld.class" WIDTH=150 HEIGHT=25>
</APPLET>
</BODY>
</HTML>
21
23
&
19
padziernika
1998
roku
W5
WWW
%
&
19
padziernika
1998
roku
W5
WWW
%
'
Jerzy
Sobczyk
$
'
Jerzy
Sobczyk
$
Najprostszy aplet - rezultat
Najprostszy aplet
dss<jurek>(99)$ appletviewer HelloWorld.html import java.applet.Applet;
import java.awt.Graphics;
public class HelloWorld extends Applet {
public void paint(Graphics g) {
g.drawString("Hello world!", 50, 25);
}
}
22
24
&
19
padziernika
1998
roku
W5
WWW
%
&
19
padziernika
1998
roku
W5
WWW
%
'
Jerzy
Sobczyk
$
'
Jerzy
Sobczyk
$
AWT
Cykl życiowy apleta
class Component {
Akcja
metoda
public void repaint() {}
przeglądarka pobiera aplet
init()
użytkownik otwiera stronę
start()
użytkownik opuszcza stronę
stop()
class XXX extends Component {
repaint()
użytkownik opuszcza przeglądarkę destroy()
public void paint(Graphics g){}
25
27
&
19
padziernika
1998
roku
W5
WWW
%
&
19
padziernika
1998
roku
W5
WWW
%
'
Jerzy
Sobczyk
$
'
Jerzy
Sobczyk
$
Program - aplet
public class Świder extends Applet {
public void init() { resize(200,60); }
Układacze
public void paint(Graphics g) { ..... }
public static void main(String args[]) {
• BorderLayout
•
Świder s = new Świder();
CardLayout
• FlowLayout
s.init();
• GridLayout
Frame f = new Frame("Ni pies ni wydra"};
• GridBagLayout
f.resize(200,60);
f.add("Center", s);
f.show();
}
}
26
28
&
19
padziernika
1998
roku
W5
WWW
%
&
19
padziernika
1998
roku
W5
WWW
%
'
Jerzy
Sobczyk
$
'
Jerzy
Sobczyk
$
BorderLayout
CardLayout
29
31
&
19
padziernika
1998
roku
W5
WWW
%
&
19
padziernika
1998
roku
W5
WWW
%
'
Jerzy
Sobczyk
$
'
Jerzy
Sobczyk
$
BorderLayout
CardLayout
import java.awt.*;
import java.awt.*;
import java.applet.Applet;
import java.applet.Applet;
public class Border extends Applet {
public class Card extends Applet {
public void init() {
Panel w = new Panel();
setLayout(new BorderLayout());
add("North", new Button("North")); public void init() {
add("South", new Button("South")); Choice c = new Choice();
add("East", new Button("East")); add("West", new Button("West")); w.setLayout(new CardLayout());
add("Center", new Button("Center")); w.add("One", new Label("jeden"));
}
c.addItem("One");
}
w.add("Two", new Label("dwa")); 30
32
&
19
padziernika
1998
roku
W5
WWW
%
&
19
padziernika
1998
roku
W5
WWW
%
'
Jerzy
Sobczyk
$
'
Jerzy
Sobczyk
$
c.addItem("Two");
FlowLayout
w.add("Three", new Label("trzy")); c.addItem("Three");
import java.awt.*;
add(c);
import java.applet.Applet;
add(w);
public class Flow extends Applet {
}
Button raz, dwa, trzy;
public void init() {
public boolean action(Event evt, Object arg) {
raz
= new Button("Raz");
if (evt.target instanceof Choice) {
dwa
= new Button("Dwa");
((CardLayout)w.getLayout()).show(w,(String)arg); trzy = new Button("Trzy"); return true;
add(raz);
}
add(dwa);
return false;
add(trzy);
}
}
}
}
33
35
&
19
padziernika
1998
roku
W5
WWW
%
&
19
padziernika
1998
roku
W5
WWW
%
'
Jerzy
Sobczyk
$
'
Jerzy
Sobczyk
$
FlowLayout
GridLayout
34
36
&
19
padziernika
1998
roku
W5
WWW
%
&
19
padziernika
1998
roku
W5
WWW
%
'
Jerzy
Sobczyk
$
GridLayout
import java.awt.*;
import java.applet.Applet;
public class Grid extends Applet {
public void init() {
setLayout(new GridLayout(3,2)); add(new Button("1")); add(new Button("2")); add(new Button("3")); add(new Button("4")); add(new Button("5")); add(new Button("6"));
}
}
37
&
19
padziernika
1998
roku
W5
WWW
%
'
Jerzy
Sobczyk
$
GridBagLayout
38
&
19
padziernika
1998
roku
W5
WWW
%