GRY-Online.pl --> Archiwum Forum

Problem z JAVA- prosze o pomoc.

14.02.2006
20:30
smile
[1]

sasquath_ [ Konsul ]

Problem z JAVA- prosze o pomoc.

witam , czy moglibysie wyjasnic co robi ten program. wiem jaki jest wynik tylko nie rozumiem na czym polegaja operatory (&). dzieki wielkie

public class Bits ‹

static final short READY = 1;
static final short PROCESSING = 2;
static final short RECOVERING = 4;
static final short ERROR = 8;

static final String READY_STRING = "ready to receive requests";
static final String PROCESSING_STRING = "processing a request";
static final String RECOVERING_STRING = "error recovery in progress";
static final String ERROR_STRING = "unrecoverable error occurred";

public static void main(String[] args) ‹
short status = 5;

if ((status & READY) == READY) ‹
System.out.println(READY_STRING);

if ((status & PROCESSING) == PROCESSING) ‹
System.out.println(PROCESSING_STRING);

if ((status & RECOVERING) == RECOVERING) ‹
System.out.println(RECOVERING_STRING);

if ((status & ERROR) == ERROR) ‹
System.out.println(ERROR_STRING);



14.02.2006
20:44
[2]

draczeek [ Kjerofca Bąbofca ]

& w języku java to "iloczyn bitowy"

co to oznacza w przypadku tego programiku (chyba do obsługi komunikatów błędów) - nie wiem

niech ktoś mi lepiej wyjaśni co oznacza linia
public static void main(String[] args) ‹

14.02.2006
20:54
[3]

jiser [ generał-major Zajcef ]

Operator & to iloczyn binarny. Każde zapytanie wycina ze zmiennej status poszczególne jej bity (poszczególne stałe są kolejnymi potęgami dwójki, a więc pojedyńczymi pozycjonowanymi bitami).

Ta klasa koduje kilka zmiennych binarnych w jedną zmienna typu short - przydatne np. przy optymalizacji transferu sieciowego. U wysyłającego kodujemy short jako sumę binarną (np. PROCESSING | RECOVERING), a u odbiorcy dekodujemy przez wywołanie (w tym przypadku) main.

14.02.2006
20:56
[4]

donzoolo [ Senator ]

sasquath_-------->
if ((status & READY) == READY) ‹
System.out.println(READY_STRING);


Hmm, z tego co ja sie orientuje to operator % oznacza tyle co 'and' i jest operatorem bitowym, czyli w tym przypadku laczymy cyfry status = 0101 i ready = 0001 i porownujemy je poprzez podwojny = ze zmienna ready

draczeek--------->

definicja pola klasy Bits o nazwie main, ktora jest widoczna z zewnatrz, jest statyczna i nic nie zwraca



Przy czym mowie z gory ze pamietam dokladnie definicji i moge sie mylic :D

14.02.2006
20:58
[5]

draczeek [ Kjerofca Bąbofca ]

donzoolo, jiser -> thx :)

14.02.2006
21:01
[6]

jiser [ generał-major Zajcef ]

Linia public static void main(String[] args) to metoda specjalna dla JVM - metoda "uruchomieniowa". Jej obecność (i poprawność) umożliwia uruchomienie klasy jako programu (np. java Bits).

14.02.2006
21:10
[7]

sasquath_ [ Konsul ]

dzieki za pomoc

14.02.2006
21:37
smile
[8]

sasquath_ [ Konsul ]

dzieki jeszcze raz wszystkim, mam nadzieje ze nie bede zakladal watku seryjnego;)

15.02.2006
03:29
smile
[9]

jiser [ generał-major Zajcef ]

Nie ma sprawy, jakbyś coś miał, to wal śmiało.

© 2000-2025 GRY-OnLine S.A.