c vs java top 30 differences between c
Ten szczegółowy samouczek wyjaśnia niektóre kluczowe różnice między dwoma językami programowania obiektowego C ++ Vs Java:
C ++ i Java są językami programowania zorientowanymi obiektowo. Jednak oba języki różnią się od siebie na wiele sposobów.
C ++ wywodzi się z C i posiada cechy zarówno proceduralnych, jak i obiektowych języków programowania. C ++ został zaprojektowany do tworzenia aplikacji i systemu.
Java jest oparta na maszynie wirtualnej, która jest bardzo bezpieczna i wysoce przenośna. Jest zgrupowany z obszerną biblioteką, aby zapewnić wsparcie dla abstrakcji istniejącej platformy.
Java została zaprojektowana głównie do programowania aplikacji i posiada funkcjonalność interpretera dla systemów drukujących, który później został przekształcony w obliczenia sieciowe.
Sugerowany odczyt => Przewodnik szkoleniowy C ++ dla wszystkich
Czego się nauczysz:
- Kluczowe różnice między C ++ a Javą
- Format tabelaryczny: C ++ Vs Java
- Często zadawane pytania w C ++ i Javie
- Wniosek
- rekomendowane lektury
Kluczowe różnice między C ++ a Javą
Omówmy teraz niektóre kluczowe różnice między C ++ Vs Java, gdy będziemy kontynuować
instruktaż.
# 1) Platforma Niezależność
C ++ | Jawa | ||
---|---|---|---|
7 | Interfejs biblioteki | Umożliwia bezpośrednie wywołania natywnych bibliotek systemowych. | Wywołuje tylko przez interfejs Java Native i Java Native Access. |
C ++ jest językiem zależnym od platformy. Kod źródłowy napisany w C ++ musi być kompilowany na każdej platformie. | Java jest niezależna od platformy. Po skompilowaniu do kodu bajtowego można go wykonać na dowolnej platformie. |
# 2) Kompilator i interpreter
C ++ | Jawa |
---|---|
C ++ to język kompilowany. Napisany program źródłowy w C ++ jest kompilowana do kodu obiektowego, który może być następnie wykonany w celu uzyskania wyniku. | Java jest językiem kompilowanym i interpretowanym. Skompilowane dane wyjściowe kodu źródłowego Java to kod bajtowy, który jest niezależny od platformy. |
# 3) Przenośność
C ++ | Jawa |
---|---|
Kod C ++ nie jest przenośny. Musi być skompilowany dla każdej platformy. | Jednak Java tłumaczy kod na kod bajtowy. Ten kod bajtowy jest przenośny i można go wykonać na dowolnej platformie. |
# 4) Zarządzanie pamięcią
C ++ | Jawa |
---|---|
Zarządzanie pamięcią w C ++ jest ręczne. Musimy ręcznie przydzielić / zwolnić pamięć za pomocą operatorów new / delete. | W Javie zarządzanie pamięcią jest kontrolowane przez system. |
# 5) Dziedziczenie wielokrotne
C ++ | Jawa |
---|---|
C ++ obsługuje różne typy dziedziczenia, w tym dziedziczenie pojedyncze i wielokrotne. Chociaż istnieją problemy wynikające z wielokrotnego dziedziczenia, C ++ używa słowa kluczowego virtual do rozwiązywania problemów. | Java obsługuje tylko pojedyncze dziedziczenie. Efekty wielokrotnego dziedziczenia można osiągnąć za pomocą interfejsów w Javie. |
# 6) Przeciążenie
C ++ | Jawa |
---|---|
W C ++ metody i operatory mogą być przeciążane. To jest statyczny polimorfizm. | W Javie dozwolone jest tylko przeciążanie metod. Nie pozwala na przeciążenie operatora. |
# 7) Wirtualne słowo kluczowe
C ++ | Jawa |
---|---|
Jako część dynamicznego polimorfizmu, w C ++ słowo kluczowe virtual jest używane z funkcją wskazującą funkcję, którą można przesłonić w klasie pochodnej. W ten sposób możemy osiągnąć polimorfizm. | W Javie nie ma słowa kluczowego virtual. Jednak w Javie wszystkie metody niestatyczne mogą być domyślnie przesłonięte. Mówiąc prościej, wszystkie niestatyczne metody w Javie są domyślnie wirtualne. |
# 8) Wskaźniki
C ++ | Jawa |
---|---|
C ++ dotyczy wskaźników. Jak widać we wcześniejszych samouczkach, C ++ ma silne wsparcie dla wskaźników i możemy wykonać wiele przydatnych programów za pomocą wskaźników. | Java ma ograniczone wsparcie dla wskaźników. Początkowo Java była całkowicie bez wskaźników, ale późniejsze wersje zaczęły zapewniać ograniczoną obsługę wskaźników. Nie możemy używać wskaźników w Javie tak spokojnie, jak w C ++. |
# 9) Komentarz do dokumentacji
C ++ | Jawa |
---|---|
C ++ nie obsługuje komentarzy do dokumentacji. | Java ma wbudowaną obsługę komentarzy do dokumentacji (/ **… * /). W ten sposób pliki źródłowe Java mogą mieć własną dokumentację. |
# 10) Obsługa wątków
C ++ | Jawa |
---|---|
C ++ nie ma wbudowanej obsługi wątków. Opiera się głównie na bibliotekach wątków innych firm. | Java to wbudowana obsługa wątków z klasą „wątek”. Możemy odziedziczyć klasę wątku, a następnie nadpisać metodę run. |
Jeszcze kilka różnic…
# 11) Hierarchia główna
C ++ jest językiem proceduralnym i obiektowym. Dlatego nie ma określonej hierarchii głównej.
Java jest czysto obiektowym językiem programowania i ma jedną główną hierarchię.
# 12) Kod źródłowy i związek klas
W C ++ zarówno kod źródłowy, jak i nazwa pliku nie mają żadnego związku. Oznacza to, że możemy mieć wiele klas w programie C ++, a nazwa pliku może być dowolna. Nie musi to być to samo, co nazwy klas.
W Javie istnieje ścisły związek między klasą kodu źródłowego a nazwą pliku. Klasa zawierająca kod źródłowy i nazwa pliku powinny być takie same.
Na przykład , jeśli mamy klasę w Javie o nazwie salary, to nazwa pliku zawierającego ten kod klasy powinna brzmieć „salary.java”.
# 13) Pojęcie
Koncepcja programów C ++ została napisana raz i skompilowana w dowolnym miejscu, ponieważ C ++ nie jest niezależny od platformy.
Wręcz przeciwnie, w przypadku programów Java jest on napisany raz, działa wszędzie i wszędzie, ponieważ kod bajtowy generowany przez kompilator Java jest niezależny od platformy i może działać na dowolnej maszynie.
# 14) Zgodność z innymi językami
C ++ jest oparty na języku C. C ++ jest kompatybilny z większością innych języków wysokiego poziomu.
Java nie jest kompatybilna z innymi językami. Ponieważ Java została zainspirowana C i C ++, jej składnia jest podobna do tych języków.
#piętnaście) Rodzaj języka programowania
C ++ jest zarówno proceduralnym, jak i obiektowym językiem programowania. Dlatego C ++ ma cechy specyficzne dla języków proceduralnych, a także cechy języka programowania obiektowego.
Java to całkowicie zorientowany obiektowo język programowania.
16) Interfejs biblioteki
C ++ umożliwia bezpośrednie wywołania natywnych bibliotek systemowych. Dlatego jest bardziej odpowiedni do programowania na poziomie systemu.
Java nie ma bezpośredniego wsparcia dla swoich natywnych bibliotek. Możemy wywoływać biblioteki za pośrednictwem Java Native Interface lub Java Native Access.
17) Cechy wyróżniające
Cechy związane z językami proceduralnymi i językiem zorientowanym obiektowo to cechy wyróżniające C ++.
java vs c ++, co jest lepsze
Cechą wyróżniającą Javy jest automatyczne czyszczenie pamięci. Tymczasem Java nie obsługuje destruktorów.
# 18) Semantyka typów
Jeśli chodzi o semantykę typów dla C ++, typy prymitywne i obiektowe są spójne.
Jednak w przypadku języka Java nie ma spójności między typami pierwotnymi i obiektowymi.
# 19) Mechanizm wprowadzania danych
C ++ używa cin i cout wraz z „>>” i „<<’ operators respectively to read in and write the data.
W Javie klasa System jest używana jako wejście-wyjście. Aby odczytać dane wejściowe, używany jest System.in, który odczytuje po jednym bajcie na raz. Konstrukcja System.out służy do zapisywania danych wyjściowych.
#20) Kontrola dostępu i ochrona obiektów
C ++ ma elastyczny model dla obiektów ze specyfikatorami dostępu kontrolującymi dostęp i silną hermetyzacją zapewniającą ochronę.
Java ma stosunkowo nieporęczny model obiektowy o słabej enkapsulacji.
#dwadzieścia jeden) Goto Statement
C ++ obsługuje instrukcję goto, ale jej użycie powinno być zminimalizowane, aby uniknąć konsekwencji używania jej w programie.
Java nie obsługuje instrukcji goto.
22) Operator rozpoznawania zakresu
Operator rozpoznawania zakresu służy do uzyskiwania dostępu do zmiennych globalnych i definiowania metod poza klasą.
C ++ obsługuje operatora rozpoznawania zakresu, ponieważ używa go do uzyskiwania dostępu do zmiennych globalnych. Pozwala nam również definiować funkcje poza klasą i uzyskiwać do nich dostęp za pomocą operatora rozpoznawania zakresu.
W przeciwieństwie do tego Java nie obsługuje operatora rozpoznawania zasięgu. Java nie pozwala również na definiowanie funkcji na zewnątrz. Wszystko, co jest związane z programem, w tym główna funkcja, musi znajdować się wewnątrz klasy.
# 2 .3) Try / Catch Block
W C ++ możemy wykluczyć blok try / catch, nawet jeśli wiemy, że kod może zgłosić wyjątek.
Jednak w Javie, jeśli mamy pewność, że kod wyrzuci wyjątek, to musimy umieścić ten kod w bloku try / catch. Wyjątki są inne w Javie, ponieważ nie obsługuje ona destruktorów.
24) Wykrywanie błędów w czasie wykonywania
W C ++ za wykrywanie błędów w czasie wykonywania odpowiedzialny jest programista.
W Javie wykrywanie błędów w czasie wykonywania jest kontrolowane przez system.
25) Wsparcie językowe
Ze względu na bliskość sprzętu i bibliotek, które umożliwiają dostęp do zasobów systemowych, C ++ jest bardziej odpowiedni do programowania systemu, chociaż mamy szeroką gamę aplikacji, w tym bazy danych, przedsiębiorstwa, gry itp. Opracowane w C ++.
26) Dane i funkcje
C ++ ma zasięg globalny, a także zakres przestrzeni nazw. Dlatego dane i funkcje mogą również istnieć poza klasą.
W Javie wszystkie dane i funkcje muszą znajdować się w klasie. Nie ma zasięgu globalnego, ale może istnieć zasięg pakietu.
27) Struktury i związki
Struktury i związki to struktury danych, które mogą mieć członków z różnymi typami danych. C ++ obsługuje zarówno struktury, jak i związki.
Jednak Java nie obsługuje struktur ani związków.
28) Zarządzanie obiektami
W C ++ obiektami zarządza się ręcznie. Tworzenie i niszczenie obiektów odbywa się ręcznie za pomocą odpowiednio operatorów new i delete. Używamy również konstruktorów i destruktorów dla obiektów klas.
Java nie obsługuje destruktorów, chociaż obsługuje konstruktory. Java jest również silnie uzależniona od automatycznego zbierania śmieci w celu zbierania i niszczenia obiektów.
29) Przekazywanie parametru
Przekazywanie przez wartość i przekazywanie przez odwołanie to dwie ważne techniki przekazywania parametrów używane w programowaniu. C ++ obsługuje obie te techniki.
Jednak Java obsługuje tylko przekazywanie parametrów przez technikę wartości.
# 30) Sprzęt komputerowy
C ++ jest zbliżony do sprzętu i ma wiele bibliotek, które mogą manipulować zasobami sprzętowymi. Ze względu na bliskość sprzętu C ++ jest często używany do programowania systemów, aplikacji do gier, systemu operacyjnego i kompilatorów.
Java jest głównie językiem programowania aplikacji i nie jest zbliżona do sprzętu.
Format tabelaryczny: C ++ Vs Java
Poniżej podano tabelaryczne przedstawienie porównania między C ++ i Javą, które już omówiliśmy.
Nie. | Parametr porównawczy | C ++ | Jawa |
---|---|---|---|
jeden | Niezależność od platformy | C ++ zależy od platformy. | Java jest niezależna od platformy. |
dwa | Kompilator i interpreter | C ++ to język kompilowany. | Java jest językiem kompilowanym i interpretowanym. |
3 | Kod źródłowy i związek klas | Brak ścisłego związku z nazwami klas i nazwami plików. | Wymusza ścisłą zależność między nazwą klasy a nazwą pliku. |
4 | Pojęcie | Napisz raz, skompiluj w dowolnym miejscu. | Pisz raz, uruchom wszędzie i wszędzie. |
5 | Zgodność z innymi językami | Kompatybilny z C z wyjątkiem funkcji obiektowych. | Składnia jest pobierana z C / C ++. Brak wstecznej kompatybilności z żadnym innym językiem. |
6 | Rodzaj języka programowania | Proceduralne i obiektowe. | Zorientowany obiektowo. |
8 | Hierarchia główna | Brak hierarchii głównej. | Podąża za pojedynczą hierarchią główną. |
9 | Cechy wyróżniające | Obsługuje funkcje proceduralne i obiektowe. | Żadnych destruktorów. Automatyczne wyrzucanie elementów bezużytecznych. |
10 | Ruchliwość | Kod C ++ nie jest przenośny. | Java jest przenośna. |
jedenaście | Semantyka typów | Spójne między typami pierwotnymi i obiektowymi. | Niespójny. |
12 | Mechanizm wprowadzania danych | Cin i Cout są używane jako wejścia / wyjścia. | System.in i System.out.println |
13 | Kontrola dostępu i ochrona obiektów | Elastyczny model obiektu i spójna ochrona. | Model obiektowy jest uciążliwy, a enkapsulacja słaba. |
14 | Zarządzanie pamięcią | Podręcznik | Sterowane systemem. |
piętnaście | Dziedziczenie wielokrotne | Teraźniejszość | Nieobecny |
16 | Goto Statement | Obsługuje instrukcję Goto. | Nie obsługuje instrukcji goto. |
17 | Operator rozpoznawania zakresu | Teraźniejszość | Nieobecny |
18 | Try / Catch Block | Może wykluczyć blok try / catch. | Nie można wykluczyć, jeśli kod ma zgłosić wyjątek. |
19 | Przeciążenie | Obsługuje przeciążanie operatorów i metod. | Nie obsługuje przeciążania operatora. |
dwadzieścia | Wirtualne słowo kluczowe | Obsługuje wirtualne słowo kluczowe, które ułatwia nadpisywanie. | Brak wirtualnego słowa kluczowego, wszystkie metody niestatyczne są domyślnie wirtualnymi i można je zastąpić. |
dwadzieścia jeden | Wykrywanie błędów w czasie wykonywania | Zostawiony programista. | Odpowiedzialność za system |
22 | Wsparcie językowe | Używany głównie do programowania systemu. | Używany głównie do programowania aplikacji. |
2. 3 | Dane i funkcje | Dane i funkcja istnieją poza klasą. Obsługiwane są zakresy globalne i przestrzeni nazw. | Dane i funkcje są obecne tylko wewnątrz klasy, dostępny jest zakres pakietu. |
24 | Wskaźniki | Obsługuje wskaźniki. | Tylko ograniczone wsparcie dla wskaźników. |
25 | Struktury i związki | Utrzymany | Nieobsługiwany |
26 | Zarządzanie obiektami | Ręczne zarządzanie obiektami z nowymi i usuniętymi. | Automatyczne zarządzanie obiektami przy użyciu czyszczenia pamięci. |
27 | Przekazywanie parametru | Obsługuje wywołanie według wartości i wywołanie przez odniesienie. | Obsługuje tylko wywołanie według wartości. |
28 | Obsługa wątków | Obsługa wątku nie jest zbyt mocna, zależy od strony trzeciej. | Bardzo mocne wsparcie nici. |
29 | Sprzęt komputerowy | Bliżej sprzętu. | Niezbyt interaktywne ze sprzętem. |
30 | Komentarz do dokumentacji | Nie obsługuje komentarzy do dokumentacji. | Obsługuje komentarz do dokumentacji (/ **… * /), który tworzy dokumentację dla kodu źródłowego Java. |
Jak dotąd szczegółowo poznaliśmy kluczowe różnice między C ++ a Javą. Nadchodząca sekcja odpowie na niektóre z często zadawanych pytań dotyczących C ++ i Javy w świecie programowania.
Często zadawane pytania w C ++ i Javie
P # 1) Który z nich jest lepszy C ++ czy Java?
Odpowiedź: Cóż, nie możemy zdecydowanie powiedzieć, co jest lepsze. Zarówno C ++, jak i Java mają swoje zalety i wady. Chociaż C ++ jest głównie dobry do programowania systemowego, nie możemy tego zrobić z Javą. Ale Java wyróżnia się w aplikacjach takich jak internet, komputer stacjonarny itp.
W rzeczywistości C ++ może zrobić wszystko, od programowania systemowego, przez przedsiębiorstwa, po gry. Java może pełnić więcej funkcji internetowych lub korporacyjnych. Istnieją aplikacje, takie jak niektóre niskopoziomowe aplikacje programistyczne lub gry itp., Których nie można pozostawić Java do rozwoju.
Zależy to więc całkowicie od tego, jaką aplikację tworzymy. Najlepszym sposobem jest wcześniejsze oszacowanie zalet i wad obu języków i weryfikacja ich wyjątkowości dla tworzonej przez nas aplikacji, a następnie stwierdzenie, która z nich jest najlepsza.
Pytanie 2) Czy C ++ jest potężniejszy niż Java?
Odpowiedź: To znowu trudne pytanie! Jeśli chodzi o to, jak łatwiejsza jest składnia lub nauka języka, Java zdobywa punkty. Jeśli chodzi o programowanie systemowe i / lub inne aplikacje niskiego poziomu, C ++ ma większe możliwości.
Niektórzy ludzie mogą argumentować, że posiadanie automatycznych kolekcji GC, bez wskaźników, bez wielokrotnego dziedziczenia, zwiększa możliwości Javy.
Ale jeśli chodzi o szybkość, C ++ jest potężny. Również w aplikacjach takich jak gry, w których musimy przechowywać stan, automatyczne czyszczenie pamięci może zrujnować zadania. Zatem C ++ jest tutaj oczywiście potężny.
Pytanie 3) Czy możemy nauczyć się Javy bez znajomości C lub C ++?
Odpowiedź: Tak, zdecydowanie!
Kiedy już poznamy podstawy programowania i koncepcje programowania obiektowego, możemy rozpocząć naukę języka Java.
Pytanie 4) Czy C ++ przypomina Javę?
Odpowiedź: W pewnym sensie tak, ale pod pewnymi względami nie.
Na przykład zarówno C ++, jak i Java są językami programowania zorientowanymi obiektowo. Mogą być używane do tworzenia aplikacji. Mają podobną składnię.
Ale w innych przypadkach, takich jak zarządzanie pamięcią, dziedziczenie, polimorfizm itp., C ++ i Java są zupełnie inne. Podobnie, jeśli chodzi o prymitywne typy danych, obsługę obiektów, wskaźniki itp. Oba języki są różne.
P # 5) Czy Java jest napisana w C ++?
Odpowiedź: Java w sensie wirtualnej maszyny języka Java (JVM) firmy Sun i IBM jest napisana w języku C ++. Biblioteki Java są w Javie. Niektóre inne maszyny JVM są napisane w języku C.
Wniosek
C ++ i Java to języki programowania zorientowane obiektowo. Ponadto C ++ jest również językiem proceduralnym. Istnieją pewne cechy, takie jak dziedziczenie, polimorfizm, wskaźniki, zarządzanie pamięcią itp., W których oba języki całkowicie się od siebie różnią.
Istnieją pewne cechy C ++, takie jak bliskość sprzętu, lepsze zarządzanie obiektami, szybkość, wydajność itp., Co czyni go bardziej wydajnym niż Java, a tym samym motywuje programistów do używania C ++ do programowania niskiego poziomu, aplikacji do gier o dużej szybkości, programowania systemowego itp.
W podobny sposób, łatwiejsza składnia Java, automatyczne usuwanie elementów bezużytecznych, brak wskaźników, szablonów itp. Sprawiają, że Java jest ulubionym miejscem dla aplikacji internetowych.
=> Odwiedź tutaj, aby zapoznać się z pełną listą samouczków języka C ++ .
rekomendowane lektury
- Samouczek JAVA dla początkujących: ponad 100 praktycznych samouczków wideo Java
- Interfejs Java i samouczek klasy abstrakcyjnej z przykładami
- OOP Java: Wprowadzenie do programowania obiektowego w Javie
- Modyfikatory dostępu w Javie - samouczek z przykładami
- Wdrażanie Java: tworzenie i wykonywanie pliku Java JAR
- Wprowadzenie do języka programowania Java - samouczek wideo
- Wirtualna maszyna Java: jak JVM pomaga w uruchamianiu aplikacji Java
- Samouczek dotyczący refleksji w języku Java z przykładami