Maison Java JavaBase Quelle est la différence entre Java et C++

Quelle est la différence entre Java et C++

Mar 24, 2021 pm 03:25 PM
c++ java

Différence : Java ne peut pas utiliser une valeur non booléenne comme valeur booléenne dans une expression logique, mais C++ le peut. C++ introduit un mécanisme de surcharge d'opérateurs, que Java ne prend pas en charge. C++ est obligatoire, Java n'est pas obligé. Il existe plusieurs héritages en C++ et un seul héritage en Java, mais Java peut implémenter plusieurs héritages via des interfaces.

Quelle est la différence entre Java et C++

L'environnement d'exploitation de ce tutoriel : système Windows7, version C++17&&java8, ordinateur Dell G3.

La différence entre C++ et Java :

Bien que Java soit basé sur C++, en comparaison, Java est un langage de programmation orienté objet plus pur. En Java, tout est traité comme un objet.

1. Une fois que C++ a créé un objet, vous devez appeler la méthode delete pour le détruire après l'avoir utilisé ; Java dispose d'un mécanisme de récupération de place pour surveiller tous les nouveaux objets et identifier les objets qui ne seront plus référencés. libérer de l'espace mémoire.

2. Portée (la portée de C, C++ et Java est déterminée par la position des accolades) :
Mais le code suivant est légal en C et C++, et le compilateur signalera le variable en Java définie. Parce que C et C++ masqueront les variables avec des portées plus grandes, mais Java ne le permet pas.

{
    int x = 12;
    {
        int x = 96;
    }
}

3. Valeurs par défaut des membres de base

Lorsque les variables sont utilisées en tant que membres d'une classe, Java ne donne que des valeurs par défaut pour garantir que ces variables membres de base les types sont initialisés. Mais C++ n'a pas cette fonctionnalité. Pour les variables locales, le compilateur C++ vous avertira et Java le traitera comme une erreur.

4. Java ne peut pas utiliser une valeur non booléenne comme valeur booléenne dans une expression logique, mais C++ le peut.

En C++, si la valeur d'une expression est 0, elle est fausse, et si elle n'est pas 0, elle est vraie.

Par exemple :

if(1){
}

5. Opérateur de décalage

Un nouvel opérateur de décalage à droite "non signé" est ajouté en Java (>>> ), qui utilise " extension zéro", en insérant des 0 dans les bits hauts, qu'ils soient positifs ou négatifs. Ceci n'est pas disponible en C et C++.

6. C++ introduit le mécanisme de surcharge d'opérateurs, qui n'est pas pris en charge par Java, mais vous pouvez implémenter vos propres opérateurs surchargés en C#.

7. Java nous permet de convertir n'importe quel type de données de base en d'autres types de données de base, à l'exception des types booléens. [Tutoriels vidéo associés recommandés : Tutoriel vidéo Java]

8. Java n'a pas Sizeof(). En CC++, l'opérateur sizeof() peut nous indiquer le nombre d'octets alloués à un élément de données, car différents types de données en C++ peuvent avoir des tailles différentes sur différentes machines. Mais tous les types de données en Java ont la même taille sur toutes les machines. (Par exemple, l'int de C++ est de 16 bits sur les machines 16 bits, de 32 bits sur les machines 32 et supérieures, le long est de 32 bits sur les machines 32 bits et inférieures, et de 64 bits sur les machines 64 bits)

9, C++ Il y a goto, mais Java n'a pas de goto.

Java propose un mécanisme de saut similaire : les balises. Libellé d'utilisation :

label1:
outer-iteration{
        inner-iteration{
    break;(1)
    continue;(2)
    continue label1;(3)
break label1;(4)

}
}
  • (1), break interrompt l'itération interne et revient à l'itération externe

  • (2), continue déplace le point d'exécution au début de l'itération interne.

  • (3), continuez l'itération interne du terminal label1 et l'itération externe en même temps, allez directement à label1 puis continuez l'itération, en commençant par l'itération externe.

  • (4) break label1 interrompra également toutes les itérations et reviendra à label1, mais ne réintégrera pas l'itération. Autrement dit, deux itérations sont complètement terminées.

10. Le destructeur en C++ offre la possibilité de libérer les ressources occupées par l'objet avant qu'il ne soit supprimé, mais Java ne fournit pas de « destructeur » ou de concept similaire. [Tutoriels vidéo associés recommandés : Tutoriel vidéo C++]

En C++, l'objet sera définitivement détruit (si le programme ne présente aucun défaut

En Java, les objets) ; ne sont pas toujours ramassés. (Le garbage collection n'équivaut pas à "destruction")

11. Masquage du nom

Si la classe de base de Java a un nom de méthode qui a été surchargé plusieurs fois, alors dans la classe dérivée Redéfinir le nom de la méthode n'en bloque aucune version dans la classe de base. Si C++ souhaite introduire une nouvelle méthode surchargée dans une sous-classe, il doit protéger la méthode de la classe de base.

12. Il existe plusieurs héritages en C++, mais il n'y a qu'un seul héritage en Java. Java peut implémenter plusieurs héritages via des interfaces.

13. Java est semi-interprété et semi-compilé, et s'exécute plus lentement que C++.

14. Java n'a pas de Struct ou d'Union

15. Les génériques de Java ne permettent pas l'utilisation de types de données de base.

16. Tableau

  • En c++, lorsqu'un tableau est défini, l'espace de stockage a été alloué et peut être utilisé. (Spécifiez la taille du tableau lors de la définition)

  • En Java, lorsque le tableau est défini, int arr[] ne définit que la variable du tableau littéralement, et le tableau ne peut pas être utilisé. Ce n'est qu'après la création de la baie que la baie sera créée, l'espace de stockage alloué et disponible pour utilisation. (Il est illégal de spécifier la taille du tableau lors de la définition. Spécifiez la taille du tableau lors de la création)

17 C++ a des pointeurs, mais pas Java.

18. Vous trouverez ci-joint une comparaison des principales longueurs de C++ dans les systèmes 32 bits et 64 bits :

Quelle est la différence entre Java et C++

Pour plus de connaissances liées à la programmation, veuillez visiter : Vidéo de programmation ! !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1525
276
Comment corriger MSVCP71.dll dans votre ordinateur? Il n'y a que trois méthodes requises Comment corriger MSVCP71.dll dans votre ordinateur? Il n'y a que trois méthodes requises Aug 14, 2025 pm 08:03 PM

L'ordinateur invite "MSVCP71.DLL est absent de l'ordinateur", ce qui est généralement dû au fait que le système manque de composants en cours d'exécution, ce qui fait que le logiciel ne charge pas normalement. Cet article analysera profondément les fonctions du fichier et la cause profonde de l'erreur, et fournira trois solutions efficaces pour vous aider à restaurer rapidement le programme à exécuter. 1. Qu'est-ce que msvcp71.dll? MSVCP71.DLL appartient au fichier de bibliothèque d'exécution de base de Microsoft Visualc 2003 et appartient au type de bibliothèque de liens dynamiques (DLL). Il est principalement utilisé pour prendre en charge les programmes écrits en C pour appeler les fonctions standard, les modèles STL et les modules de traitement de base de données. De nombreuses applications et jeux classiques développés au début des années 2000 reposent sur ce fichier à exécuter. Une fois le fichier manquant ou corrompu,

C Exemple de surcharge de l'opérateur C Exemple de surcharge de l'opérateur Aug 15, 2025 am 10:18 AM

La surcharge de l'opérateur en C permet d'attribuer de nouveaux comportements des opérateurs standard aux types personnalisés, 1. Renvoie de nouveaux objets via la surcharge de la fonction membre; 2. Overload = modifier l'objet actuel et la référence de retour; 3. Fonction d'amie surcharge

std :: map vs std :: non ordered_map en c std :: map vs std :: non ordered_map en c Aug 14, 2025 pm 06:53 PM

En C, le choix de STD :: Map et STD :: Unordred_map dépend des exigences spécifiques. 1. Différentes structures sous-jacentes: MAP STD :: est implémenté en fonction des arbres rouges et noirs, avec des clés stockées dans l'ordre, l'ordre croissant par défaut et la complexité de la recherche et de l'insertion est O (Logn); STD :: Unordred_map utilise une table de hachage, non ordonnée, et la complexité moyenne de la recherche et de l'insertion est O (1), et le pire est O (n). 2. Performances d'insertion et frais généraux de mémoire: l'insertion de la carte nécessite le maintien de la structure des arbres et est moins efficace; L'insertion non ordonnée_map est plus rapide mais consomme plus de mémoire et peut être optimisée via réserve (). 3. Fonction de comparaison personnalisée: MAP prend en charge la fonction de comparaison personnalisée, non ordonnée

Comment déployer une application Java Comment déployer une application Java Aug 17, 2025 am 12:56 AM

Préparez-vous en application par rapport à Mavenorgradletobuildajarorwarfile, externalisationConfiguration.2.ChoOSEADPLOYENDIRONMENT: Runonbaremetal / vmwithjava-jarandsystemd, deploywarontomcat, compeneriserisewithdocker, orusecloudplatformslikelise.

Comment configurer la journalisation dans une application Java? Comment configurer la journalisation dans une application Java? Aug 15, 2025 am 11:50 AM

L'utilisation de SLF4J combinée avec la journalisation ou le log4j2 est le moyen recommandé de configurer les journaux dans les applications Java. Il introduit des bibliothèques API et implémentation en ajoutant des dépendances Maven correspondantes; 2. Obtenez l'enregistreur via le loggerfactory de SLF4J dans le code et écrivez le code journal découplé et efficace à l'aide de méthodes de journalisation paramétrée; 3. Définir le format de sortie du journal, le niveau, la cible (console, le fichier) et le contrôle du journal du package via Logback.xml ou les fichiers de configuration log4j2.xml; 4. Activer éventuellement la fonction de balayage de fichiers de configuration pour atteindre un ajustement dynamique du niveau de journal, et Springboot peut également être géré via des points de terminaison de l'actionneur; 5. Suivez les meilleures pratiques, y compris

C Faux Exemple de partage C Faux Exemple de partage Aug 16, 2025 am 10:42 AM

Le falsification se produit lorsque plusieurs threads modifient différentes variables dans la même ligne de cache, entraînant une défaillance du cache et une dégradation des performances; 1. Utilisez le remplissage de la structure pour faire de chaque variable exclusivement occuper une ligne de cache; 2. Utilisez Alignas ou Std :: Hardware_destructive_interference_Size pour l'alignement de la mémoire; 3. Utilisez des variables de thread-locales pour enfin fusionner les résultats, évitant ainsi les pseudo-partageurs et l'amélioration des performances des programmes multi-thread.

Liaison des données XML avec Castor en Java Liaison des données XML avec Castor en Java Aug 15, 2025 am 03:43 AM

CASTORENablesxml-to-javaObjectMappingViadefaultConverionsOrexplicitMappingFiles; 1) DefinejavaclasseswithGetters / seters; 2) useUnmarShallertOConvertXmltoObjects; 3)

Comment rédiger un makefile de base pour un projet C? Comment rédiger un makefile de base pour un projet C? Aug 15, 2025 am 11:17 AM

AbasicMakeFileAutomatesC Compilation par définition de produits avec des objectifs, des dépendances et des commandes.2.

See all articles