Різниця між мовами програмування C++ і Java

Різниця між мовами програмування C++ і Java

  • 25 жовтня, 2023
  • читати 3 хв

Де застосовується Java

І Java, і C++ — об'єктно-орієнтовані мови програмування, але на цьому їх схожість, мабуть, закінчуються, а ось відмінностей між ними досить багато. Почнемо з того, що Java - чиста об'єктно-орієнтована мова програмування; отже, у Java все є об'єктом (однокоренева ієрархія, оскільки все виходить від java.lang.Object). У той час як в C++ не існує подібної кореневої ієрархії. C++ підтримує як процедурне, так і об'єктно-орієнтоване програмування; тому він називається гібридним. Нижче у таблиці наведені основні характеристики цих мов і їх відмінності.

Рекомендуємо курс по темі

Для чого потрібен С ++

У той час як в C ++ не існує подібної кореневої ієрархії. C ++ підтримує як процедурне, так і об'єктно-орієнтоване програмування; тому він називається гібридним. Нижче в таблиці наведені основні характеристики цих мов і їх відмінності.

Рекомендуємо курс по темі

Основні відмінності мов Java і C ++

JavaC++
Java
не підтримує покажчики (pointers), шаблони (templates), об'єднання
(unions), перевантаження операторів (operator overloading), структур і
т.д. Спочатку було заявлено, що в мові Java немає ніяких покажчиків, але
багатьом програмістам було незрозуміло, як можна працювати без
покажчиків, і тоді стали говорити, що їх обмежена кількість. Java
підтримує так звані «посилання» ( "references"). Посилання мають багато в
чому схожу з покажчиками в С++ функцію, але на покажчиках в Java
неможливо здійснювати арифметичні дії. У посилань є типи, і вони
тіпобезопасни (type-safe). Їх не можна інтерпретувати як адреса raw, а
небезпечна конверсія заборонена.
C
++ підтримує структури, об'єднання (unions), шаблони (templates),
перевантаження операторів (operator overloading), покажчики (pointers) і
адресну арифметику покажчиків (pointer aritdmetic).
Java підтримує автоматичне керування звільненням динамічної пам'яті. Вона, на відміну від C++, не підтримує деструктори.
C++ підтримує деструктори. Ця функція автоматично активується при знищенні об'єкта.
Java не підтримує умовну компіляцію і включення.
Умовне включення (#ifdef #ifndef type) - одна з основних функцій C++.
Java
володіє вбудованою підтримкою потоків (tdreads). У Java є клас потоків,
який успадковується для створення нового потоку і перевизначення методу
run.
C++ не має вбудованої підтримки потоків. Для цих цілей використовуються нестандартизовані бібліотеки третіх сторін.
Java
не підтримує параметри за замовчуванням. У Java немає оператора дозволу
контексту (: :). Визначення методу повинні відбуватися всередині класу,
тому немає потреби у розв'язанні конфлікту.
C++
підтримує параметри за замовчуванням. C++ має оператор дозволу
контексту (: :), який використовується для визначення методу поза класом
і для доступу до глобальної змінної всередині з області дії
ідентифікатора, де внутрішня змінна також існує з тим же ім'ям.
У
Java немає оператора переходу «goto». Зберігаються ключові слова
«const» and «goto» незважаючи на те, що вони не використовуються.
C++ володіє оператором переходу «goto». Однак, використання оператора переходу «goto» не вітається.
Java не надає множинне спадкування, по крайней мере, не так, як C ++
C++
підтримує множинне успадкування. Для усунення неоднозначності у разі її
виникнення під час множинного успадкування використовується ключове
слово «virtual».
Обробка
винятків «exceptions» у Java відрізняється, оскільки деструктори
відсутні. До того ж у Java команди «try / catch» повинні визначатися у
тому випадку, якщо функція вказує, що може згенерувати виключення
«exception».
У той час, як у C++ може не включати команди «try / catch» незважаючи на те, що ця функція генерує виключення.
У
Java є метод перевантаження «metdod overloading», але відсутнє
перевантаження операторів «operator overloading». Клас «Stringclass» не
використовує оператори + і + = для з'єднання рядків «strings», а рядкові
вирази «Stringexpressions» використовують автоматичне перетворення
типів, але це особлива вбудована опція (built-in case).
C ++ підтримує як перевантаження методу, так і перевантаження оператора.
Java
має вбудовану підтримку коментарів до документації (/ ** ... * /); тому
вихідні файли Java можуть утримувати власну документацію, яка читається
окремим інструментом, зазвичай Javadoc, і переформатуватися у HTML. Це
спрощує ведення документації.
C++ не підтримує коментарі до документації.
Java, по більшій мірі, інтерпретується, тому не залежить від платформи.
C ++ генерує об'єктний код; той же код може не запускатися на різних платформах.