Cet article a fait un résumé relativement complet des connaissances de base du langage de programmation Java, et j'aimerais le partager avec vous ici. Les amis dans le besoin peuvent s'y référer.
Connaissance de base de Java
1) Avantages du langage Java :
1) Java est un langage purement orienté objet
2) Indépendant de la plate-forme, compilé une fois et exécuté partout
3) Java fournit de nombreuses bibliothèques de classes intégrées
4) Fournit une prise en charge des applications Web
5) Possède une bonne sécurité (détection des limites du tableau, détection du bytecode) et une bonne robustesse (mécanisme d'application, garbage collector, gestion des exceptions)
6) Supprimer certaines fonctionnalités difficiles à comprendre en C++ (opérateur de pointeur de fichier d'en-tête surchargeant l'héritage multiple)
Similitudes et différences entre Java et C++ : .
1) Java est un langage interprété et C++ est un langage compilé. Java est lent mais multiplateforme
2) Java est purement orienté objet, et C++ est à la fois orienté objet et orienté objet. Les objets peuvent également être orientés processus. Java n'a pas de variables globales ni de fonctions globales
3) Java n'a pas de pointeurs, ce qui est plus sûr
4) Java ne prend pas en charge l'héritage multiple mais a le concept d'interfaces
5) Java ne nécessite pas d'allocation et de gestion manuelles de la mémoire (demande de libération), et assure un recyclage automatique par le ramasse-miettes. Lorsqu'il n'y a aucune référence à l'objet sur la pile ou le stockage statique, il sera recyclé. Il n’y a pas de destructeur, mais il existe une méthode finalize().
6) Java n'a pas de surcharge d'opérateurs ni de fonction de prétraitement.
3. public static void main(String [] args) est le point d'entrée du programme.
4. Java peut avoir plusieurs fichiers main(), mais seul le main() d'une classe décorée avec public qui porte le même nom que le fichier peut être utilisé comme programme d’entrée. Remarque : Il existe et il n'existe qu'une seule classe modifiée par public et portant le même nom que le fichier.
5. le bloc statique est exécuté avant la fonction principale . Séquence d'exécution de l'initialisation : parent variable statique parent bloc de code statique enfant variable de code statique enfant bloc de code statique parent variable non statique parent bloc de code non statique constructeur de classe parent enfant variable non statique enfant bloc de code non statique constructeur de classe enfant
6. Constructeur :
1) Le même nom que la classe, pas de valeur de retour
2) Il peut être multiple, selon Différents paramètres
3) Toujours appelé avec une nouvelle opération
4) Principalement utilisé pour initialiser des objets
5) Ne peut pas être hérité
6) Super peut être utilisé pour appeler explicitement le constructeur de la classe parent
7. La copie superficielle copie uniquement l'objet considéré, pas l'objet auquel il fait référence. à. Copie approfondie des deux
8. Quelle est la différence entre orienté objet et orienté processus :
1) Orienté L'approche orientée objet consiste à traiter les problèmes du monde objectif d'une manière conforme à la pensée conventionnelle, tandis que l'approche orientée processus est centrée sur les événements et modulaire.
2) L'orientation objet rapproche le monde informatique du monde objectif, rendant le traitement des problèmes plus clair. Orienté processus est un module qui exprime clairement et précisément les processus, en résumant les problèmes du monde objectif en processus pouvant être traités par des ordinateurs.
9. Caractéristiques et avantages orientés objet : L'abstraction, l'héritage, l'encapsulation, le polymorphisme ont une efficacité de développement élevée et le code peut être réutilisé. Maintenabilité plus élevée et code plus clair.
10. Java ne prend en charge que l'héritage racine unique, l'héritage étendu est une relation et la combinaison est une relation.
Si vous pouvez utiliser la combinaison en langage Java, essayez de ne pas utiliser l'héritage.
11. Polymorphisme :
surcharge (il existe plusieurs méthodes portant le même nom dans la même classe) Relation horizontale
Réécriture (la sous-classe réécrit la classe parent, le nom de la méthode et la liste des paramètres sont les mêmes) Relation verticale
12. Similitudes et différences entre les classes abstraites et les interfaces :
1) Tant qu'elle contient une méthode abstraite, c'est une classe abstraite. Toutes les méthodes de l'interface sont des méthodes abstraites, ce qu'on appelle une classe abstraite pure.
2) Les sous-classes des classes abstraites doivent implémenter les méthodes abstraites de la classe parent.
3) Les variables de l'interface sont par défaut : static final et doivent se voir attribuer une valeur initiale.
4) L'interface est implémentée à l'aide d'outils. Une classe peut implémenter plusieurs interfaces pour obtenir une relation similaire à l'héritage multiple.
5) L'interface est utilisée pour les fonctions couramment utilisées, telles que l'ajout et la suppression. Les classes abstraites sont utilisées pour le rôle des classes publiques dans la vie quotidienne et ne conviennent pas aux modifications fréquentes du code
13. La différence entre this et super :
Ceci est utilisé pour pointer vers l'objet d'instance actuel
Super est utilisé pour accéder aux méthodes et aux variables membres de la classe parent
Lorsque la sous-classe hérite la classe parent, super(dans le constructeur de sous-classe) ) doit être placée comme première phrase.
14. La différence entre break continue return :
Break est utilisé pour sortir de force directement de la boucle actuelle sans exécuter le code restant.
Continuer permet d'arrêter la boucle en cours et de revenir au point de départ de la boucle suivante.
Le saut de retour est utilisé pour indiquer le retour d'une méthode.
Sortez pour sortir de plusieurs boucles
15. Le rôle du statique :
a Assign. une seule valeur à l'objet L'espace de stockage n'a rien à voir avec le nombre d'objets créés
b Implémenter une méthode ou un attribut et une classe plutôt que de l'associer à l'objet
Les variables C peuvent obtenir des effets globaux , il n'y a qu'une seule copie en mémoire
16. Implémentation de classes immuables :
Toutes les variables membres de la classe sont modifiées par privé
Aucune méthode définie n'est écrite
Définition de classe finale
17 , la différence entre passer par valeur et passer par référence :
Passage par valeur : le paramètre réel transmettra sa valeur au paramètre formel
Passage par référence : ce qui est passé est un objet, les paramètres formels et les paramètres réels pointent vers la même unité de stockage.
18. Il existe huit types de données de base. La priorité de la conversion de type : l'octet ne peut pas être échangé avec booleam.
19. round signifie arrondi, ceil signifie arrondir, floor signifie arrondir vers le bas, i++ signifie exécuter d'abord puis ajouter
un, ++i signifie Ajoutez-en un d’abord, puis exécutez.
20. String s1="abc" est un objet stocké dans la zone constante
String s2="abc" s2 s'applique au zone constante. Aucun nouvel objet ne sera créé.
String s3=new String ("abc") sert à créer un objet dans le tas,
String s4=new String ("abc") doit être dans le tas Créer de nouveaux objets.
21. "==" et "equals"
"==" est utilisé pour comparer si les valeurs de deux variables sont égaux. Si une variable pointant vers des données est un objet (type référence) et qu'il y a deux morceaux de mémoire. L'objet lui-même occupe un morceau de mémoire (mémoire tas) et les variables occupent également un morceau de mémoire. Chaîne s4 = nouvelle chaîne ("abc"). La valeur stockée dans la mémoire correspondant à la variable s est la première adresse de la mémoire occupée par l'objet. Si vous voulez voir si deux variables pointent vers le même objet, vous devez voir si leurs valeurs correspondantes (premières adresses) en mémoire sont les mêmes.
equals ne compare pas les références, mais les contenus numériques, c'est-à-dire que abc est comparé.
22. Les tableaux sont aussi des objets. Les tableaux fournissent l'attribut length pour obtenir la longueur du tableau, et String est calculé via length().
23. Gestion des exceptions
1) essayez d'attraper enfin le mode
2) Codez enfin le bloquer sera définitivement exécuté, sauf dans ces deux situations : lorsque le programme rencontre une exception avant try ou lorsqu'il est forcé de quitter via exit() lors de try.
3) JVM représente l'erreur comme une exception et la lance, l'attrape via catch, puis la traite. Sécurité et robustesse.
4) Les exceptions sont divisées en deux catégories : les erreurs et les exceptions.
Les exceptions sont divisées en : vérifier les exceptions et exécuter des exceptions.
Les exceptions vérifiées sont également appelées exceptions de compilation.
Par exemple : exception IO, exception SQL
Les exceptions en cours d'exécution sont : exception de pointeur nul, exception de conversion de type, exception arithmétique, exception hors limites de tableau, tableau exception de stockage, exception de débordement de zone de cache.
Attrapez d'abord la sous-classe, puis la classe parent, lancez l'exception le plus tôt possible, gérez-la si elle peut être gérée, lancez-la si elle ne peut pas être gérée, l'exception d'exécution n'a pas réellement besoin pour être manipulé, il est lancé directement.
24. Java IO : Le flux d'octets (8 bits) n'utilise pas de cache. Le flux de caractères (16 bits) utilise le cache
25. Socket est appelé une prise. Utilisé pour implémenter la communication entre différentes machines virtuelles ou différents ordinateurs.
est divisé en deux types : TCP orienté connexion, fiable. Pas d'UDP orienté connexion, peu fiable.
Tout Socket est déterminé de manière unique par une adresse IP et un numéro de port.
26. L'indépendance de la plate-forme Java signifie que les programmes sont écrits et compilés sur une plate-forme et exécutés sur d'autres plates-formes. Il existe des API JVM et Java.
Le langage Java est un langage interprété dynamiquement, et les classes ne peuvent s'exécuter que lorsqu'elles sont chargées dans la JVM. Au lieu de charger toutes les classes en même temps, puis de les exécuter, la classe de base est chargée en premier et les autres classes sont chargées si nécessaire.
27, Garbage Collection GC : Recyclez la mémoire qui ne sera plus utilisée. Trois tâches : allouer de la mémoire ; s'assurer que la mémoire référencée n'est pas récupérée de manière incorrecte ; et récupérer la mémoire pour les objets qui ne sont plus référencés.
28. Problème de fuite de mémoire en java :
Deux situations :
1) Dans le tas Le l'espace appliqué n'a pas été libéré
2) L'objet n'est plus utilisé, mais il est toujours conservé en mémoire
Cause : classe de collection statique, connexions diverses, surveillance Portée déraisonnable des périphériques et des variables
29. La différence entre le tas et la pile en Java :
alloués sur la pile : types de données de base Variables de référence des variables et des objets
Les variables seront automatiquement libérées lorsqu'elles seront hors de portée
Allouées sur le tas : variables de type référence, variables qui doivent être créées à travers le nouveau. Principalement des objets créés pendant l'exécution
JVM est une machine virtuelle basée sur une pile. Chaque programme Java s'exécute sur une instance JVM distincte, de sorte que chaque thread d'un programme Java s'exécute sur, chaque instance correspond de manière unique à un tas. , la mémoire tas est donc partagée entre ces threads.
Il vous suffit de demander de l'espace de tas et vous n'avez pas besoin de prendre en compte les problèmes de publication.
Utilisez des variables de référence dans la pile pour accéder aux tableaux et aux objets dans le tas.
Tant que le tas est utilisé pour stocker des objets, la pile est principalement utilisée pour stocker des programmes exécutables.
La pile est rapide, mais sa taille et sa durée de vie sont déterminées, et elle manque de flexibilité. Le tas alloue la mémoire de manière dynamique, ce qui est très flexible mais lent.
30. Conteneur : framework Java Collections : list, Queue, set, stack, map
list, Queue, set, stack héritent tous de l'interface Collection.
1) La liste est une collection ordonnée. Les objets sont enregistrés dans l'ordre dans lequel ils ont été saisis et les objets en double peuvent être enregistrés.
2) L'ensemble est le concept d'un ensemble, et il ne peut pas y avoir d'éléments en double dans l'ensemble.
3) la carte est une structure de données qui mappe les clés aux valeurs. Les valeurs peuvent être répétées, mais les clés sont uniques et ne peuvent pas être répétées.
31. Itérateur : C'est un objet, une méthode d'accès à chaque élément d'un objet conteneur sans exposer les détails à l'intérieur de l'objet.
1) Utilisez la méthode iterator() du conteneur pour renvoyer un itérateur, puis renvoyez un élément via la méthode next() de l'itérateur.
2) Utilisez la méthode hasNext() d'Iterator pour déterminer s'il y a des éléments dans le conteneur. Si tel est le cas, vous pouvez utiliser next() pour obtenir l'élément suivant.
3) Utilisez Remove() pour supprimer les éléments renvoyés par l'itérateur.
32. La différence entre les collections et les collections :
Collection : est une interface de collection qui fournit un maximum d'opérations unifiées pour chaque collection spécifique.
Collections : Il s'agit d'une classe wrapper pour les classes de collection. Il ne peut pas être instancié et équivaut à une classe d'outils qui sert le framework Collection.
33. Multi-threading :
Thread : une unité d'exécution qui exécute du code.
Processus : un programme en cours d'exécution
Chaque thread partage l'espace mémoire (segment de code, données, espace tas) du programme et dispose d'un espace de pile indépendant.
Avantages du fil :
1) Réduire le temps de réponse du programme
2) Par rapport aux processus, le coût de création d'un le commutateur est petit
3) Les multi-CPU et multicœurs ont intrinsèquement des capacités multithread
4) Simplifiez la structure du programme pour une compréhension et une maintenance faciles.
34. Comment implémenter le multi-threading Java :
1) Héritez de la classe Thread et remplacez la méthode run()
2) Implémentez l'interface Runnable et implémentez la méthode run() de l'interface.
3) Implémentez l'interface Callable et réécrivez la méthode call().
35. Synchronisation
Pour réaliser l'opération de synchronisation, vous devez obtenir le verrou de chaque objet thread. Son obtention peut garantir qu'il n'y en a qu'un. un objet thread en même temps.Le thread peut entrer dans la section critique, et avant que le verrou ne soit libéré, d'autres threads peuvent à nouveau entrer dans la section critique. S'il y a d'autres threads qui souhaitent obtenir le verrou de l'objet, ils ne peuvent que le faire. entrez dans la file d’attente et attendez.
36. Méthode de mise en œuvre de la synchronisation multi-processus :
1) mot-clé synchronisé
2) Attendez () et notify ()
3) Lock
37. Méthodes pour terminer les threads : méthode stop() et méthode suspend().
Java fournit deux types de threads : le thread démon (processus de service) et le processus utilisateur.
38. Comment accéder à la base de données via JDBC :
1) Chargez le pilote JDBC et copiez le package jar du pilote JDBC dans lib
2) Chargez le pilote JDBC
3) Créez une connexion à la base de données
4) Créez un objet Statement ou PrepareStatement. Utilisé pour les opérations de base de données
5) Exécuter des instructions SQL
6) Accéder à l'objet ReaultSet du jeu de résultats
7) Fermer l'instruction ReaultSet en séquence Connexion.
39. La fonction de la méthode Class.forName() est de charger la classe dans la JVM.
Avant d'utiliser JDBC pour se connecter à la base de données, la méthode Class.forName ("com.mysql.jdbc.Driver") est généralement appelée pour charger le pilote.
L'instruction est utilisée pour exécuter une instruction SQL simple sans paramètres et renvoyer l'objet du résultat qu'elle génère. Chaque fois que SQL est exécuté, la base de données compile l'instruction SQL.
PrepareStatement peut être exécuté avec des paramètres. Une efficacité plus élevée, une lisibilité plus élevée, une maintenabilité plus élevée et une meilleure sécurité
40 JDBC fournit getString(), getInt(), getIData() et d'autres méthodes pour obtenir des données à partir de ResultSet .
41. Le nombre de pools de connexions est limité lors de la connexion à JDBC, veillez donc à libérer les connexions qui ne sont plus utilisées.
createStatement et prepareStatement sont mieux placés en dehors de la boucle, et l'instruction doit être fermée à temps après utilisation. Il est préférable de fermer l'instruction immédiatement après avoir exécuté une foisexecuteQuery.
42. Hibernate est un package de JDBC. Les paramètres de connexion à la base de données sont écrits en XML sous la forme d'un fichier de configuration, mais
l'accès final à la base de données doit être effectué via JDBC.
43. Hibernate est un framework de couche de persistance, qui mappe les informations du tableau en XML, puis mappe le fichier XML à la classe de persistance correspondante.
Java Web
1. 🎜>
1) Terminez l'interaction avec le serveur.
2) Terminez l'analyse du HTML et affichez le contenu que les utilisateurs doivent voir dans des informations intuitives.
2. Les méthodes de requête HTTP sont : GET POST HEAD TRACE OPTIONS
GET : est la méthode de requête la plus simple, obtenue à partir du serveur La ressource requis par l’utilisateur et renvoyé au client en réponse. Obtenez des informations côté serveur (requête). Si vous devez télécharger des données, ajoutez-les à la fin de l'URL. L’exposition des données n’est pas suffisamment sécurisée et est limitée en quantité.
POST : En plus d'obtenir des ressources du serveur, vous pouvez également télécharger des données sur le serveur. Les données téléchargées ne sont pas affichées en texte clair dans l'URL et une grande quantité de données peut être téléchargée, ce qui est invisible pour l'utilisateur
Servlet :
4. Cycle de vie du servlet :
5. Avantages de JSP :
6. Similitudes et différences entre JSP et servlet :
7. Modèle MVC :
8. Couche de contrôle :
9 .Avantages de MVC :
10. Quelle est la différence entre le transfert et la redirection dans Servlet :
11. Objets intégrés JSP :
12. Méthodes d'objet de requête :
13. Actions JSP dans :
inclure des instructions et inclure des actions dans JSP
15. Technologie de suivi de session :
16. Encodage de chaîne : GBK, UTF-8
17. est Ajar
Fonction : Améliorer l'interactivité de la page en interagissant avec une petite quantité de données avec le serveur sans actualiser la page, réduire le temps de réponse et améliorer l'expérience utilisateur
18. et La différence entre les sessions :
Session : fait référence à la solution et à la structure de stockage utilisées pour maintenir l'état entre le client et le serveur.
Cookie : Un petit fichier enregistré sur le navigateur de l'utilisateur par le serveur web.
19. Serveur Web : reçoit les demandes des clients, puis renvoie les résultats du traitement des demandes au client
Deux principaux sites Web Serveur : IIS Apache.
20. Conteneur Web : TomcatJBoss
est chargé de fournir des objets de requête et de réponse http au servlet, en appelant doGet() via doPost. () Méthode Gérer les demandes des utilisateurs.
21. Catégories d'EJB :
1) Session Bean implémente la logique métier côté serveur et coordonne l'interaction entre les beans
2) Le composant de données Entity Bean (Entity Bean) représente les enregistrements dans la base de données
3) Message Bean (Message-driven Bean) traite les messages asynchrones, généralement pas par les utilisateurs Pour appeler
22. Similitudes et différences entre EJB et Javabean :
1) EJB : principalement utilisé pour le développement côté serveur, Javabean est principalement utilisé dans Développement clients.
2) Les composants EJB peuvent être déployés dans des conteneurs EJB. Les composants ne sont pas accessibles directement, mais via le conteneur. Les Javabeans ne peuvent pas être déployés
3) EJB est un objet distribué , peut être appelé à distance, javabean ne l'est pas et n'est accessible qu'en interne
23. Le rôle de l'EJB :
1 ) Enterprise Bean Provider (développeur de composants d'entreprise)
2) Application Assembler (compositeur d'applications)
3) EJB Deployer (déployeur d'EJB)
4) Fournisseur de serveur EJB (fournisseur de serveur EJB)
5) Fournisseur de conteneur EJB (fournisseur de conteneur EJV)
6) Administrateur système (administrateur système)
24. Mécanisme de fonctionnement du pool de connexion à la base de données :
Raison :
1) L'établissement d'une base de données est très rapide. -opération consommatrice
2) Le nombre de connexions à la base de données est limité
Le pool de connexions à la base de données est responsable de l'allocation, de la gestion et de la libération des connexions à la base de données. Lorsqu'un client a besoin d'accéder à la base de données, il peut directement obtenir la connexion à la base de données à partir du pool sans créer de connexion et la marquer comme étant occupée.
25. Méthodes de réglage pour le développement JAVAEE :
1) Optimiser la conception
2) Essayez autant possible Utiliser la connexion à la base de données
3) Utiliser le framework
4) Optimiser les E/S
5) Optimiser la requête
26. Avantages du framework Struts :
1) Réaliser la séparation de la performance et de la logique
2) Fournir une navigation dans les pages fonction
3) Fournir une validation de formulaire
4) Fournir un pool de connexion à la base de données
5) Fournir un mécanisme de gestion des exceptions
6) Prise en charge de l'internationalisation
27. La vérification des données est divisée en :
1) Vérification du formulaire
2) Vérification de la logique métier
28. Internationalisation :
Le programme affiche les informations correspondantes selon différentes régions sans modifier le code interne . L'interface
29. Qu'est-ce que l'inversion de contrôle :
est également appelée injection de dépendances, une idée de conception qui réduit la relation de couplage entre objets .
Pour que la couche supérieure ne dépende pas de l'interface de la couche inférieure, et que l'appelant (enfant) détermine l'appelé (parent). Le découplage et le but sont obtenus en injectant un objet instancié.
30. Le framework Spring
fournit un bon support pour les locs légers et fournit également une très bonne encapsulation de la technologie AOP.
31. Framework Hibernate, framework de couche de persistance
Réalise le mappage des objets Java et des enregistrements de base de données relationnelle, simplifiant le processus d'accès des développeurs. la base de données. Améliorer l'efficacité du développement logiciel
Quiconque utilise JDBC peut utiliser Hibernata
Méthodes pour améliorer les performances :
1) Chargement paresseux
2) Technologie de mise en cache
3) Optimisation des instructions de requête
32. Implémenter la pagination :
1) Le propre mécanisme de pagination d'Hibernate
2) Utilisez des instructions SQL pour l'implémenter, en utilisant le mot-clé limit
33. SSH :
partie vue d'implémentation de struts
Partie du modèle d'implémentation Hibernate
Partie métier d'implémentation Spring
Grâce au framework SSH, non seulement la vue, le contrôleur et le modèle peuvent être complètement séparés, mais également la logique métier et la couche de persistance des données peuvent être séparées
Résumé
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!