c vs java top 30 differences between c
Acest tutorial în profunzime explică unele dintre diferențele cheie dintre două limbaje de programare orientate pe obiecte C ++ Vs Java:
C ++ și Java sunt ambele limbaje de programare orientate pe obiecte. Cu toate acestea, ambele limbi diferă unele de altele în multe feluri.
C ++ este derivat din C și are caracteristicile limbajelor de programare procedurale și orientate obiect. C ++ a fost conceput pentru aplicații și dezvoltarea sistemului.
Java este construit pe o mașină virtuală care este foarte sigură și foarte portabilă în natură. Este grupat cu o bibliotecă cuprinzătoare pentru a oferi suport pentru abstractizarea platformei existente.
Java a fost conceput în principal pentru programarea aplicațiilor și are funcționalitatea unui interpret pentru sisteme de imprimare, care a fost dezvoltat ulterior în calculul de rețea.
Citire sugerată => C ++ Ghid de instruire pentru toți
Ce veți învăța:
- Diferențele cheie dintre C ++ și Java
- Format tabular: C ++ vs Java
- Întrebări frecvente în C ++ și Java
- Concluzie
- Lectură recomandată
Diferențele cheie dintre C ++ și Java
Acum, să discutăm câteva dintre diferențele cheie dintre C ++ și Java, pe măsură ce procedăm în acest sens
tutorial.
# 1) Platforma Independenţă
C ++ | Java | ||
---|---|---|---|
7 | Interfață de bibliotecă | Permite apeluri directe către biblioteci de sistem native. | Apeluri numai prin interfața Java Native și Java Native Access. |
C ++ este un limbaj dependent de platformă. Codul sursă scris în C ++ trebuie să fie compilat pe fiecare platformă. | Java este independent de platformă. Odată compilat în cod de octeți, acesta poate fi executat pe orice platformă. |
# 2) Compilator și interpret
C ++ | Java |
---|---|
C ++ este un limbaj compilat. Programul sursă scris în C ++ este compilat într-un cod obiect care poate fi apoi executat pentru a produce o ieșire. | Java este un limbaj compilat și interpretat. Ieșirea compilată a unui cod sursă Java este un cod de octeți care este independent de platformă. |
# 3) Portabilitate
C ++ | Java |
---|---|
Codul C ++ nu este portabil. Trebuie compilat pentru fiecare platformă. | Java, cu toate acestea, traduce codul în cod de octeți. Acest cod de octeți este portabil și poate fi executat pe orice platformă. |
# 4) Managementul memoriei
C ++ | Java |
---|---|
Gestionarea memoriei în C ++ este manuală. Trebuie să alocăm / să alocăm manual memoria folosind operatorii noi / ștergere. | În Java, gestionarea memoriei este controlată de sistem. |
# 5) Moștenirea multiplă
C ++ | Java |
---|---|
C ++ acceptă diferite tipuri de moșteniri, inclusiv moșteniri simple și multiple. Deși există probleme care decurg din mai multe moșteniri, C ++ folosește cuvântul cheie virtual pentru a rezolva problemele. | Java, acceptă o singură moștenire. Efectele moștenirii multiple pot fi obținute folosind interfețele din Java. |
# 6) Supraîncărcare
C ++ | Java |
---|---|
În C ++, metodele și operatorii pot fi supraîncărcați. Acesta este polimorfism static. | În Java, este permisă doar supraîncărcarea metodelor. Nu permite supraîncărcarea operatorului. |
# 7) Cuvânt cheie virtual
C ++ | Java |
---|---|
Ca parte a polimorfismului dinamic, în C ++, cuvântul cheie virtual este utilizat cu o funcție pentru a indica funcția care poate fi suprascrisă în clasa derivată. Astfel putem realiza polimorfism. | În Java, cuvântul cheie virtual este absent. Cu toate acestea, în Java, toate metodele nestatice în mod implicit pot fi suprascrise. Sau, în termeni simpli, toate metodele nestatice din Java sunt virtuale în mod implicit. |
# 8) Indicatori
C ++ | Java |
---|---|
C ++ este despre indicii. După cum s-a văzut mai devreme în tutoriale, C ++ are un suport puternic pentru pointeri și putem face o mulțime de programări utile folosind pointeri. | Java are suport limitat pentru pointeri. Inițial, Java a fost complet fără indicatoare, dar versiunile ulterioare au început să ofere suport limitat pentru indicatori. Nu putem folosi indicatori în Java la fel de pe îndelete pe cât putem folosi în C ++. |
# 9) Comentariu de documentare
C ++ | Java |
---|---|
C ++ nu are suport pentru comentarii despre documentație. | Java are un suport încorporat pentru comentarii despre documentație (/ ** ... * /). În acest fel, fișierele sursă Java pot avea propria documentație. |
# 10) Suport pentru fire
C ++ | Java |
---|---|
C ++ nu are suport pentru fire încorporat. Se bazează în cea mai mare parte pe biblioteci de filetare terță parte. | Java este compatibil cu firul încorporat cu un „fir” de clasă. Putem moșteni clasa de fire și apoi să înlocuim metoda de rulare. |
Încă câteva diferențe ...
# 11) Ierarhia rădăcinii
C ++ este procedural, precum și un limbaj de programare orientat pe obiecte. Prin urmare, nu urmărește nicio ierarhie de rădăcină specifică.
Java este un limbaj de programare pur orientat pe obiecte și are o singură ierarhie rădăcină.
# 12) Codul sursă și relația de clasă
În C ++, atât codul sursă cât și numele fișierului nu au nicio relație. Aceasta înseamnă că putem avea multe clase în programul C ++, iar numele fișierului poate fi orice. Nu trebuie să fie același cu numele clasei.
În Java, există o relație strânsă între clasa codului sursă și numele fișierului. Clasa care conține codul sursă și numele fișierului ar trebui să fie aceleași.
De exemplu , dacă avem o clasă în Java denumită salariu, atunci numele fișierului care conține acest cod de clasă ar trebui să fie „salariu.java”.
# 13) Concept
Conceptul din spatele programelor C ++ este scris o dată și se compilează oriunde, deoarece C ++ nu este independent de platformă.
Dimpotrivă, pentru programele Java este scris o dată, rulează peste tot și oriunde, deoarece codul de octeți generat de compilatorul Java este independent de platformă și poate rula pe orice mașină.
# 14) Compatibilitatea cu alte limbi
C ++ este construit pe C. Limbajul C ++ este compatibil cu majoritatea celorlalte limbaje de nivel înalt.
Java nu este compatibil cu alte limbi. Deoarece Java a fost inspirat de C și C ++, sintaxa sa este similară cu aceste limbaje.
#cincisprezece) Tipul limbajului de programare
C ++ este atât un limbaj de programare procedural, cât și orientat spre obiect. Prin urmare, C ++ are caracteristici specifice limbajelor procedurale, precum și caracteristici ale limbajului de programare orientat pe obiecte.
Java este un limbaj de programare complet orientat spre obiecte.
# 16) Interfață de bibliotecă
C ++ permite apeluri directe către bibliotecile de sistem native. Prin urmare, este mai potrivit pentru programarea la nivel de sistem.
Java nu are suport direct pentru apelurile către bibliotecile sale native. Putem apela bibliotecile prin Java Native Interface sau Java Native Access.
# 17) Caracteristici distinctive
Caracteristicile legate de limbajele procedurale și limbajul orientat obiect sunt caracteristicile distinctive ale C ++.
întrebări și răspunsuri la interviuri în baze de date pdf
Colectarea automată a gunoiului este caracteristica distinctivă a Java. Între timp, Java nu acceptă distructori.
# 18) Tip Semantică
În ceea ce privește semantica de tip pentru C ++, tipurile primitive și de obiecte sunt consistente.
Dar pentru Java, nu există coerență între tipurile primitive și obiecte.
# 19) Mecanism de intrare
C ++ folosește cin și cout împreună cu „>>” și „<<’ operators respectively to read in and write the data.
În java, clasa System este utilizată pentru intrare-ieșire. Pentru a citi intrarea, se folosește System.in care citește câte un octet. Construcția System.out este utilizată pentru a scrie ieșirea.
#douăzeci) Controlul accesului și protecția obiectelor
C ++ are un model flexibil pentru obiecte cu specificatori de acces care controlează accesul și încapsulare puternică, asigurând protecție.
Java are un model de obiect comparativ greoi, cu încapsulare slabă.
#douăzeci și unu) Treceți la declarație
C ++ acceptă declarația goto, dar utilizarea sa ar trebui să fie minimizată pentru a preveni consecințele utilizării acesteia într-un program.
Java nu oferă suport pentru instrucțiunea goto.
# 22) Operator rezoluție domeniu
Operatorul de rezoluție a domeniului este utilizat pentru a accesa variabilele globale și pentru a defini metode în afara clasei.
C ++ acceptă operatorul de rezoluție a domeniului, deoarece îl folosește pentru a accesa variabile globale. De asemenea, ne permite să definim funcții în afara clasei și să le accesăm folosind operatorul de rezoluție a scopului.
În schimb, Java nu acceptă operatorul de rezoluție a scopului. Java nu permite, de asemenea, definirea funcțiilor în exterior. Tot ce este legat de program, inclusiv funcția principală, trebuie să se afle în interiorul unei clase.
# 2. 3) Încercați / Blocați captura
În C ++, putem exclude blocul try / catch chiar dacă știm că codul ar putea genera o excepție.
Cu toate acestea, în Java, dacă suntem siguri că codul va arunca o excepție, atunci trebuie să includem acest cod sub blocul try / catch. Excepțiile sunt diferite în Java, deoarece nu acceptă distructori.
# 24) Runtime Error Detection
În C ++, detectarea erorilor în timpul rulării este responsabilitatea programatorului.
În Java, detectarea erorilor în timpul rulării este controlată de sistem.
# 25) Suport lingvistic
Datorită apropierii sale de hardware și biblioteci care permit accesarea resurselor sistemului, C ++ este mai potrivit pentru programarea sistemului, deși avem o gamă largă de aplicații, inclusiv baze de date, întreprinderi, jocuri etc. dezvoltate în C ++.
# 26) Date și funcții
C ++ are un domeniu global, precum și un spațiu de nume. Astfel, datele și funcțiile pot exista și în afara clasei.
În Java, toate datele și funcțiile trebuie să fie din clasă. Nu există un domeniu global, totuși, poate exista și un pachet.
# 27) Structuri și uniuni
Structurile și uniunile sunt structuri de date care pot avea membri cu diferite tipuri de date. C ++ suportă atât structuri, cât și uniuni.
Java, cu toate acestea, nu acceptă structuri sau uniuni.
# 28) Managementul obiectelor
În C ++, obiectele sunt gestionate manual. Crearea și distrugerea obiectelor se efectuează manual folosind operatorii noi și respectiv de ștergere. De asemenea, folosim constructori și destructori pentru obiecte de clasă.
Java nu acceptă destructori, deși acceptă constructori. Java este, de asemenea, foarte dependent de colectarea automată a gunoiului pentru colectarea și distrugerea obiectelor.
# 29) Trecerea parametrilor
Pass by Value și pass by reference sunt cele două tehnici importante de trecere a parametrilor utilizate în programare. C ++ acceptă ambele tehnici.
Cu toate acestea, Java acceptă doar tehnica de trecere a valorii prin trecerea parametrilor.
# 30) Hardware
C ++ este aproape de hardware și are multe biblioteci care pot manipula resursele hardware. Datorită apropierii de hardware, C ++ este adesea utilizat pentru programarea sistemului, aplicații de jocuri, sistem de operare și compilatoare.
Java este în majoritate un limbaj de dezvoltare a aplicațiilor și nu este aproape de hardware.
Format tabular: C ++ vs Java
Mai jos este reprezentarea tabelară a comparației dintre C ++ și Java despre care am discutat deja.
Nu face. | Parametru de comparație | C ++ | Java |
---|---|---|---|
1 | Platformă Independență | C ++ este dependent de platformă. | Java este independent de platformă. |
Două | Compilator și interpret | C ++ este un limbaj compilat. | Java este un limbaj compilat și interpretat. |
3 | Codul sursă și relația de clasă | Nicio relație strictă cu numele clasei și numele fișierelor. | Aplică relații stricte între numele clasei și numele fișierului. |
4 | Concept | Scrie o dată compila oriunde. | Scrie o dată rulează oriunde și peste tot. |
5 | Compatibilitatea cu alte limbi | Compatibil cu C, cu excepția caracteristicilor orientate obiect. | Sintaxa este preluată din C / C ++. Nu există compatibilitate inversă cu nici o altă limbă. |
6 | Tipul limbajului de programare | Procedural și orientat pe obiecte. | Orientat pe obiecte. |
8 | Ierarhia rădăcinilor | Fără ierarhie rădăcină. | Urmărește ierarhia rădăcinii unice. |
9 | Caracteristici distinctive | Suportă caracteristici procedurale, precum și orientate pe obiecte. | Fără distructori. Colectarea automată a gunoiului. |
10 | Portabilitate | Codul C ++ nu este portabil. | Java este portabil. |
unsprezece | Tip Semantică | Coerență între tipurile primitive și obiecte. | Nu este consecvent. |
12 | Mecanism de intrare | Cin și Cout sunt utilizate pentru I / O. | System.in și System.out.println |
13 | Control acces și protecție obiect | Un model de obiect flexibil și protecție consistentă. | Modelul obiectului este greoi, iar încapsularea este slabă. |
14 | Gestionarea memoriei | Manual | Controlat de sistem. |
cincisprezece | Moștenirea multiplă | Prezent | Absent |
16 | Treceți la declarație | Suportă declarația Goto. | Nu acceptă declarația Goto. |
17 | Operator rezoluție domeniu | Prezent | Absent |
18 | Încercați / Blocați captura | Poate exclude blocul try / catch. | Nu se poate exclude dacă codul ar trebui să arunce o excepție. |
19 | Suprasolicitare | Sprijină supraîncărcarea operatorului și a metodei. | Nu acceptă supraîncărcarea operatorului. |
douăzeci | Cuvânt cheie virtual | Suportă cuvinte cheie virtuale care facilitează suprascrierea. | Fără cuvânt cheie virtual, toate metodele nestatice sunt în mod implicit virtuale și pot fi suprascrise. |
douăzeci și unu | Runtime Error Detection | Lăsat programatorului. | Responsabilitatea sistemului |
22 | Suport lingvistic | Folosit în principal pentru programarea sistemului. | Utilizat în principal pentru programarea aplicațiilor. |
2. 3 | Date și funcții | Datele și funcția există în afara clasei. Domeniile globale și spațiile de nume sunt acceptate. | Datele și funcțiile sunt prezente numai în interiorul clasei, domeniul de aplicare al pachetului este disponibil. |
24 | Indicatori | Suportă indicii. | Numai asistență limitată pentru indicatori. |
25 | Structuri și uniuni | Sprijinit | Nu sunt acceptate |
26 | Managementul obiectelor | Gestionarea manuală a obiectelor cu nou și ștergere. | Gestionarea automată a obiectelor folosind colectarea gunoiului. |
27 | Trecerea parametrilor | Sprijină apelul prin valoare și apelul prin referință. | Acceptă apeluri numai după valoare. |
28 | Suport pentru fire | Suportul pentru fire nu este foarte puternic, se bazează pe terță parte. | Suport foarte puternic al firului. |
29 | Hardware | Mai aproape de hardware. | Nu foarte interactiv cu hardware-ul. |
30 | Comentariu de documentare | Nu acceptă comentariul de documentare. | Suportă comentariul documentației (/ **… * /) care creează documentația pentru codul sursă Java. |
Până acum am văzut în detaliu diferențele cheie dintre C ++ și Java. Următoarea secțiune va răspunde la unele dintre întrebările frecvente referitoare la C ++ și Java în lumea programării.
Întrebări frecvente în C ++ și Java
Q # 1) Care este mai bun C ++ sau Java?
Răspuns: Ei bine, nu putem spune cu siguranță care este mai bine. Atât C ++ cât și Java au propriile lor merite și dezavantaje. În timp ce C ++ este în mare parte bun pentru programarea sistemului, nu o putem face cu Java. Dar Java excelează în aplicații precum web, desktop etc.
De fapt, C ++ poate face orice, de la programarea sistemului la întreprindere până la jocuri. Java poate face mai mult un web sau o întreprindere. Există unele aplicații, cum ar fi anumite aplicații de programare de nivel scăzut sau jocuri etc., care nu pot fi lăsate pentru dezvoltarea Java.
Astfel, depinde în totalitate de ce aplicație dezvoltăm. Cel mai bun mod este de a evalua în prealabil avantajele și dezavantajele ambelor limbi și de a verifica unicitatea acestora pentru aplicația pe care o dezvoltăm și apoi să concluzionăm care este cea mai bună.
Q # 2) Este C ++ mai puternic decât Java?
Răspuns: Din nou, aceasta este o întrebare complicată! Când vine vorba de cât de ușoară este sintaxa sau învățarea limbii, Java marchează. Când vine vorba de programarea sistemului și / sau alte aplicații de nivel scăzut, C ++ este mai puternic.
Unii oameni ar putea susține că, având colecții GC automate, fără indicatori, fără moșteniri multiple, Java face mai puternic.
Dar când vine vorba de viteză, C ++ este puternic. De asemenea, în aplicații precum jocurile în care trebuie să stocăm starea, colectarea automată a gunoiului poate distruge sarcinile. Astfel, C ++ este evident puternic aici.
Î # 3) Putem învăța Java fără să cunoaștem C sau C ++?
Răspuns: Da cu siguranta!
Odată ce cunoaștem elementele fundamentale ale programării și conceptele de programare orientată pe obiecte, putem începe să învățăm Java.
Q # 4) C ++ este ca Java?
Răspuns: În anumite privințe, da, dar în anumite privințe, nu.
De exemplu, atât C ++ cât și Java sunt limbaje de programare orientate pe obiecte. Ele pot fi utilizate pentru dezvoltarea aplicațiilor. Au o sintaxă similară.
Dar în alte cazuri, cum ar fi gestionarea memoriei, moștenirea, polimorfismul etc., C ++ și Java sunt complet diferite. În mod similar, când vine vorba de tipuri de date primitive, de manipulare a obiectelor, de indicatori etc. ambele limbi sunt diferite.
Q # 5) Java este scris în C ++?
Răspuns: Java în sensul că Java Virtual Machine (JVM) de Sun și IBM sunt scrise în C ++. Bibliotecile Java sunt în Java. Unele alte JVM-uri sunt scrise în C.
Concluzie
C ++ și Java sunt ambele limbaje de programare orientate pe obiecte. În plus, C ++ este și un limbaj procedural. Există unele caracteristici precum moștenirea, polimorfismul, indicii, gestionarea memoriei etc., în care ambele limbi diferă complet între ele.
Există unele caracteristici ale C ++, cum ar fi apropierea de hardware, o mai bună gestionare a obiectelor, viteză, performanță etc., ceea ce îl face mai puternic decât Java și motivează astfel dezvoltatorii să utilizeze C ++ pentru programare de nivel scăzut, aplicații de jocuri de mare viteză, programare de sistem , etc.
În mod similar, sintaxa mai ușoară a Java, colectarea automată a gunoiului, lipsa de indicatori, șabloane etc. fac din Java un favorit pentru aplicațiile bazate pe web.
=> Vizitați aici pentru lista completă de tutoriale C ++ .
Lectură recomandată
- Tutorial JAVA pentru începători: peste 100 de tutoriale video Java practice
- Interfață Java și tutorial de clasă abstractă cu exemple
- OOP Java: Introducere în programarea orientată pe obiecte în Java
- Modificatori de acces în Java - Tutorial cu exemple
- Implementarea Java: crearea și executarea fișierului Java JAR
- Introducere în limbajul de programare Java - Video Tutorial
- Mașină virtuală Java: Cum ajută JVM la rularea aplicației Java
- Tutorial de reflecție Java cu exemple