c vs java top 30 differences between c
Този задълбочен урок обяснява някои от ключовите разлики между два обектно-ориентирани езика за програмиране C ++ Vs Java:
C ++ и Java са обектно-ориентирани езици за програмиране. И двата езика се различават един от друг по много начини.
C ++ произлиза от C и има характеристиките както на процедурни, така и на обектно-ориентирани езици за програмиране. C ++ е проектиран за разработване на приложения и системи.
Java е изградена върху виртуална машина, която е много сигурна и изключително преносима по своята същност. Той е групиран с изчерпателна библиотека, за да осигури поддръжка за абстракцията на съществуващата платформа.
Java е проектирана основно за програмиране на приложения и има функционалност на интерпретатор за печатни системи, която по-късно е разработена в мрежови изчисления.
Предложено четене => C ++ Ръководство за обучение за всички
Какво ще научите:
- Основни разлики между C ++ срещу Java
- Табличен формат: C ++ Vs Java
- Често задавани въпроси в C ++ и Java
- Заключение
- Препоръчително четене
Основни разлики между C ++ срещу Java
Сега нека обсъдим някои от основните разлики между C ++ Vs Java, докато продължаваме по-нататък
урок.
# 1) Платформа Независимост
C ++ | Java | ||
---|---|---|---|
7 | Библиотечен интерфейс | Позволява директни повиквания към собствени системни библиотеки. | Обаждания само чрез Java Native интерфейс и Java Native Access. |
C ++ е език, зависим от платформата. Изходният код, написан на C ++, трябва да се компилира на всяка платформа. | Java е независима от платформата. Веднъж компилиран в байт код, той може да бъде изпълнен на всяка платформа. |
# 2) Съставител и преводач
C ++ | Java |
---|---|
C ++ е компилиран език. Изходната програма написана в C ++ се компилира в обектен код, който след това може да се изпълни, за да се получи изход. | Java е компилиран, както и интерпретиран език. Компилираният изход на изходния код на Java е байтов код, който не зависи от платформата. |
# 3) Преносимост
C ++ | Java |
---|---|
Кодът на C ++ не е преносим. Той трябва да бъде съставен за всяка платформа. | Java обаче превежда кода в байт код. Този байт код е преносим и може да бъде изпълнен на всяка платформа. |
# 4) Управление на паметта
C ++ | Java |
---|---|
Управлението на паметта в C ++ е ръчно. Трябва да разпределим / освободим паметта ръчно, като използваме операторите new / delete. | В Java управлението на паметта се контролира от системата. |
# 5) Множествено наследяване
C ++ | Java |
---|---|
C ++ поддържа различни видове наследства, включително единични и множествени наследства. Въпреки че има проблеми, произтичащи от множество наследства, C ++ използва виртуалната ключова дума за разрешаване на проблемите. | Java поддържа само едно наследяване. Ефекти от множественото наследяване могат да бъдат постигнати с помощта на интерфейсите в Java. |
# 6) Претоварване
C ++ | Java |
---|---|
В C ++ методите и операторите могат да бъдат претоварени. Това е статичен полиморфизъм. | В Java е разрешено само претоварване на метод. Не позволява претоварване на оператора. |
# 7) Виртуална ключова дума
C ++ | Java |
---|---|
Като част от динамичния полиморфизъм, в C ++, виртуалната ключова дума се използва с функция, за да посочи функцията, която може да бъде заменена в производния клас. По този начин можем да постигнем полиморфизъм. | В Java виртуалната ключова дума отсъства. В Java обаче всички нестатични методи по подразбиране могат да бъдат заменени. Или с прости думи, всички нестатични методи в Java са виртуални по подразбиране. |
# 8) Указатели
C ++ | Java |
---|---|
C ++ е всичко за указатели. Както се вижда в уроци по-рано, C ++ има силна поддръжка за указатели и можем да направим много полезно програмиране с помощта на указатели. | Java има ограничена поддръжка за указатели. Първоначално Java беше напълно без указатели, но по-късните версии започнаха да предоставят ограничена поддръжка за указатели. Не можем да използваме указатели в Java толкова лежерно, колкото в C ++. |
# 9) Документация Коментар
C ++ | Java |
---|---|
C ++ няма поддръжка за коментари по документация. | Java има вградена поддръжка за коментари по документация (/ ** ... * /). По този начин изходните файлове на Java могат да имат своя собствена документация. |
# 10) Поддръжка на нишки
C ++ | Java |
---|---|
C ++ няма вградена поддръжка на нишки. Той разчита най-вече на библиотеки с нишки на трети страни. | Java е вградена поддръжка на нишка с клас „нишка“. Можем да наследим класа на нишката и след това да заменим метода на изпълнение. |
Още няколко разлики ...
# 11) Йерархия на корените
C ++ е процедурен, както и обектно-ориентиран език за програмиране. Следователно той не следва някаква специфична йерархия на корен.
Java е чист обектно-ориентиран език за програмиране и има една коренна йерархия.
# 12) Изходен код и взаимоотношения между класите
В C ++ и изходният код, и името на файла нямат връзка. Това означава, че можем да имаме много класове в програмата C ++ и името на файла може да бъде каквото и да е. Не е необходимо да е същото като имената на класовете.
В Java има тясна връзка между класа на изходния код и името на файла. Класът, съдържащ изходния код и името на файла, трябва да бъде еднакъв.
Например , ако имаме клас в Java с име pay, тогава името на файла, което съдържа този код на класа, трябва да бъде “pay.java”.
# 13) Концепция
Концепцията зад програмите на C ++ е написана веднъж и се компилира навсякъде, тъй като C ++ не е независима от платформата.
Напротив, за Java програми се пише веднъж, изпълнява се навсякъде и навсякъде, тъй като байтовият код, генериран от Java компилатора, е независим от платформата и може да работи на всяка машина.
# 14) Съвместимост с други езици
C ++ е изграден върху C. Езикът C ++ е съвместим с повечето други езици на високо ниво.
Java не е съвместим с други езици. Тъй като Java е вдъхновена от C и C ++, нейният синтаксис е подобен на тези езици.
# петнайсет) Тип език за програмиране
C ++ е едновременно процедурен и обектно-ориентиран език за програмиране. Следователно C ++ има характеристики, специфични за процедурните езици, както и характеристики на обектно-ориентирания език за програмиране.
Java е изцяло обектно-ориентиран език за програмиране.
# 16) Библиотечен интерфейс
C ++ позволява директни повиквания към родните системни библиотеки. Следователно той е по-подходящ за програмиране на системно ниво.
Java няма директна поддръжка за обаждания към родните си библиотеки. Можем да извикаме библиотеките чрез Java Native Interface или Java Native Access.
# 17) Отличителни черти
Характеристиките, свързани с процедурните езици и обектно-ориентирания език, са отличителните черти на C ++.
какъв добър YouTube към mp3 конвертор
Автоматичното събиране на боклука е отличителната черта на Java. Междувременно Java не поддържа деструктори.
# 18) Тип семантика
Що се отнася до семантиката на типа за C ++, примитивните и обектните типове са последователни.
Но за Java няма съгласуваност между примитивните и обектните типове.
# 19) Механизъм на въвеждане
C ++ използва cin и cout заедно с „>>“ и „<<’ operators respectively to read in and write the data.
В java класът System се използва за вход-изход. За четене на входа се използва System.in, който чете по един байт наведнъж. Конструктът System.out се използва за записване на изхода.
# двадесет) Контрол на достъпа и защита на обекти
C ++ има гъвкав модел за обекти с спецификатори за достъп, контролиращи достъпа и силна капсулация, осигуряваща защита.
Java има сравнително тромав обектен модел със слаба капсулация.
#двадесет и едно) Goto Statement
C ++ поддържа оператора goto, но използването му трябва да бъде сведено до минимум, за да се предотвратят последиците от използването му в програма.
Java не предоставя поддръжка за оператора goto.
# 22) Оператор за разделителна способност на обхвата
Операторът за разделителна способност на обхвата се използва за достъп до глобалните променливи и дефиниране на методи извън класа.
C ++ поддържа оператор за резолюция на обхвата, тъй като го използва за достъп до глобални променливи. Също така ни позволява да дефинираме функции извън класа и да имаме достъп до тях с помощта на оператора за разделителна способност.
За разлика от това, Java не поддържа оператора за разделителна способност. Java също не позволява дефиниране на функциите отвън. Всичко, свързано с програмата, включително основната функция, трябва да бъде вътре в клас.
# 2. 3) Опитайте / Catch Block
В C ++ можем да изключим блока try / catch, дори ако знаем, че кодът може да създаде изключение.
В Java обаче, ако сме сигурни, че кодът ще изведе изключение, тогава трябва да включим този код под блока try / catch. Изключенията са различни в Java, тъй като тя не поддържа деструктори.
# 24) Откриване на грешки по време на работа
В C ++ откриването на грешки по време на изпълнение е отговорност на програмиста.
В Java откриването на грешки по време на работа се контролира от системата.
# 25) Езикова поддръжка
Поради близостта си до хардуера и библиотеките, които позволяват достъп до системни ресурси, C ++ е по-подходящ за системно програмиране, въпреки че имаме широк спектър от приложения, включително база данни, предприятия, игри и др., Разработени в C ++.
# 26) Данни и функции
C ++ има глобален обхват, както и обхват на пространство от имена. По този начин данни и функции могат да съществуват и извън класа.
В Java всички данни и функции трябва да бъдат в класа. Няма глобален обхват, но може да има обхват на пакета.
# 27) Структури и съюзи
Структурите и обединенията са структури от данни, които могат да имат членове с различни типове данни. C ++ поддържа както структури, така и обединения.
Java обаче не поддържа структури или обединения.
# 28) Управление на обекти
В C ++ обектите се управляват ръчно. Създаването и унищожаването на обекти се извършват ръчно, като се използват съответно операторите new и delete. Също така използваме конструктори и деструктори за обекти от клас.
Java не поддържа деструктори, въпреки че поддържа конструктори. Java също така силно зависи от автоматичното събиране на боклука за събиране и унищожаване на обекти.
# 29) Преминаване на параметър
Pass by Value и pass by reference са двете важни техники за предаване на параметри, използвани при програмирането. C ++ поддържа и двете техники.
Въпреки това, Java поддържа техника за предаване само на стойност при предаване на параметри.
# 30) Хардуер
C ++ е близо до хардуера и има много библиотеки, които могат да манипулират хардуерните ресурси. Поради близостта си до хардуера, C ++ често се използва за системно програмиране, игрални приложения, операционна система и компилатори.
Java е предимно език за разработка на приложения и не е близо до хардуера.
Табличен формат: C ++ Vs Java
По-долу е дадено табличното представяне на сравнението между C ++ и Java, което вече обсъдихме.
Не. | Сравнителен параметър | C ++ | Java |
---|---|---|---|
един | Независимост на платформата | C ++ зависи от платформата. | Java е независима от платформата. |
две | Съставител и преводач | C ++ е компилиран език. | Java е компилиран, както и интерпретиран език. |
3 | Изходен код и взаимоотношения между класите | Няма строга връзка с имена на класове и имена на файлове. | Прилага строга връзка между името на класа и името на файла. |
4 | Концепция | Пишете веднъж, компилирайте навсякъде. | Пишете веднъж бягайте навсякъде и навсякъде. |
5 | Съвместимост с други езици | Съвместим с C, с изключение на обектно-ориентираните функции. | Синтаксисът е взет от C / C ++. Няма обратна съвместимост с друг език. |
6 | Тип език за програмиране | Процедурни и обектно-ориентирани. | Обектно-ориентирана. |
8 | Коренна йерархия | Няма коренна йерархия. | Следва йерархия с един корен. |
9 | Отличителни черти | Поддържа процедурни, както и обектно-ориентирани функции. | Без деструктори. Автоматично събиране на боклука. |
10 | Преносимост | Кодът на C ++ не е преносим. | Java е преносима. |
единадесет | Тип семантика | Съответства между примитивни и обектни типове. | Не е последователно. |
12 | Механизъм на въвеждане | Cin и Cout се използват за I / O. | System.in и System.out.println |
13 | Контрол на достъпа и защита на обекти | Гъвкав обектен модел и последователна защита. | Обектният модел е тромав, а капсулирането е слабо. |
14. | Управление на паметта | Наръчник | Системно контролиран. |
петнадесет | Множествено наследяване | Присъства | Отсъстващ |
16. | Goto Statement | Поддържа Goto изявление. | Не поддържа изявлението goto. |
17 | Оператор за разделителна способност на обхвата | Присъства | Отсъстващ |
18. | Опитайте / Catch Block | Може да изключи опит / улов блок. | Не може да се изключи, ако кодът трябва да създаде изключение. |
19. | Претоварване | Поддържа претоварване на оператор и метод. | Не поддържа претоварване на оператора. |
двайсет | Виртуална ключова дума | Поддържа виртуална ключова дума, която улеснява отменянето. | Няма виртуална ключова дума, всички нестатични методи са по подразбиране виртуални и могат да бъдат заменени. |
двадесет и едно | Откриване на грешки по време на работа | Оставено на програмиста. | Системна отговорност |
22. | Езикова поддръжка | Използва се главно за системно програмиране. | Използва се главно за програмиране на приложения. |
2. 3 | Данни и функции | Данните и функциите съществуват извън класа. Поддържат се глобални и пространства от имена. | Данните и функциите присъстват само в класа, обхватът на пакета е наличен. |
24 | Указатели | Поддържа указатели. | Само ограничена поддръжка за указатели. |
25 | Структури и съюзи | Поддържа се | Не се поддържа |
26 | Управление на обекти | Ръчно управление на обекти с new и delete. | Автоматично управление на обекти, използващо събиране на боклук. |
27 | Преминаване на параметър | Поддържа обаждане по стойност и обаждане по референция. | Поддържа само обаждане по стойност. |
28 | Поддръжка на нишки | Поддръжката на нишки не е много силна, разчита на третата страна. | Много здрава опора на конеца. |
29 | Хардуер | По-близо до хардуера. | Не е много интерактивно с хардуера. |
30 | Коментар на документацията | Не поддържа коментар за документация. | Поддържа коментар за документация (/ ** ... * /), който създава документация за изходния код на Java. |
Досега подробно видяхме ключовите разлики между C ++ и Java. Предстоящият раздел ще отговори на някои от често задаваните въпроси, свързани с C ++ и Java в света на програмирането.
Често задавани въпроси в C ++ и Java
В # 1) Коя е по-добра C ++ или Java?
Отговор: Е, не можем категорично да кажем кое е по-добро. И C ++, и Java имат свои собствени достойнства и недостатъци. Докато C ++ е предимно добър за системно програмиране, ние не можем да го направим с Java. Но Java превъзхожда в приложения като уеб, десктоп и т.н.
Всъщност C ++ може да направи всичко - от системно програмиране до предприятие до игри. Java може да направи повече от мрежата или предприятието. Има някои приложения като някои програми за програмиране на ниско ниво или игри и т.н., които не могат да бъдат оставени на Java да се развива.
По този начин напълно зависи от това какво приложение разработваме. Най-добрият начин е да се оценят предварително плюсовете и минусите на двата езика и да се провери тяхната уникалност за приложението, което разработваме, и след това да заключим кой е най-добрият.
В # 2) C ++ по-мощен ли е от Java?
Отговор: Отново това е труден въпрос! Що се отнася до това колко по-лесно е синтаксисът или изучаването на езика, Java оценява. Що се отнася до системното програмиране и / или други приложения на ниско ниво, C ++ е по-мощен.
Някои хора могат да твърдят, че наличието на автоматични GC колекции, без указатели, без множество наследства правят Java по-мощна.
Но що се отнася до скоростта, C ++ е мощен. Също така в приложения като игри, където трябва да съхраняваме състоянието, автоматичното събиране на боклука може да съсипе задачите. По този начин C ++ очевидно е мощен тук.
В # 3) Можем ли да научим Java, без да знаем C или C ++?
Отговор: Да, определено!
След като познаем основите на програмирането и обектно-ориентираните концепции за програмиране, можем да започнем да изучаваме Java.
В # 4) С ++ като Java ли е?
Отговор: В някои отношения, да, но в някои отношения, не.
Както например, както C ++, така и Java са обектно-ориентирани езици за програмиране. Те могат да се използват за разработване на приложения. Те имат подобен синтаксис.
Но в други случаи като управление на паметта, наследяване, полиморфизъм и т.н., C ++ и Java са напълно различни. По същия начин, когато става въпрос за примитивни типове данни, обработка на обекти, указатели и т.н., двата езика са различни.
В # 5) Java написана ли е на C ++?
Отговор: Java в смисъла Java Virtual Machine (JVM) от Sun и IBM са написани на C ++. Библиотеките на Java са в Java. Някои други JVM са написани на C.
Заключение
C ++ и Java са обектно-ориентирани езици за програмиране. Освен това C ++ е и процедурен език. Има някои функции като наследяване, полиморфизъм, указатели, управление на паметта и т.н., при които двата езика напълно се различават помежду си.
Има някои характеристики на C ++ като близост до хардуер, по-добро управление на обекти, скорост, производителност и т.н., което го прави по-мощен от Java и по този начин мотивира разработчиците да използват C ++ за програмиране на ниско ниво, високоскоростни приложения за игри, системно програмиране и т.н.
По подобен начин по-лесният синтаксис на Java, автоматичното събиране на боклука, липсата на указатели, шаблони и др. Правят Java предпочитана за уеб-базирани приложения.
=> Посетете тук за пълния списък с уроци за C ++ .
Препоръчително четене
- Урок за JAVA за начинаещи: 100+ практически ръководства за Java видео
- Урок за интерфейс на Java и абстрактен клас с примери
- OOP Java: Въведение в обектно-ориентираното програмиране в Java
- Модификатори на достъп в Java - Урок с примери
- Разполагане на Java: Създаване и изпълнение на Java JAR файл
- Въведение в езика за програмиране на Java - видео урок
- Java виртуална машина: Как JVM помага при стартирането на Java приложение
- Урок за отражение на Java с примери