background image

Programowanie.

Wykład 2. Podstawy języka.

Mgr.inż. Aleksander Bielski

alex@iis.pwsz.elblag.pl

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

1

background image

Program wykładu

1) Pliki źródłowe
2) Unicode 
3) Podstawowe elementy języka

słowa kluczowe

komentarze

Identyfikatory
literały

typy

zmienne

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

2

4) Operatory:

Priorytet
Klasyfikacja

Operatory numeryczne

Operatory bitowe

Operatory logiczne i wyrażenia 

logiczne

background image

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

3

Pliki źródłowe: przykład

// deklaracja pakietu 

package exam.prepguide; 
 

// istrukcje importu

 

import java.awt.Button; 

// dokładnie wskazana 

klasa

import java.util.*; 

// import całego pakietu

 

// definicja klasy 

public class Test {...}

background image

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

4

Pliki źródłowe

musi istnieć minimum jedna nazwa klasy 

publicznej w pliku

nazwa pliku źródłowego musi być taka jak 

nazwa klasy publicznej

plik musi mieć rozszerzenie 

.java

Elementy pliku źródłowego wg kolejności:

deklaracja pakietu

instrukcje importu

definicje klas

background image

Unicode 

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

5

Programy w Javie używają kodowania Unicode, obecnie 

wersji 2.1

Informacje o kodowaniu Uicode można znaleźć na stronach:

http://www.unicode.org

 i 

ftp://unicode.org

Poza kilkoma wyjątkami wszystkie elementy programu w 

Javie składają się wyłącznie z symboli kodu ASCII (lub 

sekwencji escape Unicode)

Uwaga: pierwsze 128 znaków kodu Unicode to znaki kodu 

ASCII.

background image

Unicode – etapy translacji 

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

6

1. Translacja  sekwencji  escape    z  potoku  znaków  do 

odpowiadających znaków Unicode. Sekwencja escape to 
ciąg  postaci 

/uxxxx

,  gdzie  xxxx  jest  wartością 

szestnastkową.

2. Translacja  strumienia  znaków  Unicode  (wynik  pkt.  1)  na 

strumień symboli końca linii i znaków wejściowych.

3. Translacja strumienia (wynik pkt. 2) na tokeny i symbole 

terminalne (po odrzuceniu “białych symboli)

background image

Unicode – etapy translacji c.d.

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

7

Uwaga:
W każdym kroku jest wykonywana najdłuższa z możliwych 

translacja,  nawet  gdy  w  wyniku  nie  powstanie  poprawny 

program.

Przykład:
Wejściowy  ciąg  znaków 

a--b

 zostanie  przetworzony  na:

 

a

--

b

,  co  nie  jest  częścią  gramatycznie  poprawnego 

programu w Javie.

background image

Symbole końca linii (terminatory linii)

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

8

1. Znak kodu ASCII  LF (Line Feed) – symbol nowej linii

2. Znak kodu ASCII CR (Carridge Return)

3. Sekwencja zawierająca dwa znaki  CR LF

background image

Komentarze

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

9

/* tekst */ 

  - tradycyjny komentarz: wszystko od znaków ASCII 

/

*

 do znaków ASCII 

*/

 jest ignorowane (podobnie jak w C i C++).

// 

tekst  - Komentarz w jednej linii: wszystko od znaków ASCII 

//

 

do końca linii jest ignorowane (podobnie jak w C++).

/** documentation */ 

- Komentarz dokumentacyjny, może być 

używany do tworzenia dokumentacji kodu przy użyciu  narzędzia 
javadoc. Opis elementów formatujących można znaleźć w 
dokumentacji do programu javadoc.

background image

Słowa kluczowe i zarezerwowane

Następujące  wyrazy  składające  się  ze  znaków  kodu  ASCII  są  w 
Javie zarezerwowane i nie mogą być używane jako identyfikatory:

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

10

abstract    

default    

if            

private      

this

boolean     

do         

implements     protected    

throw

break       

double    

import        

public       

throws

byte        

else       

instanceof     return       

transient

case        

extends    

int           

short        

try

catch       

final      

interface     

static       

void

char        

finally    

long          

strictfp     

volatile

class       

float      

native        

super        

while

const       

for        

new           

switch

continue    

goto       

package        synchronized

background image

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

11

Identyfikatory

Identyfikator

 – jest wyrazem używanym przez programistę do 

nadania nazwy zmiennej, metodzie, klasie lub etykiecie.

Slowa kluczowe i zarezerwowane 

nie mogą być 

identyfikatorami.

Identyfikator musi się zaczynać od litery, znaku dolara ($) lub 

symbola podkreślenia (_). Każdy następny znak może być literą, 

znakiem doalara, podkreslenia lub cyfrą.

background image

Identyfikatory - przykłady

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

12

1) Bleble                 // prawidłowa
2) BIG

interface

// prawidłowa

3) $toWaluta

// prawidłowa

4) 3_element5

// nieprawidłowa

5) !theCase

// nieprawidłowa – zły pierwszy znak

6) NO

true

// prawidłowa

background image

Typy w Javie

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

13

Dokładne sprawdzanie typów w czasie kompilacji : zalety i wady

Dwa rodzaje typów w Javie:

a)Proste lub podstawowe 

b)Referencyjne  

background image

Typy podstawowe

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

14

boolean (logiczne)

numeryczne

background image

Typy podstawowe

typ 

rozmiar

klasa

boolean 

Boolean 

char 

16 

Character 

byte 

Byte 

short 

16 

Short 

int 

32 

Integer 

long 

64 

Long 

float 

32 

Float 

double 

64 

Double 

void 

Void

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

15

background image

Typy referencyjne

Klasa - 

class

interfejs – 

interface

Tablicowy – 

array

Uwaga:

typ specjalny  - 

null

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

16

background image

Typy podstawowe c.d. 

Zmienne  typów  całkowitych  mogą  przyjmować 

wartości w zakresie:

byte: 

od  -128 

do 

127

short

od -32768 

do 

32767

int

od -2147483648 

do 2147483647

long

od -9223372036854775808L 

do 9223372036854775807L

char

od '\u0000' 

do '\uffff' 

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

17

background image

Typy podstawowe c.d.

float

 – (4 bajty spec. IEEE 754), wartości w przedziale 

od 1.40239846e-45f do 3.40282347e+38f

  

double

 -  (8  bajtów  spec.  IEEE  754),  wartości  w 

przedziale  od  4.94065645841246544e-324d    do 

1.79769313486231570e+308d

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

18

background image

Zmiennoprzecinkowe stałe

Float.NaN   
Float.NEGATIVE_INFINITY

Float.POSITIVE_INFINITY

Double.NaN

Double.NEGATIVE_INFINITY

Double.POSITIVE_INFINITY

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

19

background image

Zmiennoprzecinkowe stałe: zastosowanie

double d = -10.0 / 0.0; 

if (d == Double.NEGATIVE_INFINITY) { 

 System.out.println( d just exploded:   + d); 

}

W  tym  przykładzie  warunek  w  linii  drugiej  jest 

spełniony, dlatego zostaje wykonana linia 3

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

20

background image

Literały

Literał

 –  oznacza  wartość  podaną  w  kodzie 

źródłowym  programu  (w  przeciwieństwie  do 
wartości obliczanej w czasie wykonywania).

zmienne typów postawowych
łańcuchy znakowe
Wartość null

mogą się pojawiać: 

po prawej stronie znaku przypisania (P-value)
w wywołaniu metody

nie można do literała przypisać innej wartości

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

21

background image

Literały: przykłady

boolean isBig = true; 
boolean isLittle = false;
char c = 'w';
char c1 = '\u4567';
String s = “Symbole w łancuchach tekstowych 

są w 16-bitowym kodzie Unicode”;

float zm = 0.34f;
long

liczba = 197L ;

int i = 13;
byte b = i; //błąd kompilacji

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

22

background image

Literały c.d.

Java  obsługuje  kilka  sekwencji  do  oznaczenia 

znaków specjalnych:

'\n'

  - znak nowej linii

'\r'

 - for return

'\t'

 – znak tabulacji

'\b'

 - backspace    

'\f'

 - formfeed    

'\''

 - apostrof  

'\”'

 - cudzysłów

'\\'

 - backslash

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

23

background image

Literały liczbowe

notacja dziesiętna: domyślna

ósiemkowa : zaczyna się od 

0

 (zera)

szestnastkowa:  zaczyna  się  od 

0x

 lub 

0X

Przykład: liczba 28 (dwadzieścia osiem):

  

28   034   0x1c   0x1C   0X1c   0X1C

28L 034L 28f 28.0 28d 2.8e+1

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

24

background image

Literały liczbowe typu int

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

25

System

Max

Min

Dziesiętny
Ósiemkowy

017777777777

020000000000

Szestnastkowy

0x7fffffff

0x80000000

2147483647 (2

31

-1) -2147483648 (2

31

)

Wartości dziesiętnej -1 odpowiadają w systemach szestnastkowym i 
ósiemkowym literały 0xffffffff i 037777777777.

Przykłady:

0    

2   

0372      0xDadaCafe

1996

0x00FF00FF

background image

Literały liczbowe typu long

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

26

Wartości dziesiętnej -1 odpowiadają w systemach szestnastkowym i 
ósiemkowym 

literały 

0xffffffffffffffffL

 i 

01777777777777777777777L.

Przykłady:

0l

0777L

0x100000000L

2147483648L    0xC0B0L

System

Max

Min

Dziesiętny
Ósiemkowy

0777777777777777777777L

01000000000000000000000L

Szestnastkowy 0x7fffffffffffffffL

0x8000000000000000L

9223372036854775807L (2

63

-1)

- 9223372036854775808L (2

63

)

background image

Literały liczbowe zmiennoprzecinkowe

(dodatnie)

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

27

Typ

Max

Min

Float

3.40282347e+38f

1.40239846e-45f

Double 1.79769313486231570e+308 1.79769313486231570e+308

Uwaga:
litera d jest opcjonalna, domyślnie przyjmowany jest typ double

Przykłady (float):

1e1f     2.f

.3f

0f

3.14f

6.022137e+23f

Przykłady (double):

1e1

2.

.3

0.0

3.141e-9d

1e137

background image

Literały logiczne, znakowe i null

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

28

typu logicznego (boolean):  

2 wartośći : 

true

 i 

false

literał null:

null

typu znakowego (char):

śą zapisywane w apostrofach 

'

pojedynczy znak  (z wyjątkiem apostrofa 

'

 

i backslash 

\

 )

sekwencja 

escape

Przykłady:

'a'

'%'

'\t'

'\\'

'\''

'\u03a9'

'\uFFFF'

'\177'

''

''

background image

Literały tekstowe (łańcuchy) 

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

29

Zawierają zero lub więcej znaków ujetych w cudzysłowy. Każdy 
znak może być reprezentowany sekwencją escape.

Uwaga:
Symbole LF i CR nie mogą się znajdować wewnątrz literału 

tekstowego (są to symbole terminujące).

Przykłady:

'"

// pusty łańcuch

"\""

// łańcuch zawierający cudzysłów

"To jest łańcuch"
"To jest tekst " +
"umieszczony w dwoch liniach."

background image

Literały tekstowe - przykład 

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

30

package testPackage;
class Test {

public static void main(String[] args) {

String hello = "Hello", lo = "lo";

1.

System.out.print((hello == "Hello") + " ");

2.

System.out.print((Other.hello == hello) + " ");

3.

System.out.print((other.Other.hello == hello) + " ");

4.

System.out.print((hello == ("Hel"+"lo")) + " ");

5.

System.out.print((hello == ("Hel"+lo)) + " ");

6.

System.out.println(hello == ("Hel"+lo).intern());

}

}
class Other { static String hello = "Hello"; }

background image

Literały tekstowe - przykład c.d.

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

31

package other;
public class Other { static String hello = "Hello"; }

Wynik wykonania przykładowego  programu:

true true true true false true

Uwaga: program znajduje się w katalogu p1

background image

Literały tekstowe – kilka reguł 

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

32

1)Literały tekstowe 

tej samej klasy

 znajdujące się 

tym samym  

pakiecie

 reprezentują referencję do tego samego obiektu String.

2)Literały tekstowe 

różnych klas

 znajdujące się 

tym samym  

pakiecie

 reprezentują referencję do tego samego obiektu String.

3)Literały tekstowe 

różnych klas 

znajdujące się w 

różnych 

pakietach

 również reprezentują referencję do tego samego 

obiektu String.

background image

Literały tekstowe – kilka reguł c.d. 

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

33

4)Łańcuchy tekstowe obliczane na podstawie wyrażenia stałego są 

obliczane w czasie kompilacji i są traktowane  jak literały.

5)Łańcuchy tekstowe obliczane w czasie wykonywania programu 

są  ponownie tworzone i dlatego różnią się

6)W wyniku wywołania metody 

intern()

 zwracany jest łańcuch z 

unikalnej  puli łańcuchów tekstowych o tej samej zawartości. 

background image

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

34

Separatory – jeden z 9 znaków:

(

)

{

}

[

]

;
,
.

background image

Zmienne

Zmienna oznacza miejsce w pamięci. 
Zmienne  typu  podstawowego  zawsze  zawierają 
wartości dokładnie tego typu. 
Zmienna  klasy  T  może  zawierać  referencję  o 
wartości  null  lub  referencję  do  obiektu 
klasy T lub obiektu klasy pochodnej od klasy 

T.
  Zmiena  typu  interfejs  może  zawierać 
referencję  null  lub  referencję  do  dowolnego 
obiektu  dowolnej  klasy  która  implementuje 
ten interfejs.

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

35

background image

Zmienne c.d.

Jeśli  T  jest  typem  podstawowym,  to  zmienna 
typu  “array  of  T”  (“tablica  elementów  typu 
T”) może być wartością null lub referencją do 
dowolnej tablicy typu "array of T".
Jeśli  T  jest  typem  referencyjnym,  wtedy 
zmienna typu “array of T” (“tablica elementów 
typu  T”)  może  być  wartością  null  lub 
referencją do dowolnej tablicy typu "array of 

S",  gdzie  typ   jest  typem,  który  może  być 
przypisywany do typu T.
Zmienna  typu  Object  może  zawierać  wartość 
null  lub  referencję  do  dowolnego  obiektu  lub 
tablicy.

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

36

background image

Zmienne – wartości domyślne

Byte   -  (byte)0 

Short  -  (short)0 

Int  

-  0

long

- 0L 

float

- 0.0f  (dodatnie) 

double -  0.0d  (dodatnie)

char

- '\u0000'

boolean -  false

dla wszystkich typów referencyjnych  - null

przyklad: p4/Test.java

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

37

background image

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

38

Operatory wg kolejności wykonywania:

 

Unarne:

++

- -

+   - !

~

( )

Arytmetyczne:

 

-  

przesunięcie:

<<  

>>  

>>>

porównanie:

 < 

<= 

>= 

instanceof

== 

!=

bitowe:

 

|

logiczne:

&&

||

warunkowy:

?:

przypisania:

=

background image

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

39

Operatory – działania skrócone

 

+=
-=

*=
/=
&=
|=
^=
%=
<<=
>>=
>>>=

background image

Reguły obliczania

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

40

Kolejność obliczania wyrażeń ściśle określona
obliczenia odbywają się w kierunku od lewej do prawej 

int [] a = { 4, 4 }; 
int b = 1; 
a[b] = b = 0;

Pytanie:
Jaki jest wynik wykonywania kodu?:

background image

Reguły obliczania c.d.

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

41

Zasada  od  lewej  do  prawej  wymaga,  żeby  najpierw  pobrać  i  obliczyć 

operandy

zaczynamy od  

a[b]

 otrzymamy referencję do elementu 

a[1]

.

obliczamy wyrażenie

 b

, którego wartością jest referencja do 

b

pobieramy wyrażenie 

0

, którego wartością jest stała 

0

Teraz przeprowadzamy operacje w kolejności priorytetów:

wartość 

0

 jest przypisana do zmiennej 

b

wartość 

0

 jest przypisana do elementu tablicy 

a

background image

Reguły obliczania: zmiennoprzecinkowe

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

42

Jeśli co najmniej jeden operand jest typu zmiennoprzecinkowego, to 
operacja  jest  również  zmiennoprzecinkowa  nawet  jeżeli  pozostałe 

operandy należą do typów całkowitych
Jeśli  co  najmniej  jeden  operand  jest  typu    double,  wtedy  wynik 
operacji  jest  obliczany  z  użyciem  64  bitowej  arytmetyki  i  jest 
również typu double.

Przykład: 
program 

p2/Test.java

background image

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

43

Reguły obliczania: całkowite

Jeśli co najmniej jeden operand jest typu long, wtedy 

wynik  operacji  jest  obliczany  z  użyciem  64  bitowej 

arytmetyki  i  wynik  jest  typu  long.  Nie  dotyczy  to 

operacji przesunięcia.

Przykład:   program 

p3/Test.java

background image

Przykład: int i long

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

44

class Test {

public static void main(String[] args) {

int i = 1000000;
System.out.println(i * i);

long l = i;
System.out.println(l * l);
System.out.println(20296 / (l - i));

}

}

background image

Wynik

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

45

-727379968
1000000000000

Exception in thread "main" 

java.lang.ArithmeticException: / by zero

background image

Operatory

porównania – wynik operacji to wartość typu boolean
numeryczne – wynik jest typu intlong, float, double
warunkowy  

? :

 

rzutowania  –  umożliwia  konwersję  typów    na    wskazany 

typ 
plus łańcuchowy 

+

 : jeżeli łączy dwa operandy – pierwszy 

typu  String  i  drugi  typu  całkowitego  najpierw  konwertuje 
operand  typu  całkowitego  na  typ  String  (reprezentacja 

dziesiętna)  i  następnie  tworzy  nowy  element  typu  String, 

który jest konkatenacją (sumą)  tych dwóch łańcuchów.

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

46

background image

Operatory porównania

numeryczne operatory porównania:

 

<=

>  

>= 

Typ każdego z operandów -  numeryczny
Automatyczne  “binarne dopasowanie” operandów 

numeryczne operatory równości:

 

== 

!= 

Typ każdego z operandów -  numeryczny
Automatyczne  “binarne dopasowanie” operandów 

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

47

background image

Numeryczne operatory porównania 

<, <= , >, >=

Wynik porównania wartości zmiennoprzecinkowych wg  IEEE 754:

Jeżeli  jeden  z  operandów  jest  NaN  (Not-a-Number),  to  wynik  jest 

false.
Pozostałe  wartości  różne  od  NaN  są  uporządkowane  od 

nieskończoności  ujęmnej  (mniejsza  od  minimalnej  granicy)  do 
nieskończoności dodatniej (większa od maksymalnej granicy)
Zero dodatnie i ujemne są równe, tzn wynik -0.0<0.0 jest false, oraz 
-0.0<=0.0 jest true

Uwaga:  Metody  Math.min  i  Math.max  traktują  ujemne  zero  jako 

mniejsze od zera dodatniego.

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

48

background image

Numeryczne operatory porównania c.d.

Wynik  operatora 

<

 jest  true  jężeli  wartość  operanda  lewego  jest 

mniejsza od wartości operanda po prawej stronie, inaczej jest false
Wynik operatora 

<=

 jest true jężeli wartość operanda lewego jest 

mniejsza lub równa  wartości operanda po prawej stronie, inaczej 
jest false
Wynik  operatora 

>

 jest  true  jężeli  wartość  operanda  lewego  jest 

większa od wartości operanda po prawej stronie, inaczej jest false
Wynik operatora 

>=

 jest true jężeli wartość operanda lewego jest 

większa  lub  równa    wartości  operanda  po  prawej  stronie,  inaczej 
jest false

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

49

background image

operatory porównania: przykład

Są następujące deklaracje:

int p = 9; 
int q = 65; 
int r = -12; 
float f = 9.0F; 
char c = 'A'; 

wszystkie poniższe testy zwracają true: 

p < q 
f < q 
f <= c 
c > r 
c >= q

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

50

background image

Numeryczne operatory równości 

==,  !=

Jeśli dowolny z operatorów jest NaN, wynik == jest false, 

natomiast wynik !=  jest true. 

Wynik  x!=x  jest  true  tylko  jeżeli  wartość  x  jest  NaN. 

(Metody Float.isNaN i Double.isNaN mogą również być 

użyte do testowania czy wartośćjest NaN.) 

Dodatnie  zero  i  ujemne  zero  są  równe.  Na  przykład, 

-0.0==0.0 jest true

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

51

background image

Numeryczne operatory równości c.d.

Wynik operatora 

==

 jest true jężeli wartość operanda lewego jest 

równa wartości operanda po prawej stronie, inaczej jest false

Wynik  operatora 

!=

 jest  true  jężeli  wartość  operanda  lewego  nie 

jest równa wartości operanda po prawej stronie, inaczej jest false

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

52