Maison Java javaDidacticiel 10 mensonges sur Java

10 mensonges sur Java

Jan 18, 2017 pm 03:21 PM
java

Langage de programmation Java

Java est un langage de programmation orienté objet qui peut écrire des logiciels d'application multiplateformes. Il s'agit d'un langage de programmation Java et d'une plate-forme Java lancés par Sun Microsystems en mai 1995. (C'est-à-dire que le nom général de JavaEE(j2ee), JavaME(j2me), JavaSE(j2se)).


Les questions suivantes sont relativement avancées et sont rarement posées lors des entretiens car elles peuvent refuser les personnes interrogées. Mais vous pouvez trouver le temps de le pratiquer vous-même.

1. System.exit(0) ignorera l'exécution du bloc final

System.setSecurityManager(new SecurityManager() {
        @Override
        public void checkExit(int status) {
            throw new ThreadDeath();
        }
    });
    try {
        System.exit(0);
    } finally {
        System.out.println("In the finally block");
    }
Copier après la connexion

Pourquoi ce code affiche-t-il le bloc final ? Pourquoi la trace de la pile n'est-elle pas imprimée ?

2. String str = "Bonjour" ; où str est un objet chaîne Différentes du C, les variables en Java sont soit des types de base, soit des références. Les variables ne peuvent pas être des objets. Cela signifie que des expressions comme celle-ci :

String str = "Hello";
    String text = "Bye";
    str == text; // 比较两个引用,而不是内容
    str = text; // 把text的引用赋值给str
Copier après la connexion

Dans la plupart des cas, il n'y aura pas vraiment de différence, mais l'écrire de cette façon peut prêter à confusion.

final StringBuilder sb = new StringBuidler();
    sb.append("Hello"); // 这个引用是final类型的,而不是这个实例。
    method(sb); // 可以通过方法来修改这个实例,不过这个变量是无法修改的
Copier après la connexion

3. Les fuites de mémoire Java sont les mêmes que celles que les programmeurs C comprennent.

La définition des fuites de mémoire sur Wikipédia est "En informatique, si un programme n'est pas correctement géré. Allocation de mémoire , des fuites de mémoire se produiront. En programmation orientée objet, si un objet en mémoire n'est pas accessible dans le code, il s'agit d'une fuite de mémoire. Cependant, en Java, les objets sont toujours accessibles, et ceux qui ne le sont pas. sera effacé. Le terme fuite de mémoire en Java signifie qu'il existe des objets en mémoire qui ne devraient pas exister, généralement des ressources qui ne sont plus utilisées mais qui sont toujours stockées dans la collection.

4. La programmation multithread est difficile

La programmation multithread est en effet difficile si vous n'avez aucune expérience. Si vous jetez simplement un tas de code dans un tas de threads pour l'exécution, il n'y aura aucun moyen de résoudre le problème et ce ne sera qu'un gâchis. Mais si vous pouvez allouer des threads à la demande, contrôler l’interaction entre les threads et utiliser des modèles simples que les membres de l’équipe peuvent comprendre, le problème devient beaucoup plus simple. Bien sûr, un autre défi est que vous devez faire en sorte que tous les membres de l'équipe suivent vos règles :-)

5 Ne vous inquiétez pas des différences de performances entre les différentes opérations

J'ai récemment entendu cela. il y a Le problème implique l'ajout d'entiers, d'accès à la mémoire, de modulo et de sortie à la console. Bien que chacune de ces opérations soit d'un ordre de grandeur plus lente que la précédente, ce type voulait simplement optimiser l'opération la plus rapide, l'ajout, et la remplacer par des opérations plus coûteuses. Si vous souhaitez vraiment optimiser les performances, vous feriez mieux de remplacer ces opérations coûteuses par une opération peu coûteuse. Si votre goulot d'étranglement réside dans le matériel, par exemple, vous devez lire un grand nombre de fichiers sur le disque dur et modifier le code du logiciel. C'est inutile, car le problème n'est pas du tout là.

6. Les nombres aléatoires sont aléatoires

Un ensemble spécifique de nombres aléatoires est comme un certain modèle de nombres. J'ai déjà parlé de ce problème dans cet article. Beaucoup de gens ne croient pas que les nombres générés par les générateurs de nombres aléatoires ne soient pas réellement aléatoires.

7. Les nombres à virgule flottante doivent être évités car ils peuvent produire des erreurs aléatoires.

Pour la même opération, les nombres à virgule flottante produiront la même erreur à chaque fois. Les erreurs sont prévisibles et donc contrôlables. Si vous savez ce que vous essayez de faire et respectez quelques règles simples comme arrondir le résultat, vous ne vous tromperez pas plus avec un nombre à virgule flottante qu'avec un BigDecimal, et en plus, il est plus lisible. Il est plus robuste et plus plus de cent fois plus rapide (et génère moins d'objets indésirables).

8. Les fuseaux horaires sont éternels

La raison de ce malentendu est que les fuseaux horaires changent à mesure que l'heure change. Cela signifie que l'Europe/Londres dans la nouvelle ère est le 1/1/1970 à 01h00 au lieu de 00h00, pourquoi ? Parce que Londres a utilisé l’heure d’été entre 1968 et 1971.

Ces dernières années, de nombreux fuseaux horaires ont également changé. Autrefois GMT 3 à Moscou, aujourd'hui GMT 4 (à partir du 27 mars 2011). Si vous regardez l'époque en 2010, vous constaterez qu'il s'agit du 3ème District Est au lieu du 4ème District Est.

Il y a autre chose qui peut vous surprendre :

Février en Suède en 1721 comptait 30 jours.

Le premier jour en Angleterre en 1751 était le 25 mars, soit 11 jours de retard sur la France.

Après que les États-Unis ont adopté le calendrier grégorien, celui-ci est remonté des centaines d'années en arrière, de sorte que les dates initialement enregistrées pouvaient être représentées par deux calendriers (généralement deux dates sont fournies en même temps pour plus de précision). Par exemple, l'anniversaire de George Washington est passé du 11 février 1731 au 22 février 1732.

9. Lorsque vous lisez une variable non volatile dans un thread, vous pouvez éventuellement lire sa valeur mise à jour.

Cette question est apparue deux fois sur StackOverflow il y a quelques jours. De manière générale, lorsque le compilateur JIT optimise le code, il intègre les champs non volatiles qui n'ont pas été modifiés par ce thread. Une fois ce code compilé (vous pouvez le voir via -XX : PrintCompilation), les modifications que vous apportez à ce champ dans un autre thread ne seront probablement jamais visibles. L'ajout de blocs de synchronisation aléatoires ou d'instructions d'impression peut retarder l'exécution de cette optimisation ou perturber le compilateur JIT afin qu'il n'effectue pas cette optimisation.

10. Les questions d'entretien Java sont toutes correctes

De nombreuses questions d'entretien Java sont soit obsolètes (n'ont pas été mises à jour depuis plus de 10 ans et sont déconnectées de la version actuelle de Java), ou trompent tout le monde, peut-être même à tort. Malheureusement, ces réponses circulent sans être vérifiées.

Je ferai référence aux réponses sur Stackoverflow car les réponses ici sont mieux évaluées par les pairs. En général, n'utilisez pas de sites Web comme Rose India. La qualité des réponses ci-dessus est ridiculement mauvaise. Si vous souhaitez approfondir, vous pouvez jeter un œil au nombre de fautes d’orthographe (noms de classe et termes professionnels) ou de déclarations erronées contenues dans l’article ci-dessus. L’une des raisons de ces problèmes est qu’il n’existe aucun mécanisme de rétroaction efficace pour corriger ces erreurs.

Ce qui précède est le contenu de 10 mensonges sur Java. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !


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

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.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

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)

Questions d'entretien chez Java Spring Questions d'entretien chez Java Spring Aug 30, 2024 pm 04:29 PM

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Break or Return of Java 8 Stream Forach? Break or Return of Java 8 Stream Forach? Feb 07, 2025 pm 12:09 PM

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Horodatage à ce jour en Java Horodatage à ce jour en Java Aug 30, 2024 pm 04:28 PM

Guide de TimeStamp to Date en Java. Ici, nous discutons également de l'introduction et de la façon de convertir l'horodatage en date en Java avec des exemples.

Programme Java pour trouver le volume de la capsule Programme Java pour trouver le volume de la capsule Feb 07, 2025 am 11:37 AM

Les capsules sont des figures géométriques tridimensionnelles, composées d'un cylindre et d'un hémisphère aux deux extrémités. Le volume de la capsule peut être calculé en ajoutant le volume du cylindre et le volume de l'hémisphère aux deux extrémités. Ce tutoriel discutera de la façon de calculer le volume d'une capsule donnée en Java en utilisant différentes méthodes. Formule de volume de capsule La formule du volume de la capsule est la suivante: Volume de capsule = volume cylindrique volume de deux hémisphères volume dans, R: Le rayon de l'hémisphère. H: La hauteur du cylindre (à l'exclusion de l'hémisphère). Exemple 1 entrer Rayon = 5 unités Hauteur = 10 unités Sortir Volume = 1570,8 unités cubes expliquer Calculer le volume à l'aide de la formule: Volume = π × r2 × h (4

PHP: un langage clé pour le développement Web PHP: un langage clé pour le développement Web Apr 13, 2025 am 12:08 AM

PHP est un langage de script largement utilisé du côté du serveur, particulièrement adapté au développement Web. 1.Php peut intégrer HTML, traiter les demandes et réponses HTTP et prend en charge une variété de bases de données. 2.PHP est utilisé pour générer du contenu Web dynamique, des données de formulaire de traitement, des bases de données d'accès, etc., avec un support communautaire solide et des ressources open source. 3. PHP est une langue interprétée, et le processus d'exécution comprend l'analyse lexicale, l'analyse grammaticale, la compilation et l'exécution. 4.PHP peut être combiné avec MySQL pour les applications avancées telles que les systèmes d'enregistrement des utilisateurs. 5. Lors du débogage de PHP, vous pouvez utiliser des fonctions telles que error_reportting () et var_dump (). 6. Optimiser le code PHP pour utiliser les mécanismes de mise en cache, optimiser les requêtes de base de données et utiliser des fonctions intégrées. 7

PHP vs Python: comprendre les différences PHP vs Python: comprendre les différences Apr 11, 2025 am 12:15 AM

PHP et Python ont chacun leurs propres avantages, et le choix doit être basé sur les exigences du projet. 1.Php convient au développement Web, avec une syntaxe simple et une efficacité d'exécution élevée. 2. Python convient à la science des données et à l'apprentissage automatique, avec une syntaxe concise et des bibliothèques riches.

Créer l'avenir : programmation Java pour les débutants absolus Créer l'avenir : programmation Java pour les débutants absolus Oct 13, 2024 pm 01:32 PM

Java est un langage de programmation populaire qui peut être appris aussi bien par les développeurs débutants que par les développeurs expérimentés. Ce didacticiel commence par les concepts de base et progresse vers des sujets avancés. Après avoir installé le kit de développement Java, vous pouvez vous entraîner à la programmation en créant un simple programme « Hello, World ! ». Une fois que vous avez compris le code, utilisez l'invite de commande pour compiler et exécuter le programme, et « Hello, World ! » s'affichera sur la console. L'apprentissage de Java commence votre parcours de programmation et, à mesure que votre maîtrise s'approfondit, vous pouvez créer des applications plus complexes.

Comment exécuter votre première application Spring Boot dans Spring Tool Suite? Comment exécuter votre première application Spring Boot dans Spring Tool Suite? Feb 07, 2025 pm 12:11 PM

Spring Boot simplifie la création d'applications Java robustes, évolutives et prêtes à la production, révolutionnant le développement de Java. Son approche "Convention sur la configuration", inhérente à l'écosystème de ressort, minimise la configuration manuelle, allo

See all articles