|
Java vizavi de C/C++
Sintaxa Java se aseamana foarte mult cu cea a limbajelor C si C++.
Referatul de fata isi propune sa prezinte o paralela intre Java si C/C++.
Voi descrie o suma de deosebiri si cateva asemanari dintre ele si voi
prezenta elemente care sunt in Java si nu sunt in C++ si elemente care au
ramas in C++, dar au fost eliminate din Java.
1. Tipuri de date
1.1. Tipurile de date primare
Java suporta 8 tipuri de date primare, descrise in tabelul de mai jos:
|Tip |Descriere |
|byte |intreg cu semn pe 8 biti |
|short |intreg cu semn pe 16 biti |
|int |intreg cu semn pe 32 de biti|
|long |intreg cu semn pe 64 de biti|
|float |numar in virgula mobila pe |
| |32 de biti |
|double |numar in virgula mobila pe |
| |64 de biti |
|char |caracter Unicode pe 16 biti |
|boolean |true sau false |
Observati ca Java adauga doua tipuri de date: byte si boolean. (unele
compilatoare de C++ mai noi au adaugat si ele tipul boolean).
O diferenta importanta privind celelalte tipuri de date, care sunt comune
celor doua limbaje, este faptul ca tipurile Java au o dimensiune fixa si
cunoscuta. Acest lucru este foarte important pentru Java datorita scopului
sau de a fi portabil. De exemplu daca un tip de data int ocupa 16 biti pe o
platforma si 32 de biti pe alta platforma, programul va avea probleme daca
va trebui sa ruleze pe ambele platforme. C++ garanteaza o anumita relatie
intre tipurile primare de date, de exemplu garanteaza ca un tip de data
long este cel putin la fel de mare cu un tip de data int. El nu garanteaza
insa dimensiunea fiecarui tip. Java realizeaza acest lucru, fiecare tip
avand o dimensiune fixa.
Deoarece cele mai multe masini ruleaza pe 32 de biti, dimensiunile pentru
tipurile primitive de date au fost gandite sa fie optimizate pentru 32 de
biti. Astfel, o data Java de tip int ocupa 32 de biti ( fata de16 sau 32 de
biti, in C/C++ ), iar o data de tip long va ocupa 64 de biti ( fata de 32
sau 64 de biti, in C/C++ ).
O alta diferenta este ca toate tipurile primare Java sunt cu semn. Astfel,
declaratiile unsigned din C nu sunt permise in Java.
1.2. Conversii
Si in Java si in C++ se poate face conversie intre un tip de data si un
altul. Dar in Java nu exista conversii implicite.
Sa luam urmatoarea secventa de program scrisa in C:
long LongNb = 32768;
int IntNb;
IntNb = LongNb;
Compilatorul C/C++ va face o conversie implicita (cast) din long in int. Pe
o platforma de 16 biti ( unde long are o lungime de 32 de biti si int are o
lungime de 16 biti ), in urma conversiei, variabila IntNb va avea valoarea
0. Deci va avea loc o pierdere de precizie, fara ca programatorul sa fie
avizat.
Java inlatura riscul unor potentiale erori in programare relative la
conversii prin faptul ca nu realizeaza conversii automate. Astfel
programatorul este nevoit sa faca o conversie explicita ( de exemplu IntNb
= (int)LongNb;).
1.3. Operatori
Setul de operatori |