1
4.1

Оцінити

Статті читати 3 хв. 4.1 19 голосів 3711

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

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

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

Схожі матеріали

Подпишитесь на рассылку
Компьютерной школы Hillel

Ви отримаєте:

  • Інформацію про корисні галузеві заходи
  • Цікаві статті IT-сфери
  • Новини Комп'ютерної школи Hillel