Un programmeur amateur qui n'aime pas beaucoup Java a essayé de résoudre "10 questions pour savoir s'il est un programmeur Java"

introduction

Comme vous pouvez le voir dans les articles précédents, j'utilise généralement C ++ et Ruby Et comme vous pouvez le voir dans le titre, je ** n'aime pas beaucoup Java ** La raison pour laquelle je déteste c'est qu'il était difficile de comprendre le modèle de conception car il était long dans le package ou l'espace de noms. Il peut également y avoir une résistance initiale lorsque vous touchez un langage orienté objet à partir du langage C Donc Perl est plus adapté au sexe et est connecté au Ruby actuel (style Perl et facile à écrire) C'est comme ça, mais j'ai souvent touché à Java et je lis souvent des sources écrites en Java. ** J'ai testé ma compréhension de Java ** La page utilisée pour le test est le site ci-dessous 10 questions pour savoir si vous êtes un programmeur Java

problème

  1. Quelle est la différence entre l'opérateur == et la méthode égale?
  2. Expliquez la différence entre la concaténation de chaînes avec l'opérateur + et la concaténation avec StringBuilder.
  3. Quel est le but principal de l'utilisation de types génériques comme List ?
  4. Quelles sont les principales conditions dans lesquelles un objet est garbage collection (GC)?
  5. Expliquez la différence entre les exceptions cochées et non cochées en termes de type et de gestion des exceptions.
  6. Expliquez la raison principale pour laquelle une politique de conception fait référence à un champ en rendant le modificateur d'accès au champ privé et en fournissant une méthode getter / setter.
  7. Quelles sont les principales situations dans lesquelles une exception NullPointerException se produit?
  8. Quelle est la différence entre surcharge et dérogation?
  9. Qu'est-ce qu'un constructeur?
  10. Expliquez l'un des objectifs de l'utilisation de l'interface

Ma réponse

"==" Est ** une comparaison indiquant si les classes sont identiques ** et "égal" est ** une comparaison indiquant si les données internes (caractères stockés pour String) sont égales **. Dans Ruby, "==" est fondamentalement le même que "equals" de Java. 2. "+" ** Recrée une nouvelle chaîne qui combine deux classes String **. StringBuilder est une classe qui peut être étendue et réduite. ** Lorsqu'elle est connectée à StringBuilder, les caractères sont développés en lui-même **. Une image comme la différence entre non destructif et destructif dans Ruby 3. ** Pouvoir l'utiliser avec différents types (classes) **. Par exemple, il n'est pas pratique qu'il prenne en charge int mais pas float. Cela ne veut pas dire qu'il est correct de définir chaque classe, ce qui résout cette situation. Je suis un programmeur C ++, donc je me demande si c'est correct 4. Lorsque la largeur spécifiée est dépassée lors du mappage de la mémoire? ** Je ne sais pas avant le moment ** 5. ** Je ne connais pas les exceptions cochées et non cochées car je n'ai pas entendu le nom lui-même ** 6. ** Parce que je ne veux pas que la classe utilise des données inattendues **. Par exemple, lorsque la classe MyString qui contient le nombre de caractères et de caractères stockés se rencontre, l'écriture simultanée du nombre de caractères et des caractères stockés peut provoquer des erreurs humaines dans lesquelles les données les unes des autres sont incohérentes. Par conséquent, en utilisant la classe setter, l'utilisateur de la classe n'a pas à être conscient des opérations détaillées en stockant les caractères et en modifiant la longueur de la chaîne de caractères en même temps. 7. ** Par exemple, en faisant référence à Null **, lors de l'exécution de «1 + Null», etc. C'est aussi Ruby. 8. La surcharge ** crée une méthode portant le même nom avec différents types d'arguments et nombres dans la même classe **. La surcharge ** remplace une méthode héritée de la classe parente **. Je le dis sans savoir pourquoi la définition est surchargée (j'ai envie de l'emporter) 9. ** Premier processus lors de la création d'une classe **, principalement processus d'initialisation 10. ** En Java, où l'héritage multiple n'est pas autorisé, les méthodes de l'interface peuvent être partagées par plusieurs classes sans classe parente ** Cela le rend adapté à la conception de polymorphisme

en conclusion

J'ai dit que je n'aime pas Java, mais j'ai résolu quelques problèmes de base Mais ce ne sont que des connaissances superficielles, donc c'est probablement tout à fait faux. Gentils programmeurs Java qui ont vu jusqu'à présent, si vous avez le temps, merci pour vos commentaires.

Recommended Posts

Un programmeur amateur qui n'aime pas beaucoup Java a essayé de résoudre "10 questions pour savoir s'il est un programmeur Java"
Un ingénieur qui ne comprend pas Java est allé à JJUG CCC.