Introduction au Core Java pour S.Y.BSc(I.T)
Introduction au Core Java pour S.Y.BSc(I.T)
Java de base
Classe : [Link](I.T)
Classe : [Link](I.T) SEM - IV Subject : Core Java
Index
Chapitre Nom
Non.
1 Introduction
2 Opérateurs en Java
3 Déclarations en Java
4 Boucles en Java
5 Liste des programmes
6 Tableaux et chaînes
7 Gestion des exceptions
8 OUPS
9 Héritage
10 Multithreading
11 Forfaits
Classe : [Link](I.T) SEM - IV Sujet : Java de base
1 - Introduction
Un programme Java est principalement une collection d'objets qui communiquent avec d'autres objets par
invoquant les méthodes de l'autre.
Chaque objet est d'un certain type, et ce type est défini par une classe ou un
interface.
La plupart des programmes Java utilisent une collection d'objets de nombreux types différents.
Classe
Un modèle qui décrit les types d'état et de comportement que les objets de celui-ci
soutien de type.
Objet
Au moment de l'exécution, lorsque la machine virtuelle Java (JVM) rencontre le nouveau
mot-clé.
il utilisera la classe appropriée pour créer un objet qui est une instance de cela
classe.
Cet objet aura son propre état et accès à tous les comportements définis.
by its class.
États (variables d'instance)
Chaque objet (instance d'une classe) aura son propre ensemble unique d'instances
variables telles que définies dans la classe.
Collectivement, les valeurs assignées aux variables d'instance d'un objet constituent le
état de l'objet.
Classe : [Link](I.T) SEM - IV Sujet : Java de base
Comportement (méthodes)
When a programmer creates a class, He/She creates methods for that class.
Ils sont là où les algorithmes sont exécutés et les données sont manipulées.
Features Of Java:-
Classe : [Link](I.T) SEM - IV Subject : Core Java
Indépendant de la plateforme
Simple
Orienté objet
Robuste
Distribué
Portable
Dynamique
Securisé
Performance
Interprété
Indépendant de la plateforme
Le concept de Écrire une fois, exécuter partout (connu sous le nom de Plateforme indépendante) est
l'une des fonctionnalités clés importantes du langage Java qui fait de Java le plus
powerful language.
Pas même une seule langue n'est inoccupée pour cette fonctionnalité, mais Java s'en rapproche davantage.
caractéristique.
Les programmes écrits sur une plateforme peuvent fonctionner sur n'importe quelle plateforme à condition que
Simple
Les programmes sont faciles à écrire et à déboguer car Java n'utilise pas de pointeurs.
explicitement.
Java offre un système sans bugs grâce à une gestion de mémoire efficace. Il offre également
dispose d'un système d'allocation et de désallocation de mémoire automatique.
Classe : [Link](I.T) SEM - IV Sujet : Java de base
Orienté objet
To be an Object Oriented language, any language must follow at least the four
caractéristiques comme suit.
Polymorphisme : Comme son nom l'indique, un nom multiple formes, le polymorphisme est le
manière de fournir différentes fonctionnalités par des fonctions ayant le même nom
basé sur les signatures des méthodes.
Liaison dynamique : Parfois, nous n'avons pas connaissance des objets à propos de leur
des types spécifiques lors de l'écriture de notre code. C'est la façon de fournir le
fonctionnalité maximale à un programme concernant le type spécifique à l'exécution.
Robuste
Distribué
o Les protocoles largement utilisés comme HTTP et FTP sont développés en Java.
o Les programmeurs Internet peuvent appeler des fonctions sur ces protocoles et peuvent y accéder.
fichiers d'une quelconque machine distante sur Internet plutôt que d'écrire des codes sur leur
système local.
Portable
Java also have the standard data size irrespective of operating system or the
processeur. Ces caractéristiques rendent Java un langage portable.
Dynamique
Lors de l'exécution du programme Java, l'utilisateur peut obtenir les fichiers requis dynamiquement.
d'un disque local ou d'un ordinateur à des milliers de kilomètres de l'utilisateur juste par
connexion à Internet.
Securisé
Tous les programmes en java s'exécutent dans une zone appelée le bac à sable.
Le responsable de la sécurité détermine les options d'accessibilité d'une classe telles que la lecture et
écriture d'un fichier sur le disque local.
Java utilise le système de cryptage par clé publique pour permettre aux applications Java de transmettre.
sur Internet sous une forme sécurisée et cryptée.
Performance
Interprété
Nous savons tous que Java est également un langage interprété. Avec un interprété
des langages comme Java, les programmes s'exécutent directement à partir du code source.
Un autre avantage de Java en tant que langage interprété est sa qualité de débogage des erreurs.
En raison de cela, toute erreur survenant dans le programme est répertoriée. C'est ainsi que c'est différent.
travailler avec Java.
Liaison dynamique :-
Java prend en charge un paradigme novateur pour le déploiement de code : au lieu de lier un ensemble complet
avant l'exécution, les classes et les interfaces qui composent le programme sont
chargé et lié à la demande pendant l'exécution.
Les classes sont vérifiées avant la création des objets. La vérification vérifie les sous-types, et
peut nécessiter le chargement de classes ou d'interfaces supplémentaires.
Lorsque vous compilez un programme Java, vous obtenez un fichier de classe distinct pour chaque classe ou
interface dans votre programme.
Au fur et à mesure que votre programme s'exécute, la machine virtuelle Java construit un réseau interne de
Le modèle de liaison Java est plus complexe que celui généralement trouvé dans la programmation.
langues.
Avantages :
L'utilisation principale de la collecte des déchets est d'identifier et de jeter les objets qui ne sont plus
plus longtemps nécessaire par un programme afin que ses ressources puissent être récupérées et réutilisées.
Lorsque un objet n'est plus référencé par aucune variable, Java le récupère automatiquement.
mémoire utilisée par cet objet. Cela est connu sous le nom de collecte des ordures.
Classe : [Link](I.T) SEM - IV Subject : Core Java
Java a été conçu pour supporter des applications sur des réseaux.
En général, les réseaux sont composés d'une variété de systèmes avec une variété de
Architectures de processeur et de système d'exploitation.
Le code est développé soit dans un éditeur de texte simple, soit dans un environnement de développement intégré.
Il est alors vérifié pour les erreurs de syntaxe par le compilateur Java([Link]).
Si la compilation est réussie, le fichier .class résultant est passé à la machine virtuelle Java.
Machine([Link])pour exécution.
L'action de compiler a un effet double : d'abord, le code est vérifié pour sa syntaxe.
erreurs et deuxièmement, le code est converti en codes octets.
Les codes octets sont des instructions pour une machine imaginaire appelée la machine virtuelle Java
Machine (JVM).
Cette machine est émulée par tous les interprètes Java et permet donc de
exécuter un programme Java compilé sur différentes plateformes (systèmes d'exploitation)
avec une JVM).
ByteCode
Le bytecode Java est la forme d'instructions que la machine virtuelle Java exécute.
Chaquele bytecode estune longueur d'un octet, bien que certains nécessitent des paramètres, ce qui entraîne
certaines instructions multioctets.
Le format de code byte est le même sur toutes les plateformes car il s'exécute dans la même JVM et il est
totalement indépendant du système d'exploitation et de l'architecture du CPU.
JVM:-
Ceci est un processus logiciel qui convertit le code byte Java compilé en langage machine.
code.
Le bytecode est un langage intermédiaire entre le code source Java et le système hôte.
Classe : [Link](I.T) SEM - IV Sujet : Java de base
La traduction se fait en deux étapes. D'abord, les programmes écrits en Java ou le code source
le code traduit par le compilateur Java en bytecode et après cela, la JVM convertit le
bytecode en code machine pour l'ordinateur sur lequel on souhaite exécuter.
Ainsi, les fichiers de programmes écrits en Java sont stockés dans des fichiers .java et les fichiers .java sont
compilé par le compilateur Java en code byte qui est stocké dans un fichier .class. La JVM
plus tard, le convertir en code machine.
En fait, le format de bytecode est le même sur toutes les plateformes car il s'exécute dans la même JVM et il
est totalement indépendant du système d'exploitation et de l'architecture du processeur.
La JVM fait partie de l'environnement d'exécution Java qui est requis par chaque système d'exploitation.
Le système nécessite un JRE différent.
JRE se compose d'un certain nombre de classes basées sur l'API Java et la JVM, et sans JRE, il est
impossible d'exécuter Java.
Commentaires
Les commentaires sont essentiellement utilisés pour la documentation des programmes.
Les commentaires sont simplement du texte ignoré par le compilateur, mais qui peuvent informer le
lecteur de ce que vous faites à un moment donné dans votre programme.
Types de commentaires
Il existe deux types de commentaires.
1) commentaire double-slash (//).
Classe : [Link](I.T) SEM - IV Sujet : Java de base
Le commentaire à double slash, qui sera appelé un commentaire de style Java, indique
le compilateur pour ignorer tout ce qui suit ce commentaire, jusqu'à la fin du
ligne.
Ces marques seront appelées des commentaires de style Java. Chaque /* doit être apparié.
avec une fermeture */.
Instruction Print en Java :
[Link]("Chaîne");
Le système est une classe qui est définie dans un package [Link].*.
Println("String") est la méthode de la classe System qui est utilisée pour imprimer un message.
sur la console.
Exemple :
[Link]("HelloWorld!!!");
La déclaration ci-dessus affiche le message Bonjour le monde !!! dans la console.
VARIABLES
Les variables sont un moyen de réserver de la mémoire pour contenir des données et d'assigner des noms à
eux afin que nous n'ayons pas à nous souvenir des numéros comme 46735 et à la place nous
can use the memory location by simply referring to the variable.
Chaque variable est associée à une adresse mémoire unique. Par exemple, nous avons 3
variable v1, v2, v3. Ils peuvent se voir assigner les adresses mémoire 32000, 12456,
67893 respectivement. Voici l'illustration.
Syntaxe :
Type de données Nom_Du_Variable;
Eg:-
int v1; Int v3; Int v3;
Classe : [Link](I.T) SEM - IV Sujet : Java de base
Littéral
Une valeur constante dans un programme est désignée par un littéral. Les littéraux représentent des valeurs numériques.
(entier ou nombre à virgule flottante), caractère, valeur booléenne ou chaîne de caractères.
Exemple de littéraux :
Littéraux entiers :
33 0 -9
Littéraux de caractères :
( 'R' 'r' '{'
Littéraux de chaîne :
"language" "0.2" "r" ""
Littéraux entiers
Les littéraux entiers sont une séquence de chiffres et un suffixe en tant que L.
Pour représenter le type en tant qu'entier long, nous utilisons L comme suffixe.
Nous pouvons spécifier les entiers soit en décimal, soit en hexadécimal ou en octal.
Pour indiquer un format décimal, placez le chiffre le plus à gauche en tant que non nul. De même, mettez le
caractères comme ox à gauche d'au moins un chiffre hexadécimal pour indiquer l'hexadécimal
Classe : [Link](I.T) SEM - IV Subject : Core Java
format. Also we can indicate the octal format by a zero digit followed by the digits 0
à 7. Ex.
littéral entier décimal de
659L
type entier long
Entier hexadécimal
0x4a
littéral de type entier
littéral entier octal de
057L
type entier long
Littéraux de caractère
Nous pouvons spécifier un littéral de caractère comme un seul caractère imprimable dans une paire de simples
citez des caractères tels que 'a', '#', et '3'.
Vous devez connaître le jeu de caractères ASCII. Le jeu de caractères ASCII comprend
128 caractères y compris les lettres, les chiffres, la ponctuation, etc.
Il existe quelques littéraux de caractères qui ne peuvent pas être facilement imprimés par un clavier.
Le tableau ci-dessous montre les codes qui peuvent représenter ces caractères spéciaux. Le
La lettre d, comme dans l'octal, l'hexadécimal, etc. représente un nombre.
Signification d'évasion
\n Nouvelle ligne
Onglet
Retour arrière
Charrette
\r
retourner
\f Saut de page
\\ Barre oblique inversée
Célibataire
\' citation
marque
Double
\" citation
marque
\d Octale
\xd Hexadécimal
Unicode
caractère
Littéraux booléens
Les valeurs true et false sont également traitées comme des littéraux en programmation Java.
Lorsque nous assignons une valeur à une variable booléenne, nous ne pouvons utiliser que ces deux valeurs.
Classe : [Link](I.T) SEM - IV Subject : Core Java
Contrairement à C, nous ne pouvons pas présumer que la valeur de 1 est équivalente à vrai et 0 est
équivalent à faux en Java. Nous devons utiliser les valeurs vrai et faux pour représenter un
Valeur booléenne.
Comme
boolean choisi = true;
Rappelez-vous que le vrai littéral n'est pas représenté par les guillemets qui l'entourent.
Le compilateur Java le considérera comme une chaîne de caractères, si elle est entre guillemets.
Littéraux de chaîne
La chaîne de caractères est représentée sous forme de littéraux String en Java.
En Java, une chaîne n'est pas un type de données de base, mais plutôt un objet.
Ces chaînes ne sont pas stockées dans des tableaux comme en langage C.
Il existe peu de méthodes fournies en Java pour combiner des chaînes, modifier des chaînes et pour
savoir si les chaînes ont la même valeur.
Littéraux nuls
Le dernier littéral que nous pouvons utiliser en programmation Java est un littéral null.
Nous spécifions le littéral Null dans le code source comme 'null'.
Pour réduire le nombre de références à un objet, utilisez le littéral null.
Le type du littéral nul est toujours nul. Nous assignons généralement des littéraux nuls à des objets.
variables de référence. Par exemple
s = null;
Types de données
45 -932 0 12 5421
Les nombres à virgule flottante contiennent des décimales. Ils sont connus sous le nom de nombres réels.
mathématiciens.
Toutes les expressions suivantes sont des nombres à virgule flottante, et tout nombre à virgule flottante
la variable peut les contenir :
Type Range*
char–128 à 127
int–32768 à 32767
2 - Opérateurs en Java
Opérateur :
Les opérateurs sont des symboles qui prennent un ou plusieurs opérandes ou expressions et effectuent
calculs arithmétiques ou logiques.
Le langage de programmation Java fournit plusieurs opérateurs pour effectuer différents types de
opérations. Il existe des opérateurs pour l'affectation, les fonctions arithmétiques, les fonctions logiques et
beaucoup plus.
Ces opérateurs fonctionnent généralement sur de nombreux types de variables ou de constantes, bien que certains soient
restreints à travailler sur certains types. La plupart des opérateurs sont binaires, ce qui signifie qu'ils prennent deux
opérandes.
Opérateur d'assignation
Par exemple :
x = 5;
Classe : [Link](I.T) SEM - IV Sujet : Java de base
Opérateurs arithmétiques
• + Pour addition
• Pour la soustraction
• * Pour la multiplication
• / Pour la division
• % Pour modulo
Exemple :
classe Ajouter
{
public static void main(String args[])
{
int n1 = 3;
int n2 = 6;
}
sinon
{
diff = n2 - n1;
[Link]("Somme="+sum);
[Link]("Différence="+diff);
[Link]("Division="+div);
[Link]("Modulas="+mod);
}
}
Classe : [Link](I.T) SEM - IV Sujet : Java de base
Les opérateurs d'affectation composés fonctionnent de manière similaire aux autres opérateurs +=, -=, *=
/=, %=, >>=, <<=, &=, ^=, |= fonction.
• Dans le cas où l'opérateur d'incrément ou de décrément est utilisé comme préfixe ( ++a ou –a),
alors la valeur est respectivement augmentée ou diminuée avant que le résultat de l'expression ne soit
évalué.
• Par conséquent, la valeur augmentée ou diminuée, respectivement, est considérée dans l'extérieur.
expression.
• Dans le cas où l'opérateur d'incrémentation ou de décrémentation est utilisé en postfixe (a++ ou a--)
), alors la valeur stockée dans a est respectivement augmentée ou diminuée après avoir été évaluée.
• Par conséquent, la valeur stockée avant l'opération d'augmentation ou de diminution est évaluée dans
l'expression extérieure.
Par exemple :
y=3;
x=++y; //Préfixe : Ici, la valeur de x devient 4
Exemple :
/* Program to demonstrates the increment operator*/
classe IncDec
{
public static void main(String args[])
{
int a = 10;
int b = 20;
int c,d;
c = ++b;
d = a++;
[Link]("a = " + a);
[Link]("b = "+b);
[Link]("c = " + c);
[Link]("d = " + d);
}
}
• Ces opérateurs sont utilisés pour évaluer une comparaison entre deux expressions.
• La valeur retournée par l'opération relationnelle est une valeur booléenne (vrai ou faux)
valeur).
Les opérateurs utilisés à cet effet en JAVA sont :
Opérateurs relationnels et d'égalité ( ==, !=, >, <, >=, <= )
Afin d'évaluer une comparaison entre deux expressions, nous pouvons utiliser le relationnel et
opérateurs d'égalité. Le résultat d'une opération relationnelle est une valeur booléenne qui ne peut être que
vrai ou faux, selon son résultat booléen.
Nous pouvons vouloir comparer deux expressions, par exemple, pour savoir si elles sont égales ou si l'une
est supérieur à l'autre. Voici une liste des opérateurs relationnels et d'égalité qui peuvent être
utilisé en JAVA :
== Égal à
!= Pas égal à
> Plus grand que
< Moins de
>= Supérieur ou égal à
<= Moins que ou égal à
Classe : [Link](I.T) SEM - IV Subject : Core Java
Bien sûr, au lieu d'utiliser uniquement des constantes numériques, nous pouvons utiliser n'importe quelle expression valide.
• Les opérateurs logiques && et || sont utilisés lors de l'évaluation de deux expressions pour obtenir
un seul résultat relationnel.
• L'opérateur && correspond à l'opération logique booléenne ET.
• Cette opération renvoie vrai si ses deux opérandes sont vrais, et faux sinon.
• Le panneau suivant montre le résultat de l'opérateur && évaluant l'expression a &&
b:
&& OPÉRATEUR
un b a && b
vrai vrai Vrai
true false False
false true False
faux faux Faux
• L'opérateur || correspond à l'opération logique booléenne OU.
• Cette opération renvoie vrai si l'un de ses deux opérandes est vrai, étant ainsi faux.
uniquement lorsque les deux opérandes sont eux-mêmes faux.
• Voici les résultats possibles de a || b :
|| OPÉRATEUR
Un B a || b
Vrai vrai vrai
Vrai faux vrai
false true true
faux faux faux
Classe : [Link](I.T) SEM - IV Sujet : Java de base
Par exemple :
( (5 == 5) && (3 > 6) ) // évalue à faux ( vrai && faux ).
( (5 == 5) || (3 > 6) ) // évalue à vrai ( vrai || faux ).
Opérateur conditionnel (: ? )
• L'opérateur conditionnel évalue une expression renvoyant une valeur si cela
l'expression est vraie et une différente si l'expression est évaluée comme fausse. Son format est :
condition ? résultat1 : résultat2
Si la condition est vraie, l'expression renverra résultat1, si ce n'est pas le cas, elle renverra résultat2.
7==5 ? 4 : 3 // renvoie 3, puisque 7 n'est pas égal à 5.
7==5+2 ? 4 : 3 // retourne 4, puisque 7 est égal à 5+2.
5>3 ? a : b // retourne la valeur de a, puisque 5 est supérieur à 3.
a > b ? a : b renvoie celui qui est le plus grand, a ou b. // opérateur conditionnel
Exemple :
classe ConditionalOpt
{
public static void main(String args[])
{
int n1 = 5;
int n2 = 3;
}
}
o/p :Greater Number= 5
Opérateur virgule ( , )
• L'opérateur virgule (,) est utilisé pour séparer deux ou plusieurs expressions qui sont
inclus là où une seule expression est attendue.
• Lorsque l'ensemble des expressions doit être évalué pour une valeur, seul le plus à droite
l'expression est considérée.
Par exemple, le code suivant :
a = (b=3, b+2);
• Le byte est le niveau le plus bas auquel nous pouvons accéder aux données
• Les opérateurs bit à bit modifient les variables en tenant compte des motifs de bits qui représentent le
valeurs qu'ils stockent.
équivalent asm de description
l'opérateur
& ET Bitwise ET
| OU Bitwise Inclusif
^ XOR OU exclusif bit à bit
~ NON Complément unaire (inversion de bits)
ET binaire
OU binaire
• L'OR bit à bit fonctionne presque de la même manière que l'AND bit à bit.
• La seule différence est que seulement un des deux bits doit être un 1 pour la position.
bit in the result to be 1. (If both bits are a 1, the result will also have a 1 in that position.)
• Le symbole est un tuyau : |. Encore une fois, cela ressemble à l'opérateur logique booléen, qui est ||.
01001000
10111000 =
--------
11111000
et par conséquent
Classe : [Link](I.T) SEM - IV Sujet : Java de base
72 | 184 = 248
Le Complément Bit à Bit
• L'opérateur de complément bit à bit, le tilde, ~, inverse chaque bit.
• Une façon utile de se souvenir de cela est que le tilde est parfois appelé un 'twiddle', et
le complément bit à bit inverse chaque bit : si vous avez un 1, c'est un 0, et si vous avez un 0, c'est un
1.
• Cela s'avère être un excellent moyen de trouver la plus grande valeur possible pour un non signé
number:
unsigned int max = ~0;
Opération binaire exclusive ou (XOR)
• Il n'y a pas d'opérateur booléen correspondant à l'exclusive-or bitwise, mais il y en a un
explication simple.
• L'opération exclusif ou prend deux entrées et retourne un 1 si l'une ou l'autre des deux
l'autre des entrées est un 1, mais pas si les deux le sont.
• C'est-à-dire que si les deux entrées sont 1 ou les deux entrées sont 0, cela retourne 0. L'opération binaire exclusive ou,
avec l'opérateur d'une carotte, ^, effectue l'opération exclusif-or sur chaque paire de bits.
L'exclusif ou est couramment abrégé en XOR.
• Par exemple, si vous avez deux nombres représentés en binaire comme 10101010 et
01110010 puis en appliquant l'opération XOR bit à bit, on obtient 11011000. C'est plus facile de le voir si les bits
sont alignés correctement :
01110010 ^
10101010
--------
11011000
Example
classe BitwiseOpt
{
public static void main(String args[])
{
int n1 = 110;
int n2 = 101;
[Link](n1 & n2);
[Link](n1 | n2);
[Link](~n2);
[Link](n1 ^ n2);
}
}
o/p:100 111 010 011
Classe : [Link](I.T) SEM - IV Sujet : Java de base
• Les opérateurs de conversion de type vous permettent de convertir une donnée d'un type donné à un autre.
• Il existe plusieurs façons de le faire en JAVA.
• Le plus simple, qui a été hérité du langage C, est de précéder le
expression à convertir par le nouveau type entre parenthèses (()):
int i;
float f = 3.14;
i = (int) f;
• Le code précédent convertit le nombre flottant 3,14 en une valeur entière (3), le
le reste est perdu. Ici, l'opérateur de conversion de type était (int).
• Une autre façon de faire la même chose en JAVA est d'utiliser la notation fonctionnelle :
précédant l'expression à convertir par le type et englobant l'expression
entre parenthèses :
i = int ( f );
3 - Instructions de contrôle
L'instruction if
• Comme la plupart des langages, JAVA utilise le mot-clé si pour mettre en œuvre le contrôle de décision
instruction.
• La forme générale de l'instruction if ressemble à ceci :
si(conditions)
{
//corps des déclarations;
}
• Le mot-clé if indique au compilateur que ce qui suit est une instruction de contrôle de décision.
• La condition suivant le mot-clé si est toujours enfermée entre une paire de
parenthèses.
• Si la condition, quelle qu'elle soit, est vraie, alors l'instruction est exécutée.
• Si la condition n'est pas vraie, alors l'instruction n'est pas exécutée ; à la place, le programme
le dépasse.
L'expression est vraie si
x == y x est égal à y
x != y x n'est pas égal à y
x < y x est inférieur à y
x > y x est supérieur à y
x <= y x est inférieur ou égal à y
x >= y x est supérieur ou égal à y
déclaration-x
Classe : [Link](I.T) SEM - IV Sujet : Java de base
Exemple :
classe SimpleIf
{
public static void main(String args[])
{
int num = [Link](args[0]);
}
}
L'instruction if-else
sinon
{
// corps de l'instruction else ;
}
Classe : [Link](I.T) SEM - IV Subject : Core Java
Exemple :
classe IfElseDemo
{
public static void main(String args[])
{
int num = [Link](args[0]);
int r = num % 2;
si(r == 0)
{
[Link]("Nombre Pair");
}
sinon
{
[Link]("Nombre impair");
}
}
}
si (x < 0)
sign = -1;
sinon
si (x == 0)
signe = 0;
sinon
sign = 1;
Ceci est une instruction if-else dans laquelle l'instruction suivant le else est elle-même un if-
instruction else.
Si x est inférieur à zéro, alors le signe est fixé à -1,
cependant, s'il n'est pas inférieur à zéro, l'instruction suivant le else est exécutée. Dans
Dans ce cas, si x est égal à zéro, alors le signe est égal à zéro et sinon il est égal à 1.
Lors de l'écriture d'instructions if-else imbriquées pour choisir entre plusieurs alternatives, utilisez un peu de
mise en page cohérente telle que suit :
si ( condition1 )
statement1 ;
sinon si ( condition2 )
déclaration2 ;
...
sinon si ( condition-n )
statement-n ;
sinon
déclaration-e ;
Exemple :
classe NestedIfDemo
{
public static void main(String args[])
{
int n1 = [Link](args[0]);
int n2 = [Link](args[1]);
Classe : [Link](I.T) SEM - IV Sujet : Java de base
int n3 = [Link](args[2]);
Pause : -
• L'instruction break met fin à l'exécution de la boucle ou de la condition englobante la plus proche.
déclaration dans laquelle il apparaît.
• Le contrôle passe à l'instruction qui suit l'instruction terminée, le cas échéant.
pause;
• L'instruction break est utilisée avec l'instruction conditionnelle switch et avec le do,
pour et tant que déclarations de boucle.
• Dans une instruction switch, l'instruction break fait en sorte que le programme exécute le suivant
déclaration après l'instruction switch. Sans une instruction break, chaque déclaration à partir de
le label de cas apparié à la fin de l'instruction switch, y compris la clause par défaut, est
executed.
• Dans les boucles, l'instruction break met fin à l'exécution du do, for ou le plus proche englobant.
Instruction while. Le contrôle passe à l'instruction qui suit l'instruction terminée, le cas échéant.
• Dans les instructions imbriquées, l'instruction break met fin uniquement au do, for, switch, ou
une instruction while qui l'enferme immédiatement. Vous pouvez utiliser une instruction return ou goto pour
transférer le contrôle depuis des structures plus profondément imbriquées.
Classe : [Link](I.T) SEM - IV Sujet : Java de base
Continuer :
L'instruction continue transfère le contrôle à l'itération suivante de la boucle do ou for la plus proche,
ou instruction while dans laquelle elle apparaît, en contournant toutes les instructions restantes dans le do, for,
ou corps de l'instruction while.
Syntaxe
jump-statement:
continuer;
La prochaine itération d'une instruction do, for ou while est déterminée comme suit :
• Dans une instruction do ou while, la prochaine itération commence par réévaluer le
expression de l'instruction do ou while.
• Une instruction continue dans une instruction for provoque la première expression de la for
déclaration à évaluer. Ensuite, le compilateur réévalue l'expression conditionnelle et,
en fonction du résultat, soit termine soit itère le corps de l'instruction. Voir Le pour
Déclaration pour plus d'informations sur l'instruction for et ses non-terminaux.
Instructions Switch
• Vous avez vu comment écrire des instructions if et if/else.
• Cela peut devenir assez déroutant lorsqu'ils sont imbriqués trop profondément, et JAVA offre un
alternative.
• Contrairement à if, qui évalue une seule valeur, les instructions switch vous permettent de diverger sur n'importe quel
pause;
cas valeurDeux :
déclaration;
pause;
....
cas valeurN :
déclaration;
pause;
default:
déclaration
pause;
}
• l'option est toute expression JAVA légale, et les déclarations sont toute JAVA légale.
instructions ou bloc d'instructions.
• switch évalue l'expression et compare le résultat à chacune des valeurs des cas.
Notez cependant que l'évaluation n'est que pour l'égalité ; les opérateurs relationnels peuvent ne pas être
ni utilisé ici, ni les opérations booléennes.
• Si l'une des valeurs de cas correspond à l'expression, l'exécution passe à celle-ci.
les instructions et continue jusqu'à la fin du bloc switch, sauf si une instruction break est
rencontré.
• Si rien ne correspond, l'exécution se dirige vers l'instruction par défaut facultative.
• S'il n'y a pas de défaut et qu'il n'y a pas de valeur correspondante, l'exécution continue.
instruction switch et l'instruction se termine.
Classe : [Link](I.T) SEM - IV Sujet : Java de base
4 - Boucles en JAVA
Types de boucles.
Exemple :
classe WhileDemo
{
Classe : [Link](I.T) SEM - IV Subject : Core Java
int j=10;
[Link]();
tandis que(j >= 1)
{
[Link](j+" ");
j--;
}
}
}
Boucle Do-While :
initialisation;
faire
{
//corps de la boucle do-while;
Incrément/Décrément
}tandis que(condition);
par exemple
int i=1;
faire
{
[Link](i);
i++;
}tant que(i<=10);
Syntaxe : Syntaxe :
initialisation; initialisation;
tant que(condition) faire
{ {
//Corps de la boucle while; //corps de la boucle do-while;
Incrément/Décrément Incrément/Décrément
} }tant que(condition);
Exemple : Exemple :
int i=1;
int i=1; fair
{
tandis que(i <= 10) [Link](i);
{ i++;
[Link](i + "\t"); }pendant(i<=10);
i++;
}
Classe : [Link](I.T) SEM - IV Subject : Core Java
Pour boucle :-
La boucle for est utilisée pour exécuter la même séquence d'instructions pour un nombre prédéterminé.
de fois. La forme générale de la boucle for est : -
Syntex:-
pour(initialisation;condition;incrément/décrément)
{
//corps de la boucle for;
}
1- Initialisation (Opérateur d'affectation "=")
2- Condition (Opérateur Relationnel)
3- Incrément/Décrément (Opérateurs d'incrémentation et de décrémentation "++" et "--")
Classe : [Link](I.T) SEM - IV Sujet : Java de base
Exemple :-
pour(int i=1;i<=10;i++)
{
[Link](i);
}
classe FactDemo
{
public static void main(String args[])
{
int num = [Link](args[0]);
/*
pour(int i=1;i<=num;i++)
{
fact = fact * i;
}
*/
/*
pour(int j=num;j>0;j--)
{
fait = fait * j;
}
*/
[Link]("Factorielle="+fact);
}
}
pour(int i=1;i<=num;i++)
{
int fact = 1;
pour(int j=1;j<=i;j++)
{
fact = fact * j;
Classe : [Link](I.T) SEM - IV Subject : Core Java
}
[Link](i + " " + fact + " ");
}
}
}
}
Class : [Link](I.T) SEM - IV Sujet : Java de base
for(int i=1;i<=num;i++)
{
int count = 0; // Remarque
pour(int j=2;j<i;j++)
{
si(i%j == 0)
{
count++;
pause;
}
}
si(compte == 0)
{
[Link](i+" ");
}
}
}
Classe : [Link](I.T) SEM - IV Sujet : Java de base
Écrivez un programme pour vérifier si le nombre saisi est un nombre d'Armstrong ou non ?
classe ArmstrongDemo
{
public static void main(String args[])
{
int num = [Link](args[0]);
int temp= num;
int somme=0;
tant que(num > 0)
{
int r = num % 10;
si(somme == temp)
{
[Link]("Nombre d'Armstrong");
}
sinon
{
[Link]("Pas un nombre d'Armstrong");
}
}
}
WAP pour générer la série de Fibonacci entre 0 et la plage saisie par l'utilisateur ?
classe FibDemo
{
Classe : [Link](I.T) SEM - IV Objet : Java de base
int s = 1;
[Link](f+" ");
[Link](s+" ");
pour(int i=3;;i++)
{
int suivant = f + s;
si(next > num)
{
pause;
}
autre
{
f = s;
s = suivant;
}
}
}
}
Classe : [Link](I.T) SEM - IV Sujet : Java de base
/*
*/
classe Patter1
{
public static void main(String args[])
{
pour(int i=1;i<=10;i++)
{
pour(int j=1;j<=10;j++)
{
/*
Programme pour imprimer
*****
****
***
**
*
Classe : [Link](I.T) SEM - IV Sujet : Java de base
*/
classe Patter2
{
public static void main(String args[])
{
pour(int i=5;i>0;i--)
{
pour(int j=1;j<=i;j++)
{
[Link]("*"+" ");
}
[Link]();
}
}
}
/*
Programme pour imprimer
1
23
456
7 8 9 10
11 12 13 14 15
*/
classe Patter3
{
public static void main(String args[])
{
int a=1;
pour(int i=1;i<=5;i++)
{
pour(int j=1;j<=i;j++)
{
[Link](a +" ");
a++;
}
[Link]();
}
}
}
/*
Programme pour imprimer
Classe : [Link](I.T) SEM - IV Objet : Java de base
1
01
010
1010
10101
*/
classe Patter4
{
public static void main(String args[])
{
int a=1;
pour(int i=1;i<=5;i++)
{
pour(int j=1;j<=i;j++)
{
}
[Link]();
}
}
}
/*
WAP pour imprimer
*****
****
***
**
*
*/
classe Patter5
{
public static void main(String args[])
{
pour(int i=1;i<=5;i++)
{
pour(int j=1;j<i;j++)
{
[Link](" ");
}
pour(int k=i;k<=5;k++)
{
[Link]("*"+" ");
}
Classe : [Link](I.T) SEM - IV Sujet : Java de base
[Link]();
}
}
}
/*
*/
class Patter1
{
public static void main(String args[])
{
pour(int i=1;i<=10;i++)
{
pour(int j=1;j<=10;j++)
{
{
public static void main(String args[])
{
double a, b, c, d, e ;
double temp , r1 , r2 ;
int sélectionner ;
a=2;b=3;c=6;
temp = (b * b) - (4 * a * c) ;
si (temp > 0)
sélectionner = 0 ;
sinon
si (temp == 0)
sélectionner = 1 ;
sinon
select = 2 ;
commutateur (sélectionner)
{
cas 0 :
temp = [Link](temp) ;
r1 = (-b + temp) / (2 * a) ;
r2 = (-b - temp) / (2 * a) ;
[Link]("The roots are Real and Unequal.\n");
[Link]("Les racines sont : " + r1 + " " + r2);
pause ;
cas 1 :
r1 = -b / (2 * a) ;
r2 = r1 ;
[Link]("Les racines sont réelles et égales.\n");
[Link]("The roots are : "+r1+" "+r2);
break ;
cas 2 :
temp = -temp ;
temp = [Link](temp) ;
temp = temp / (2 * a) ;
r1 = -b / (2 * a) ;
[Link]("Les racines sont réelles et imaginaires.\n");
[Link]("Les racines sont : " + r1 + " + j" + temp + " , " + r1 + " - j" + temp);
pause ;
}
}
}
/*
programme pour imprimer
A B C D C B A
Un B C B A
A B A
A
Classe : [Link](I.T) SEM - IV Objet : Java de base
*/
classe Modèle
{
public static void main(String args[])
{
int i=0,j=6,k=0;
char x='A';
tant que((j/2)>=0)
{
pour(i=0;i<=(j/2);i++)
[Link](" "+((char)(x+i)));
i=i-2;
pour(;i>=0;i--)
[Link](" "+((char)(x+i)));
j=j-2;
k=k+1;
pour(i=0;i<=k;i++)
[Link](" ");
}
}
}
Écrire un programme pour accepter un nombre de l'utilisateur et vérifier s'il est premier ou non ?
class PrimeDemo
{
public static void main(String args[])
{
int num = [Link](args[0]);
int compteur = 0;
for(int i=2;i<=num/2;i++)
{
si(num % i == 0)
{
compte++;
pause;
}
}
si(compte == 0)
{
[Link]("Nombre premier");
}
sinon
{
Classe : [Link](I.T) SEM - IV Sujet : Java de base
classe Reverse
{
public static void main(String args[])
{
int intNum = [Link](args[0]);
int rev = 0;
/*
for(;intNum>0;)
Classe : [Link](I.T) SEM - IV Sujet : Java de base
{
int r = intNum % 10;
rev = rev * 10 + r;
*/
rev = rev * 10 + r;
}
Classe : [Link](I.T) SEM - IV Sujet : Core Java
Classe : [Link](I.T) SEM - IV Sujet : Java de base
6- Tableaux et chaînes
Tableaux
Un tableau est une structure de données consistant en une liste numérotée d'éléments, où tous les éléments sont
du même type.
Un tableau est une collection de données similaires avec le même nom...
Un tableau est un type de données de référence défini par l'utilisateur...
En Java, les éléments d'un tableau sont toujours numérotés de zéro jusqu'à un certain maximum
valeur, qui est définie lorsque le tableau est créé. Par exemple, un tableau pourrait contenir 10
entiers, numérotés de zéro à 9.
Les éléments d'un tableau peuvent appartenir à l'un des types primitifs de Java. Ils peuvent également être
références aux objets.
La longueur d'un tableau est établie lors de la création du tableau. Après sa création, sa longueur est
fixé.
TypeDeDonnées: Détermine le type de la valeur que le tableau doit stocker (int, float, etc.)
Classe : [Link](I.T) SEM - IV Subject : Core Java
Exemple :
int num[];
num = nouveau int[5];
OU
int num[] = new int[5];
Étapes :
1) Déclaration d'un tableau.
2) Initialisation d'un tableau.
3) Affichage des éléments du tableau.
TypeDeDonnées NomDuTableau[];
ArrayName = nouveau DataType[Size];
OU
DataType NomDuTableau[] = new DataTypeTaille;
TypeDeDonnées : Détermine le type de la valeur que le tableau doit stocker (int,float etc)
NameOfArray est un nom défini par l'utilisateur.
La taille détermine la valeur maximale que le tableau peut stocker.
L'opérateur new est utilisé pour allouer de la mémoire pour les éléments de tableau.
Exemple :
int num[];
num = nouveau int[5];
OU
int num[] = new int[5];
num[0] = 1;
num[1] = 2;
num[2] = 3;
num[3] = 11;
num[4] = 33;
Classe : [Link](I.T) SEM - IV Sujet : Java de base
// Deuxième façon
Si cette déclaration était manquante, le compilateur afficherait une erreur comme suit, et
la compilation échouerait :
classe Tableau1
{
public static void main(String args[])
{
/*
int num[] = new int[5];
num[0] = 1;
num[1] = 2;
num[2] = 3;
num[3] = 11;
num[4] = 33;
*/
// OU
Classe : [Link](I.T) SEM - IV Subject : Core Java
[Link]("Longueur="+len);
pour(int i=0;i<[Link];i++)
{
[Link]("Indice du tableau " + i + " " + num[i] );
}
}
}
Lorsque la déclaration d'un tableau utilise deux indices pour déclarer un tableau, il est appelé
tableau à deux dimensions ou double dimension
Syntaxe :
TypeDeDonnées NomDuTableau[][];
NomDuTableau = nouveau TypeDeDonnées[Size1][size2];
Classe : [Link](I.T) SEM - IV Objet : Java de base
OU
Où
Le type de données détermine le type de la valeur que le tableau stocke (int, float, double, etc.).
NameOfArray est un nom défini par l'utilisateur.
l'opérateur new est utilisé pour allouer de la mémoire pour les éléments du tableau.
En interne, Java stocke les tableaux à deux dimensions sous forme de tableau de tableaux :
Exemple :
/*
Tableau à deux dimensions :
lorsque la déclaration de tableau utilise deux indices pour déclarer un tableau, on l'appelle deux
tableau multidimensionnel...
datatype[][] NomDuTableau = new datatype[taille][taille1];
int[][] intNum = new int[2][2];
*/
classe Tableau2D
{
Classe : [Link](I.T) SEM - IV Sujet : Java de base
/*
intNum[0][0] = 3;
intNum[0][1] = 3;
intNum[1][0] = 3;
intNum[1][1] = 3;
*/
int[][] intNum = {
{3,3,5}
{4,5,6}
{4,5,6}
};
pour(int i=0;i<[Link];i++)
{
pour(int j=0;j<[Link];j++)
{
[Link](intNum[i][j]+" ");
}
[Link]();
}
}
}
classe DeuxDArrayUserInput
{
public static void main(String args[]) throws IOException
{
int[][] intNum = new int[2][2]; //Déclaration du tableau...
intNum[i][j] = [Link]([Link]());
}
}
pour(int i=0;i<[Link];i++)
{
for(int j=0;j<[Link];j++)
{
[Link](intNum[i][j]+" ");
}
[Link]();
}
}
}
Addition de matrices :
importer [Link].*;
Classe : [Link](I.T) SEM - IV Subject : Core Java
classe AjouterMatrice
{
public static void main(String args[]) jette IOException
{
int[][] intNum1 = new int[2][2];
intNum1[i][j] = [Link]([Link]());
}
}
intNum2[i][j] = [Link]([Link]());
}
}
Systè[Link]("Première Matrice:");
pour(int i=0;i<[Link];i++)
{
pour(int j=0;j<[Link];j++)
{
[Link](intNum1[i][j]+" ");
}
[Link]();
}
Systè[Link]("Deuxième matrice :");
pour(int i=0;i<[Link];i++)
{
pour(int j=0;j<[Link];j++)
{
[Link](intNum2[i][j]+" ");
}
Classe : [Link](I.T) SEM - IV Subject : Core Java
[Link]();
}
pour(int i=0;i<[Link];i++)
{
for(int j=0;j<[Link];j++)
{
intSum[i][j] = intNum1[i][j] + intNum2[i][j];
}
}
for(int i=0;i<[Link];i++)
{
for(int j=0;j<[Link];j++)
{
[Link](intSum[i][j]+" ");
}
[Link]();
}
}
}
importer [Link].*;
classe SommeDeLaDiagonale
{
public static void main(String args[]) throws IOException
{
int[][] intNum1 = new int[2][2];
intNum1[i][j] = [Link]([Link]());
}
}
[Link]("Première Matrice:");
pour(int i=0;i<[Link];i++)
{
for(int j=0;j<[Link];j++)
{
[Link](intNum1[i][j]+" ");
}
[Link]();
}
int somme = 0;
pour(int i=0;i<[Link];i++)
{
for(int j=0;j<[Link];j++)
{
si(i == j)
{
somme = somme + intNum1[i][j];
}
}
}
Tableau multidimensionnel
Enfin, vous pouvez utiliser la propriété length intégrée pour déterminer la taille de n'importe quel tableau.
code
[Link]([Link]);
affichera la taille du tableau à la sortie standard.
importer [Link].*;
classe ArrayInput
{
pour(int i=0;i<[Link];i++)
{
[Link]("Élément du tableau="+i+" "+intNum[i]);
}
}
Classe : [Link](I.T) SEM - IV Objet : Java de base
/*
Écrivez un programme pour accepter 10 nombres de l'utilisateur et trouver le plus grand des 10 nombres.
*/
import [Link].*;
classe Large5Num
{
pour(int i=0;i<[Link];i++)
{
[Link]("Élément du tableau="+i+" "+intNum[i]);
}
for(int i=1;i<[Link];i++)
{
si(intLarge < intNum[i])
{
intLarge = intNum[i];
}
}
}
Classe : [Link](I.T) SEM - IV Subject : Core Java
import [Link].*;
classe TriBulles
{
public static void main(String args[]) throws IOException
{
int[] intNum = new int[5]; // Decleration Of Array
pour(int i=0;i<[Link];i++)
{
pour(int j=i+1;j<[Link];j++)
{
Classe : [Link](I.T) SEM - IV Sujet : Java de base
Chansons
LeStringla classe représente des chaînes de caractères. Tous les littéraux de chaîne dans les programmes Java, tels que
abc, sont mis en œuvre en tant qu'instances de cette classe.
Les chaînes sont constantes ; leurs valeurs ne peuvent pas être modifiées après leur création. Les tampons de chaînes
prendre en charge des chaînes mutables. Parce que les objets String sont immuables, ils peuvent être partagés. Pour
example:
chaîne str = "abc";
est équivalent à :
char data[] = {'a', 'b', 'c'};
String str = new String(data);
Voici quelques exemples supplémentaires de la façon dont les chaînes peuvent être utilisées :
[Link]("abc");
String cde = "cde";
[Link]("abc" + cde);
String c = "abc".substring(2,3);
String d = [Link](1, 2);
CONSTRUCTEURS
Chaîne() Initialise un nouvel objet String afin que
il représente une séquence de caractères vide.
Méthodes :
charAt(int index)
Char Renvoie le caractère à l'index spécifié.
IntcompareÀ(Chaîne anotherString)
Compare deux chaînes de caractères lexicographiquement.
IntcomparerIgnorerCas(Chaîne str)
Compare deux chaînes de caractères lexicographiquement, en ignorant les différences de casse.
Address:- 1244/3 Shinde House, Barkat Ali Dargah Road, Wadala(E) Mumbai-37
Prof. Shahid Ansari(9821-77-1054)
Classe : [Link](I.T) SEM - IV Subject : Core Java
Chaineconcaténer(Chaîne str)
Concatène la chaîne spécifiée à la fin de cette chaîne.
BooléencontentEquals(StringBuffer sb)
Renvoie vrai si et seulement si cette chaîne représente la même séquence de
caractères comme le StringBuffer spécifié.
Booléense termine par(Chaîne ssuffixe)
Teste si cette chaîne se termine par le suffixe spécifié.
Booléenégal(Objet anObjet)
Compare cette chaîne à l'objet spécifié.
BooléenequalsIgnoreCase(Chaîne anotherString)
Compare cette chaîne à une autre chaîne, en ignorant les considérations de casse.
octet[]obtenirOctets()
Encodes this String into a sequence of bytes using the platform's default
jeu de caractères, stockant le résultat dans un nouveau tableau d'octets.
vide
getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin
Copie les caractères de cette chaîne dans le tableau de caractères de destination.
int longueur()
Renvoie la longueur de cette chaîne.
Chaîne
remplacer(char ancienChar, char nouveauChar
Renvoie une nouvelle chaîne résultant du remplacement de toutes les occurrences de oldChar dans ceci
chaîne avec newChar.
Address:- 1244/3 Shinde House, Barkat Ali Dargah Road, Wadala(E) Mumbai-37
Prof. Shahid Ansari(9821-77-1054)
Classe : [Link](I.T) SEM - IV Sujet : Java de base
booléen
commencePar(Chaîne prefix, int toffset)
Teste si cette chaîne commence par le préfixe spécifié à partir d'un index spécifié.
Chaîne
minuscules()
Convertit tous les caractères de cette chaîne en minuscules selon les règles de la
paramètre régional par défaut.
Chaîne toString()
Cet objet (qui est déjà une chaîne !) est lui-même renvoyé.
Chaîne
toUpperCase()
Convertit tous les caractères de cette chaîne en majuscules en utilisant les règles du
paramètre régional par défaut.
Chaîne
tailler()
Renvoie une copie de la chaîne, avec les espaces vides au début et à la fin omis.
Exemple :
classe StringDemo
{
public static void main(String args[])
{
Adresse :- 1244/3 Maison Shinde, Route Barkat Ali Dargah, Wadala(E) Mumbai-37
Prof. Shahid Ansari (9821-77-1054)
Classe : [Link](I.T) SEM - IV Sujet : Java de base
[Link]("Str="+str);
[Link]("Str1="+str1);
[Link]("Str2="+str2);
[Link]("Str="+str);
[Link]([Link]());
}
Classe : [Link](I.T) SEM - IV Subject : Core Java
Classe StringBuffer :
Un tampon de chaîne est comme une chaîne, mais peut être modifié.
À tout moment, il contient une séquence particulière de caractères, mais la longueur et
Le contenu de la séquence peut être modifié par certains appels de méthode.
Chaque tampon de chaîne a une capacité.
Tant que la longueur de la séquence de caractères contenue dans le tampon de chaîne ne
dépasser la capacité, il n'est pas nécessaire d'allouer un nouveau tableau tampon interne.
Si le tampon interne déborde, il est automatiquement agrandi.
Constructeurs:
StringBuffer()
Construit un tampon de chaîne sans caractères et une capacité initiale de 16 caractères.
StringBuffer(int longueur)
Construit un tampon de chaîne sans caractères et une capacité initiale spécifiée par le
argument de longueur.
Construit un tampon de chaîne afin qu'il représente la même séquence de caractères que le
argument de chaîne ; en d'autres termes, le contenu initial du tampon de chaîne est une copie de la
chaîne d'argument
Méthodes
StringBufferappend(boolean b)
Ajoute la représentation sous forme de chaîne de l'argument booléen à la
séquence.
StringBufferajouter(char c)
Ajoute la représentation sous forme de chaîne de l'argument char à cette séquence.
StringBufferappend(char[] str)
Ajoute la représentation sous forme de chaîne du tableau de caractères en argument à ceci
séquence.
StringBufferappend(char[] str, int offset, int len)
Ajoute la représentation sous forme de chaîne d'un sous-tableau du tableau de caractères
argument à cette séquence.
StringBufferajoute(double d)
Ajoute la représentation sous forme de chaîne de l'argument double à ceci
séquence.
StringBufferappend(float f)
Ajoute la représentation sous forme de chaîne de l'argument float à cette séquence.
StringBufferappend(int i)
Ajoute la représentation sous forme de chaîne de l'argument entier à cette séquence.
StringBufferappend(long lng)
Ajoute la représentation sous forme de chaîne de l'argument long à cette séquence.
StringBufferappend(Object obj)
Ajoute la représentation sous forme de chaîne de l'argument Object.
StringBufferajouter(String str)
Ajoute la chaîne spécifiée à cette séquence de caractères.
StringBufferappend(StringBuffer sb)
Ajoute le StringBuffer spécifié à cette séquence.
StringBufferappendCodePoint(int codePoint)
Ajoute la représentation sous forme de chaîne de l'argument codePoint à ceci
séquence.
intcapacity()
Classe : [Link](I.T) SEM - IV Subject : Core Java
intcodePointAt(int index)
Renvoie le caractère (point de code Unicode) à l'index spécifié.
StringBufferdelete(int début, int fin)
Supprime les caractères d'une sous-chaîne de cette séquence.
StringBufferdeleteCharAt(int index)
Supprime le caractère à la position spécifiée dans cette séquence.
voidtrimToSize()
Tentatives de réduire l'espace de stockage utilisé pour la séquence de caractères.
Classe : [Link](I.T) SEM - IV Sujet : Java de base
Exemple :
classe StringBufferDemo1
{
public static void main(String args[])
{
[Link]("String="+sb);
[Link]("Capacité="+[Link]());
[Link]("String="+sb1);
[Link]("Capacité="+[Link]());
[Link]("Chaîne="+sb3);
[Link]("Capacité="+[Link]());
// ******Méthodes******
obj = "ABCDEFGH".toString();
[Link](obj);
[Link]("Chaîne="+sb);
[Link]("Longueur de sb="+[Link]());
[Link]("Capacité="+[Link]());
[Link]("Reverse="+[Link]());
[Link](2,8);
[Link]("Chaîne après suppression="+sb3);
[Link]("Après insertion="+sb6);
}
}
La classe System a une méthode de copie de tableau que vous pouvez utiliser pour copier des données de manière efficace
d'un tableau à un autre :
class ArrayCopyDemo {
public static void main(String[] args) {
char[] copyFrom = { 'd', 'e', 'c', 'a', 'f', 'f', 'e',
'j', 'n', 'à', 't', 'é', 'd' }
char[] copyTo = new char[7];
Array of Objects
Un tableau 2D d'objets est un tableau d'un tableau de références à des objets :
La pile d'appels.
Le système d'exécution recherche la pile d'appels pour une méthode qui contient un bloc de code qui
peut gérer l'exception. Ce bloc de code est appelé un gestionnaire d'exception.
La recherche commence par la méthode par laquelle l'erreur s'est produite et se poursuit à travers le
la pile d'appels dans l'ordre inverse dans lequel les méthodes ont été appelées.
Lorsque un gestionnaire approprié est trouvé, le système d'exécution passe l'exception au
manipulateur.
Un gestionnaire d'exceptions est considéré comme approprié si le type de l'objet d'exception levé
correspond au type qui peut être géré par le gestionnaire.
Le gestionnaire d'exceptions choisi est dit attraper l'exception.
Si le système d'exécution recherche de manière exhaustive toutes les méthodes sur la pile d'appels sans
trouver un gestionnaire d'exception approprié, comme montré dans la figure suivante, le système d'exécution
(et, par conséquent, le programme) se termine.
Classe : [Link](I.T) SEM - IV Subject : Core Java
………………..
……………….
}
statique voidprocA() {
essayer{
[Link]("à l'intérieur de procA");
jeter newRuntimeException("démonstration");
}finally{
[Link]("finally de procA");
}
}
essayer{
[Link]("à l'intérieur de procB");
retour;
}
enfin
[Link]("finalement de procB");
}
}
essayer{
[Link]("à l'intérieur de procC");
}
enfin
[Link]("finalement de procC");
}
}
essayer{
procA();
}catch(Exception e){
[Link]("Exception détectée");
procB();
procC();
Écran de sortie :
à l'intérieur de procA
procA est enfin
Exception attrapée
à l'intérieur de procB
procB's enfin
à l'intérieur de procC
Mot-clé Throws :
"throws" est un mot-clé défini dans le langage de programmation Java. Les mots-clés sont essentiellement
mots réservés ayant une signification spécifique pertinente pour un compilateur dans la programmation Java
le mot-clé throw indique ce qui suit :
Le mot-clé throws dans le langage de programmation Java est applicable à une méthode pour indiquer
que la méthode soulève un type particulier d'exception lors de son traitement.
-- Le mot clé throws dans le langage de programmation Java prend des arguments sous forme de liste des
objets de type classe [Link].
-- lorsque nous utilisons le throws avec une méthode, cela s'appelle ducking. La méthode appelant un
Une méthode avec une clause throws doit être encadrée par des blocs try catch.
Exemple d'utilisation du mot-clé throws dans une classe :
importer [Link];
classe publique Class1 {
méthode publique lectureFichier(String fichier)
lance IOException{
<statements>
if (error){
lancer une IOException("erreur
lecture du fichier
}
}
}
Classe : [Link](I.T) SEM - IV Subject : Core Java
Objets :
Un objet est une collection de membres de données et de fonctions membres associées également connues sous le nom de
methods.
Syntaxe :
Nom_Classe Nom_Object;
Object_Nom = new Classe_Nom();
OU
Class_Name Object_Name= new Class_Name();
Exemple :
Supposons que le nom de la classe soit Étudiant alors
Étudiant s = nouveau Étudiant();
Classes :
Les classes sont des types de données sur la base desquels des objets sont créés.
Les objets ayant des propriétés et des méthodes similaires sont regroupés pour former une classe.
Ainsi, une classe représente un ensemble d'objets individuels.
Les caractéristiques d'un objet sont représentées dans une classe comme des Propriétés.
Les actions qui peuvent être effectuées par des objets deviennent des fonctions de la classe et sont
appelés Méthodes.
Par exemple, considérons que nous avons une classe de voitures sous laquelle se trouvent Santro Xing, Alto et Wagan R.
représente des objets individuels. Dans ce contexte, chaqueObjetVoiture aura son propre Modèle, Année de
Fabrication, Couleur, Vitesse Max, Puissance Moteur, etc., qui forment les propriétés de la classe Voiture et
the associated actions i.e., object functions like Start, Move, Stop form the Methods ofCar
Classe.
Class : [Link](I.T) SEM - IV Sujet : Java de base
Aucune mémoire n'est allouée lorsqu'une classe est créée. La mémoire n'est allouée que lorsqu'un objet est
créé, c'est-à-dire lorsqu'une instance d'une classe est créée.
Syntaxe :
Classe Nom_Classe
{
The keyword‘private’is optional if data or functions are not associated with this keyword then
ils sont supposés être privés par défaut.
Les mots-clés 'private' et 'public' sont appelés 'Spécificateur d'accès'
Les données privées ne peuvent être accessibles que dans la même classe. Les données publiques peuvent être accessibles de l'extérieur.
classe.
Exemple :
classe étudiant
{
int numéros de rouleau;
char name[30];
flottant per;
Exemple :
classe Étudiant
{
public String nom ;
public int rollno ;
public float per ;
void afficher()
{
Classe : [Link](I.T) SEM - IV Sujet : Java de base
[Link]("Nom="+nom);
[Link]("Numéro de rouleau="+rollno);
[Link]("Pourcentage="+per);
}
}
classe StudentDemo
{
public static void main(String args[])
{
Étudiant SObj = new Étudiant();
[Link]("Junaid",12,99.77F);
[Link]();
Exemple :
classe Étudiant
{
Classe : [Link](I.T) SEM - IV Subject : Core Java
[Link]("ABC",2,23.77F)
[Link]();
}
Classe : [Link](I.T) SEM - IV Subject : Core Java
Tableaux d'objets
Tout objet, qu'il soit intégré ou défini par l'utilisateur, peut être stocké dans un tableau.
Lorsque vous déclarez le tableau, vous indiquez au compilateur le type d'objet à stocker et le
nombre d'objets pour lesquels allouer de la place. Le compilateur sait combien de place est
nécessaire pour chaque objet en fonction de la déclaration de classe.
Accéder aux données des membres dans un tableau d'objets est un processus en deux étapes.
Vous identifiez l'élément du tableau en utilisant l'opérateur d'index ([ ]), puis vous ajoutez
l'opérateur de membre (.) pour accéder à un membre variable particulier.
importer [Link].*;
classe Manager
{
int no_of_projects;
Chaîne nom;
void mettreDonnées()
{
[Link]("No_Of_Projects="+no_of_projects);
[Link]("Manager Name="+name);
}
}
classe ManagerDemo
{
public static void main(String args[])
{
Manager[] mObj = new Manager[3];
pour(int i=0;i<3;i++)
Classe : [Link](I.T) SEM - IV Sujet : Java de base
pour(int j=0;j<3;j++)
{
mObj[1].putData();
}
}
}
Les classes peuvent contenir des données membres statiques et des fonctions membres.
Lorsqu'un membre de données est déclaré comme statique, une seule copie des données est conservée pour tous
objets de la classe.
Classe : [Link](I.T) SEM - IV Sujet : Java de base
Les membres de données statiques ne font pas partie des objets d'un type de classe donné ; ils sont séparés.
objets.
En conséquence, la déclaration d'un membre de données statiques n'est pas considérée comme une définition.
Le membre de données est déclaré dans le scope de la classe, mais la définition est effectuée au scope du fichier.
Ces membres statiques ont une liaison externe. L'exemple suivant l'illustre :
Il est initialisé à zéro lorsque le premier objet de la classe est créé. Lors d'autres initialisations
est permis.
Une seule copie de ce membre est créée pour toute la classe et les autres objets partagent cela.
copie.
Il est visible uniquement au sein de la classe, mais sa durée de vie s'étend sur l'ensemble du programme.
Exemple :
/*
Membres de données statiques et fonctions membres
*/
classe StaticDemo
{
static int count;
int code=7;
void afficherCompte()
{
[Link]("Compteur="+compteur);
[Link]("Code="+code);
}
public static void main(String args[])
{
StaticDemo sd = new StaticDemo();
[Link]();
//[Link]("Code="+code);
[Link]("Count="+count);
Classe : [Link](I.T) SEM - IV Sujet : Java de base
La fonction statique est définie en utilisant le mot-clé statique avant la fonction membre qui doit être
déclaré comme fonction statique.
Syntaxe générale :
Une fonction statique ne peut accéder qu'aux autres données ou membres statiques déclarés dans le
classe.
Une fonction statique peut être appelée en utilisant le nom de la classe au lieu des objets.
Une fonction membre normale est accédée en utilisant l'objet et un opérateur appelé le point membre.
opérateur d'accès. Les fonctions déclarées statiques ou les fonctions statiques sont accessibles uniquement par la classe
le nom et l'opérateur de résolution de portée, contrairement aux fonctions membres normales où ceux-ci ne sont pas
utilisé.
Exemple :
classe MembreStatique
Classe : [Link](I.T) SEM - IV Sujet : Java de base
{
static int code;
int count = 2;
static void afficher()
{
[Link]("Code="+code);
}
void montrer()
{
[Link]("Compte="+count);
[Link]("Code="+code);
}
}
classe StaticMemberTest
{
public static void main(String args[])
{
StaticMember sm = new StaticMember();
[Link]();
[Link]();
}
}
Constructeurs :
Exemple:
classe ConsDemo
{
int a,b;
public ConsDemo()
{
a = 0;
b = 1;
}
void montrer()
{
[Link]("a="+a);
[Link]("b="+b);
}
}
classe ConsDemoTest
{
[Link]();
}
}
Classe : [Link](I.T) SEM - IV Sujet : Java de base
Types de constructeurs :
Dans l'ordinateurlangages de programmation tLe terme « constructeur par défaut » fait référence à
Constructeur paramétré :
JAVA permet d'atteindre cela en passant des arguments à la fonction constructeur quand le
des objets sont créés.
Le constructeur qui peut prendre des arguments est appelé constructeur paramétré.
Syntaxe :
classe <cname>
{
//data
public : cname(arguments);
.........
.........
};
Exemples :
classe étudiant
{
char name[20];
int rno;
public: étudiant(char,int);
};
student :: student(char n,int r)
{
name=n;
rno=r;
}
Exemple :
importer [Link].*;
classe ParaDemo
{
int a,b;
{
this.a = a;
this.b = b;
}
void afficher()
{
[Link]("a="+a);
[Link]("b="+b);
}
}
classe ParaDemoTest
{
public static void main(String args[])
{
ce mot-clé :
Le mot-clé 'this' est utile lorsque vous devez faire référence à une instance de la classe à partir de celle-ci.
méthode.
Le mot-clé nous aide à éviter les conflits de noms.
Comme nous pouvons le voir dans le programme, nous avons déclaré le nom de la variable d'instance et
variables locales identiques.
Here, this section provides you an example with the complete code of the program for the
illustration de ce qu'est ce mot clé et comment l'utiliser.
Dans l'exemple, [Link] et [Link] se réfèrent aux variables d'instance length et breadth.
tandis que la longueur et la largeur font référence aux arguments passés dans la méthode. Nous avons créé un programme
à travers cela. Après l'avoir parcouru, vous pouvez mieux comprendre.
Voici le code du programme :
classeRectangle{
intlength,breadth;
void afficher(int longueur, int largeur) {
[Link]=longueur;
[Link]=largeur;
}
intcalculer(){
retourner(longueur*largeur);
}
}
public classUseOfThisOperator{
public static void main(String[] args) {
Rectangle rectangle=newRectangle();
[Link](5,6);
intarea = [Link]();
[Link]("L'aire d'un rectangle est : " + area);
}
}
Un avantage visible de déclarer une variable java comme static final est que la classe java compilée
résultats en une performance plus rapide.
Avant qu'un objet ne soit collecté comme inutile, le système d'exécution appelle sa méthode finalize(). L'intention est
pour finalize() afin de libérer les ressources système telles que les fichiers ouverts ou les sockets ouverts avant d'obtenir
collecté.
Surcharge de fonction :-
est surchargé avec trois listes de paramètres différentes. Les première et deuxième versions diffèrent par les types
des paramètres, et le troisième diffère par le nombre de paramètres.
• Les types de retour peuvent être les mêmes ou différents sur les fonctions surchargées.
• Vous devriez noter que deux fonctions avec le même nom et la même liste de paramètres, mais différentes
Les types de retour génèrent une erreur de compilation.
• La surcharge de fonction est également appelée polymorphisme de fonction. Poly signifie plusieurs, et
morph signifie forme : une fonction polymorphe est multi-forme.
Exemple :
classe OverloadingDemo
{
void ajouter(int num1, int num2)
{
int somme = num1 + num2;
[Link]("Somme des variables entières=" + somme);
}
Classe : [Link](I.T) SEM - IV Objet : Java de base
classe TestLoading
{
public static void main(String args[])
{
[Link](5,6);
[Link](5.5,6.6);
}
}
Surcharge de constructeur
Si vous avez un constructeur avec le même nom et des arguments différents, alors c'est
appelé surchage de constructeur.
classe Chambre
{
double longueur, largeur, hauteur;
Chambre()
{
length=-1;
breadth=-1;
height=-1;
}
Chambre(double len)
{
longueur=largeur=hauteur=len;
}
double volume()
{
return longueur * largeur * hauteur;
}
Les classes imbriquées sont divisées en deux catégories : statiques et non statiques. Les classes imbriquées qui sont
déclaréstatiquesont simplement appelées classes imbriquées statiques. Les classes imbriquées non statiques sont appelées classes internes
classes.
classe OuterClass {
...
classe statique ClasseImbriquéeStatique {
...
}
classe InnerClass {
...
}
}
Une classe imbriquée est un membre de sa classe englobante.
Les classes imbriquées non statiques (classes internes) ont accès aux autres membres de la classe englobante.
même s'ils sont déclarés privés.
Classe : [Link](I.T) SEM - IV Subject : Core Java
Les classes imbriquées statiques n'ont pas accès aux autres membres de la classe englobante. En tant que membre de
leClasseExterne, une classe imbriquée peut être déclaréeprivé, public,protégé,
Pourquoi utiliser des classes imbriquées ?
Il existe plusieurs raisons d'utiliser des classes imbriquées, parmi lesquelles :
C'est une manière de regrouper logiquement des classes qui ne sont utilisées qu'à un seul endroit.
Cela augmente l'encapsulation.
Les classes imbriquées peuvent conduire à un code plus lisible et plus maintenable.
classe publiqueClasseExterieure
{
privéChaînevarInstanceExtérieure;
classe publiqueClasseInterne
{
public void printVars()
{
[Link]( "Imprimer la variable d'instance de la classe externe:" +
outerInstanceVar);
}
}
}
La classe interne a accès aux variables et méthodes de l'instance de la classe englobante, même privées,
comme indiqué ci-dessus. Cela le rend très différent de la classe imbriquée en C++, qui est équivalente à la
"static" classes internes, voir ci-dessous.
Un objet intérieur a une référence à l'objet extérieur. L'objet imbriqué ne peut être créé qu'avec un
référence à l'objet 'extérieur'. Voir ci-dessous.
public voidtestInner()
{
...
OuterClass extérieur =nouveauOuterClass();
[Link] intérieur = [Link]();
...
}
Exemple :
classe Extérieur
{
int a=1;
classe Intérieure
{
Classe : [Link](I.T) SEM - IV Sujet : Java de base
void showb()
{
[Link]("a="+a);
}
}
}
classe NestedDemo
{
public static void main(String args[])
{
Outer out1 = new Outer();
[Link] in1 = [Link] Inner();
[Link]();
}
Visibility control:
Membres publics :
Les membres publics peuvent être accessibles par n'importe quel objet de la classe.
Lorsqu'il précède une liste de membres de classe, le mot-clé public spécifie que ces membres sont
accessible depuis n'importe quelle fonction. Cela s'applique à tous les membres déclarés jusqu'au prochain spécificateur d'accès
ou la fin du cours.
classe A
{
int pubFunc()
{
retourner 0;
}
};
Membres privés :
Tous les membres d'une classe - données et méthodes - sont privés par défaut. Les membres privés peuvent être accédés
ne peut être utilisé que dans les méthodes de la classe elle-même.
Classe : [Link](I.T) SEM - IV Sujet : Java de base
classe A
{
int pubFunc() privé
{
retourner 0;
}
};
Protected Members:
Le mot-clé protégé spécifie l'accès aux membres de la classe dans la liste-des-membres jusqu'au suivant.
spécificateur d'accès (public ou privé) ou à la fin de la définition de la classe. Membres de la classe déclarés
comme protégé ne peut être utilisé que par les suivants :
Fonctions membres de la classe qui a initialement déclaré ces membres.
Amis de la classe qui a initialement déclaré ces membres.
Les classes dérivées avec un accès public ou protégé de la classe qui a été déclarée à l'origine
ces membres.
Classes dérivées directement privées qui ont également un accès privé aux membres protégés.
classe A
{
int pubFunc() protégé
{
retourner 0;
}
};
/*
Programme pour déclarer une classe Livre avec les membres de données suivants
1)name
enchère
3)auth_name
4)price
*/
import [Link].*;
classe Livre
{
Chaîne nom;
int enchère;
String Auth_name;
Classe : [Link](I.T) SEM - IV Sujet : Java de base
int prix;
void bookInput()
{
essayer
{
BufferedReader br = new BufferedReader(new
InputStreamReader([Link]));
[Link]("Entrez le nom du livre=");
nom = [Link]();
[Link]("Entrez l'ID du livre=");
offre = [Link]([Link]());
[Link]("Entrez le nom de l'auteur=");
Auth_name = [Link]();
[Link]("Enter The Price=");
prix = [Link]([Link]());
}
attraper(IOException e)
{
[Link](e);
}
}
void afficher()
{
[Link]("Nom du livre="+name);
[Link]("Identifiant du livre="+bid);
[Link]("Nom de l'auteur="+Auth_name);
[Link]("Prix="+prix);
}
classe BookDemo
{
public static void main(String args[])
{
Livre[] b = nouveau Livre[3];
pour(int i=0;i<3;i++)
Classe : [Link](I.T) SEM - IV Objet : Java de base
{
b[i].livreEntree();
}
pour(int i=0;i<3;i++)
{
b[i].afficher();
}
}
}
Exemple de Responsable :
importer [Link].*;
classe Responsable
{
int nombre_de_projets;
Chaîne nom;
void mettreDesDonnées()
{
[Link]("Nombre_De_Projets="+no_of_projects);
[Link]("Nom du manager="+name);
}
}
classe ManagerDemo
{
public static void main(String args[])
{
Manager[] mObj = new Manager[3];
pour(int i=0;i<3;i++)
Classe : [Link](I.T) SEM - IV Sujet : Java de base
pour(int j=0;j<3;j++)
{
mObj[1].putData();
}
}
}
Classe : [Link](I.T) SEM - IV Objet : Java de base
9 - Héritage
{"Definitions":"Définitions"}
L'idée d'héritage est simple mais puissante : lorsque vous souhaitez créer une nouvelle classe
et il existe déjà une classe qui inclut une partie du code que vous souhaitez, vous pouvez dériver
votre nouvelle classe de la classe existante.
Une classe qui est dérivée d'une autre classe est appelée une sous-classe (également une classe dérivée,
classe étendue, ou classe enfant.
La classe dont la sous-classe est dérivée est appelée superclasse (également classe de base ou une
classe parente).
Une sous-classe hérite de tous les membres (champs, méthodes et classes imbriquées) de sa
superclasse. Les constructeurs ne sont pas des membres, donc ils ne sont pas hérités par les sous-classes, mais le
Le constructeur de la superclasse peut être invoqué depuis la sous-classe.
est implicitement une sous-classe deObjet.
Les classes peuvent être dérivées de classes qui sont dérivées de classes qui sont dérivées de
classes, et ainsi de suite, et finalement dérivées de la classe la plus haute,Objet. Une telle classe est
a dit d'être descendu de toutes les classes de la chaîne d'héritage remontant à
Objet.
Un exemple d'héritage
Voici le code d'exemple pour une possible implémentation d'une classeBicycle qui a été présentée
dans la leçon Classes et Objets :
classe publique Bicycle {
}
Classe : [Link](I.T) SEM - IV Subject : Core Java
Types d'héritage :
Simple / Unique
Multiniveau
Héritage simple
One Super Class and one base class .
Dans "l'héritage simple", une forme courante d'héritage, les classes n'ont qu'une seule classe de base.
Syntaxe :
Classe Class_Name
{
Access Specifier:
Déclaration des membres de données;
Déclaration de fonction membre;
}
Classe Class_Name1 : SpécificateurDAccès Class_Name
{
Access Specifier:
Déclaration des Données_Membres;
Déclaration de Fonction_Membre;
Example:
classe Parent
{
public :
flotte hauteur;
char couleur_de_cheveux[30] ;
char couleur_des_yeux[30];
}
classe enfant : publique Parent
{
// Détails de l'enfant ;
}
Classe : [Link](I.T) SEM - IV Sujet : Java de base
classe publique A
{
}
public class B étend A
{
}
Multilevel Inheritance
L'héritage multi-niveaux est le processus de création d'une nouvelle classe à partir d'une classe déjà dérivée. Ici
La classe dérivée existante est une classe de base intermédiaire. La nouvelle classe créée est une classe dérivée.
Représentation diagrammatique :
classe publique A
{
}
public class B étend A
{
}
classe publique C étend B
{
}
par exemple
classeA {
Classe : [Link](I.T) SEM - IV Subject : Core Java
intx;
inty;
intget(intp,intq){
x=p; y=q;return(0);
}
voidMontrer(){
[Link](x);
}
}
classeBétendA{
voidShowb(){
[Link]("B");
}
}
classeCétendB{
voiddisplay() {
[Link]("C");
}
public static voidmain(String args[]){
A a =newA();
[Link](5,6);
[Link]();
}
}
}
Chaque sous-classe non abstraite de GraphicObject, comme Circle et Rectangle, doit
fournir des implémentations pour les méthodes de dessin et de redimensionnement :
Interfaces
Une interface dans lelangage de programmation Javas entype abstrait tqui est utilisé pour spécifier
uninterfacedans le sens générique du terme) queclasses mjuste mettre en œuvre.
Les interfaces sont déclarées en utilisant leinterfacekeyword, et ne peut contenir queméthode
signatures aet les déclarations de constantes (déclarations de variables qui sont déclarées comme étant à la fois
statiqueetfinal).
Une interface ne peut jamais contenir de définitions de méthodes.
Les interfaces ne peuvent pas être instanciées. Une classe qui implémente une interface doit implémenter tout
des méthodes décrites dans l'interface, ou être unclasse abstraite.
Un avantage de l'utilisation des interfaces est qu'elles simulenthéritage multiple.
Toutes les classes en Java (autres [Link], leclasse racine ole Javatype
système)doit avoir exactement unclasse de base;héritage multiple deles classes ne sont pas autorisées.
De plus, une classe Java peut implémenter, et une interface peut étendre, n'importe quel nombre de
interfaces ; cependant, une interface ne peut pas implémenter une interface.
[visibilité] interfaceNomDeLInterface[étendautre
interfaces] {
déclarations de constantes
déclarations de méthode abstraite
Classe : [Link](I.T) SEM - IV Sujet : Java de base
interface Rebondissable
{
void setBounce(); // Notez le point-virgule :
// Interface methods are public
et abstrait.
Considérez-les comme des prototypes
uniquement; aucune mise en œuvre n'est autorisée.
}
La syntaxe pour implémenter une interface utilise cette formule :
... implementsInterfaceName[,another interface,another,
...] ...
Classes mpar exemple, implémentez une interface.
public class Lion implements Predator {
mot-clé super
Le super est un mot-clé java. Comme son nom l'indique, super est utilisé pour accéder aux membres de
la super classe. Elle est utilisée à deux fins en java.
La première utilisation du mot-clé super est d'accéder aux variables de données cachées de la super classe.
caché par la sous-classe.
Par exemple, supposons que la classe A est la superclasse qui a deux variables d'instance, à savoir un int a et un float b.
La classe B est la sous-classe qui contient également ses propres membres de données appelés a et b. Ensuite, nous
peut accéder aux variables a et b de la super classe (classe A) à l'intérieur de la sous-classe classe B simplement en
appelant la commande suivante.
[Link];
Classe : [Link](I.T) SEM - IV Sujet : Java de base
Ici, un membre peut soit être une variable d'instance, soit une méthode. Cette forme de super est la plus élevée.
utile pour gérer des situations où les membres locaux d'une sous-classe masquent les membres d'un
super classe ayant le même nom. L'exemple suivant clarifie toutes les confusions.
classeA{
inta;
flottantb;
voidAfficher(){}
[Link]("b dans la super classe : " + b);
}
classeBétendA{
inta
flottantb
B(intp,floatq){
a = p;
super.b = q;
}
voidShow() {
[Link]();
[Link]("b dans la super classe : " + super.b);
[Link]("a dans la sous-classe :" + a);
}
Output:
C:\>java B
b dans la super classe : 5.0
b dans la super classe : 5.0
a dans la sous-classe : 1
super(param-list);
Classe : [Link](I.T) SEM - IV Sujet : Java de base
Ici, la liste des paramètres est la liste des paramètres requis par le constructeur dans le super
classe.
super doit être la première instruction exécutée à l'intérieur d'un constructeur de super classe.
Si nous voulons appeler le constructeur par défaut, nous passons la liste de paramètres vide.
le programme suivant illustre l'utilisation du mot clé super pour appeler une super classe
constructeur.
classeA{
inta;
intb;
intc;
A(intp,intq,intr){
a=p;
b=q;
c=r;
}
}
classeBétendA{
intd;
B(intl,intm,intn,into){
super(l,m,n);
d=o;
}
voidShow(){}
[Link]("a = " + a);
[Link]("b = " + b);
[Link]("c = " + c);
[Link]("d = " + d);
}
Surcharge de méthode :-
Dans une hiérarchie de classes, lorsqu'une méthode dans une sous-classe a le même nom et la même signature de type
comme une méthode dans sa superclasse, alors la méthode dans la sous-classe est dite écraser la
méthode dans la super classe.
Lorsqu'une méthode redéfinie est appelée depuis une sous-classe, elle fera toujours référence à la
version de cette méthode définie par la sous-classe.
La version de la méthode définie par la superclasse sera masquée.
Considérez ce qui suit :
// Surcharge de méthode.
classe A {
int i, j;
A(int a, int b) {
i = a;
j = b;
}
// afficher i et j
void montrer() {
[Link]("i et j : " + i + " " + j);
}
}
classe B étend A {
int k;
B(int a, int b, int c) {
super(a, b);
k = c;
}
// afficher k–cela remplace show() dans A
vide montrer() {
[Link]("k : " + k);
}
}
classe Surtaxe {
public static void main(String args[]) {
B subOb = new B(1, 2, 3);
[Link](); // cela appelle show() dans B
}
}
Lorsque show( ) est appelé sur un objet de type B, la version de show( ) définie dans B
est utilisé. C'est-à-dire que la version de show() à l'intérieur de B remplace la version déclarée dans A. Si
si vous souhaitez accéder à la version de la superclasse d'une fonction surchargée, vous pouvez le faire en
utiliser super. Par exemple, dans cette version de B, la version de la superclasse de show( ) est
invoqué dans la version de la sous-classe. Cela permet à toutes les variables d'instance d'être affichées.
Dispatch dynamique de méthode :
Le dispatch dynamique de méthodes (également connu sous le nom de liaison dynamique) est le processus de mappage
classe A {
void callme() {
[Link]("À l'intérieur de la méthode callme d'A");
}
}
classe B étend A {
void appeler() {
[Link]("À l'intérieur de la méthode callme de B");
}
}
classe C étend A {
void callme() {
[Link]("À l'intérieur de la méthode callme de C");
}
}
classe Répartition {
public static void main(String args[]) {
A a = new A(); // objet de type A
B b = new B(); // objet de type B
C c = new C(); // objet de type C
A r; // obtenir une référence de type A
r = c; // r se réfère à un objet C
[Link](); // appelle la version de callme de C
}
}
10 - Multithreading :
Multitasking:-
Le multitâche permet d'exécuter plus d'une tâche en même temps, une tâche étant un
programme.
Dans le multitâche, seul un CPU est impliqué mais il peut passer d'un programme à l'autre.
un autre programme si rapidement c'est pourquoi cela donne l'impression d'exécuter tout le
programmes en même temps.F
Le multitâche permet aux processus (c'est-à-dire aux programmes) de s'exécuter simultanément sur le programme.
Exemple d'exécution du programme tableur et vous travaillez avec un traitement de texte
aussi.
Le multitâche consiste à exécuter des processus lourds par un seul système d'exploitation.
Multithreading :
Le multithreading est une technique qui permet à un programme ou à un processus d'exécuter de nombreuses tâches.
concurrentiellement (en même temps et en parallèle). Cela permet à un processus d'exécuter ses tâches dans
mode parallèle sur un système à processeur unique
Dans le concept de multithreading, plusieurs processus légers multiples sont exécutés dans un seul
processus/tâche ou programme par un seul processeur.
Par exemple, lorsque vous utilisez un traitement de texte, vous effectuez de nombreuses tâches différentes telles que
comme l'impression, la vérification orthographique, etc. Les logiciels multithread traitent chaque processus comme un
programme séparé.
En Java, la Machine Virtuelle Java (JVM) permet à une application d'avoir plusieurs fils d'exécution.
exécution en cours simultanément.
Classe : [Link](I.T) SEM - IV Sujet : Java de base
Cela permet à un programme d'être plus réactif envers l'utilisateur. Lorsqu'un programme contient
plusieurs fils alors le CPU peut passer d'un fil à l'autre pour les exécuter à
le même temps.
Le multithreading est important pour Java pour deux raisons principales. Tout d'abord, le multithreading permet
vous à écrire des programmes très efficaces car cela vous permet d'utiliser le temps d'inactivité qui est
présent dans la plupart des programmes.
La plupart des périphériques d'entrée/sortie, qu'il s'agisse de ports réseau, de disques durs ou du clavier, sont
beaucoup plus lent que le CPU.
Ainsi, un programme passera souvent une grande partie de son temps d'exécution à attendre d'envoyer ou
recevoir des informations à partir d'un appareil ou vers un appareil. En utilisant le multithreading, votre programme peut
gérer l'interaction utilisateur (comme les clics de souris ou les appuis sur des boutons), et encore un autre peut
être en train de mettre en mémoire le prochain bloc de données à envoyer.
La deuxième raison pour laquelle le multithreading est important pour Java concerne le Java’s
modèle de gestion d'événements. Un programme (comme un applet) doit réagir rapidement à un événement
et ensuite revenir. Un gestionnaire d'événements ne doit pas conserver le contrôle du CPU pendant une période prolongée.
période de temps.
Deux threads ou plus peuvent communiquer entre eux par des méthodes qui sont
défini par Object. Ces méthodes sont wait( ), notify( ), et notifyAll( ). Elles permettent à un
fil pour attendre un autre. Par exemple, si un fil utilise une ressource partagée, alors
un autre fil doit attendre jusqu'à ce que le premier fil soit terminé. Le fil d'attente peut
reprendre l'exécution lorsque le premier thread l'informe que la ressource est maintenant disponible.
Les fils peuvent faire partie d'un groupe. Un groupe de fils vous permet de gérer des fils liés.
collectivement. Par exemple, vous pouvez obtenir un tableau des fils dans le groupe.
Le système de multithreading de Java est basé sur la classe Thread et son interface compagnon.
Runnable. Un thread encapsule un fil d'exécution. Pour créer un nouveau thread, votre
le programme mettra soit en œuvre l'interface Runnable soit étendra Thread. Les deux Runnable
et Thread sont regroupés dans [Link]. Ainsi, ils sont automatiquement disponibles pour tous.
programmes.
Classe : [Link](I.T) SEM - IV Sujet : Java de base
L'interface Runnable
L'interface [Link] abstrait une unité de code exécutable. Vous pouvez construire un
fil sur tout objet qui implémente l'interface Runnable. Par conséquent, toute classe que vous
l'intention de s'exécuter dans un fil séparé doit implémenter Runnable. Runnable ne définit qu'un seul
méthode appelée run( ), qui est déclarée comme ceci :
void run()
À l'intérieur de run( ), vous définirez le code qui constitue le nouveau thread. Il est important de
comprenez que run( ) peut appeler d'autres méthodes, utiliser d'autres classes et déclarer des variables tout comme
le fil principal. La seule différence est que run( ) établit le point d'entrée pour un autre,
fil d'exécution concurrent dans votre programme. Ce fil se terminera lorsque run( ) renverra.
Une fois que vous avez créé une instance d'une classe qui implémente Runnable, vous créez un thread en
construire un objet de type Thread, en passant l'instance Runnable. Pour démarrer le thread
Pour démarrer, vous appelerez start() sur l'objet Thread, comme décrit dans la section suivante.
La Classe Thread
La classe Thread encapsule un fil. Elle est emballée dans [Link] et implémente le
Interface Runnable. Par conséquent, une deuxième façon de créer un thread est d'étendre Thread et
remplacer la méthode run( ). Le thread définit également plusieurs méthodes qui aident à gérer les threads.
Voici ceux utilisés dans ce chapitre :
Les méthodes définies par InputStream
Créer un fil
Lorsqu'un thread est créé, il doit être lié de manière permanente à un objet avec une méthode run().
Lorsque le thread est lancé, il invoquera la méthode run() de l'objet. Plus spécifiquement, le
l'objet doit implémenter l'interface Runnable.
Il y a deux façons de créer un thread. La première consiste à déclarer une classe qui étend Thread. Quand
la classe est instanciée, le thread et l'objet sont créés ensemble et l'objet est
lié automatiquement au fil d'exécution. En appelant la méthode start() de l'objet, le fil est démarré
et appelle immédiatement la méthode run() de l'objet. Voici un exemple de code pour démontrer cela
méthode.
// Cette classe étend Thread
classe BasicThread1 étend Thread {
// Cette méthode est appelée lorsque le thread s'exécute
public void run() {
}
Classe : [Link](I.T) SEM - IV Sujet : Java de base
}
// Créer et démarrer le thread
Thread fil = nouveau BasicThread1();
[Link]();
La deuxième façon est de créer le thread et de lui fournir un objet avec une méthode run(). Cet objet
sera définitivement associé au fil. La méthode run() de l'objet sera invoquée lorsque
le fil est démarré. Cette méthode de création de fil est utile si vous voulez que plusieurs fils partagent
un objet. Voici un exemple qui crée un objet Runnable puis crée un fil avec le
objet.
// Démarrer le fil
[Link]();
/**
Cette méthode est exécutée lorsque la méthode start() est appelée sur le thread.
* donc ici vous mettrez le 'code de fil'.
*/
public void run() {
[Link]("Fil exécuté !");
}
/**
* @param args les arguments de la ligne de commande
*/
public static void main(String[] args) {
Fil thread = nouveau MyThread();
Classe : [Link](I.T) SEM - IV Sujet : Core Java
fil.démarrer();
}
}
/**
* Comme dans l'exemple précédent, cette méthode est exécutée
* lorsque la méthode start() est appelée sur le thread
* donc ici vous allez mettre le 'code de fil'.
*/
public void run() {
[Link]("Fil exécuté !");
}
/**
* @param args les arguments de la ligne de commande
*/
public static void main(String[] args) {
Arrêter un fil
La manière appropriée d'arrêter un thread en cours d'exécution est de définir une variable que le thread vérifie occasionnellement.
Lorsque le fil détecte que la variable est définie, il doit retourner depuis la méthode run().
Remarque : [Link]() et [Link]() fournissent des méthodes asynchrones pour arrêter un fil.
Cependant, ces méthodes ont été déclarées obsolètes car elles sont très dangereuses. Les utiliser
souvent entraîne des blocages et un nettoyage incorrect des ressources.
// Créer et démarrer le fil
MyThread thread = new MyThread();
[Link]();
Classe : [Link](I.T) SEM - IV Sujet : Java de base
// Arrêter le thread
[Link] = true;
État exécutable (prêt à s'exécuter) - Un thread commence sa vie dans l'état exécutable. Un thread entre d'abord
l'état exécutable après l'appel de la méthode start() mais un fil d'exécution peut revenir à cet état après
soit en cours d'exécution, en attente, en train de dormir ou revenant d'un état bloqué également. Dans cet état, un fil
attend son tour sur le processeur.
État d'exécution - Un thread est dans l'état d'exécution ce qui signifie que le thread est actuellement en cours d'exécution.
Il existe plusieurs façons d'entrer dans l'état Runnable, mais il n'y a qu'un seul moyen d'entrer dans l'état Running :
le planificateur sélectionne un fil d'exécution dans le pool des threads exécutables.
État mort – Un fil peut être considéré comme mort lorsque sa méthode run() se termine. Si un fil quelconque
vient à cet état, cela signifie qu'il ne peut jamais fonctionner à nouveau.
Bloqué - Un thread peut entrer dans cet état en raison de l'attente des ressources détenues par
un autre fil.
Classe : [Link](I.T) SEM - IV Sujet : Java de base
Comme nous l'avons vu, différents états peuvent se produire avec un seul fil.
Un thread en cours d'exécution peut entrer dans n'importe quel état non exécutable, en fonction des circonstances.
Un fil ne peut pas entrer directement dans l'état d'exécution depuis l'état non exécutable, d'abord il
passe à l'état exécutable. Maintenant, comprenons certains états non exécutables qui peuvent
être en mesure de gérer les multithreads.
Dormant - Dans cet état, le fil est toujours actif mais n'est pas exécutable, il pourrait revenir.
dans un état exécutable plus tard, si un événement particulier se produit. Dans cet état, un fil s'endort pendant un
une durée spécifiée. Vous pouvez utiliser la méthode sleep( ) pour arrêter l'état d'exécution d'un
fil.
Bloqué sur I/O - Le fil attend la fin de l'opération bloquante. Un fil peut entrer sur
cet état en raison de l'attente des ressources d'entrée/sortie. Dans ce cas, le thread renvoie à l'état exécutable
après la disponibilité des ressources.
Bloqué pour achèvement conjoint – Le fil peut atteindre cet état en raison de l'attente de
achèvement d'un autre fil.
Bloqué pour acquisition de verrouillage – Le thread peut se retrouver dans cet état en raison d'une attente pour acquérir
Les méthodes qui peuvent être appliquées sur une classe Thread :
filActuel( ) Fil Renvoie une référence d'objet au thread dans lequel il se trouve.
invoqué.
String obtenirNom( ) Récupérer le nom de l'objet ou de l'instance de thread.
Début vide() Démarrez le fil en appelant sa méthode run.
Void run( ) Cette méthode est le point d'entrée pour exécuter un thread, comme la méthode main.
pour les applications.
Classe : [Link](I.T) SEM - IV Subject : Core Java
vide dormir( ) Suspend un fil pendant une durée spécifiée (en millisecondes).
Booléen estVivant() Cette méthode est utilisée pour déterminer si le thread est en cours d'exécution ou non.
int compterActif( ) Cette méthode renvoie le nombre de threads actifs dans un particulier
fil
groupe et tous ses sous-groupes.
interrompre(void) La méthode interrompt les fils sur lesquels elle est invoquée.
void yield( ) En invoquant cette méthode, le thread en cours interrompt temporairement son exécution.
et
permettre à d'autres threads de s'exécuter.
void join() :-
Cette méthode et join(long millisec) lancent InterruptedException. Ces deux méthodes sont
invoked on a thread. These are not returned until either the thread has completed or it is timed
respectivement.
Thread Priority :-
Comme mentionné, vous pouvez appeler la méthode interrupt() d'un objet Thread pour interrompre le
fil correspondant s'il est en sommeil ou en attente.
Le fil correspondant se "réveillera" avec une IOException à un moment donné dans le
avenir. Voir l'interruption de thread pour plus de détails.
setPriority() / getPriority()
Définit et interroge une attribution de priorité spécifique à la plateforme pour le thread donné.
Lors du calcul d'une valeur de priorité, il est bon de le faire toujours par rapport à la
les constantes Thread.MIN_PRIORITY, Thread.NORM_PRIORITY et Thread.MAX_PRIORITY.
En pratique, les valeurs vont de 1 à 10 et se rapportent à un certain intervalle spécifique à la machine.
valeurs : bonnes valeurs dans le cas de Linux, et priorités de threads locales dans le cas de
Fenêtres.
Voici généralement la plage de valeurs des fils d'utilisateurs "normaux", et le système d'exploitation va
en fait, exécutez toujours d'autres fils au-delà de ces valeurs (donc, par exemple, vous ne pouvez pas prêter
le fil du pointeur de la souris en définissant un fil à MAX_PRIORITY!).
Trois problèmes principaux concernant les priorités des threads sont que :
Leur comportement dépend de la plateforme et de la version de Java : par exemple, sous Linux,
les priorités ne fonctionnent pas du tout dans Hotspot avant Java 6, et le mappage de Java
les priorités du système d'exploitation ont changé sous Windows entre Java 5 et Java 6;
En essayant de les utiliser à des fins spécifiques, vous pourriez en réalité interférer avec davantage.
des décisions de planification sensées que le système d'exploitation aurait de toute façon prises pour
En Java, le planificateur de threads peut utiliser les priorités de threads sous la forme d'une valeur entière pour chacun de ses
fil pour déterminer le calendrier d'exécution des fils. Le fil passe à l'état prêt à s'exécuter.
selon leurs priorités. Le planificateur de threads attribue le temps CPU au thread ayant la priorité la plus élevée
priorité pendant l'état prêt à l'exécution.
Les priorités sont des valeurs entières à partir de 1 (priorité la plus basse donnée par la constante
Constant Description
Thread.MIN_PRIORITY La priorité maximale de tout thread (une valeur entière de 10)
Thread.MAX_PRIORITY La priorité minimale de tout thread (une valeur entière de 1)
Thread.NORM_PRIORITY La priorité normale de tout thread (une valeur int de 5)
Les méthodes qui sont utilisées pour définir la priorité des threads sont les suivantes :
Description de la méthode
Lorsqu'un thread Java est créé, il hérite de sa priorité du thread qui l'a créé. À tout moment
à un moment donné, lorsque plusieurs threads sont prêts à être exécutés, le système d'exécution choisit le
fil exécutable avec la priorité la plus élevée pour l'exécution. Dans le système d'exécution Java, préemptif
un algorithme de planification est appliqué. Si à l'heure d'exécution, un fil d'exécution avec une priorité plus élevée et tous
d'autres fils sont exécutables alors le système d'exécution choisit le nouveau fil de priorité supérieure pour
exécution. D'autre part, si deux fils d'exécution de la même priorité attendent d'être exécutés par
le CPU puis l'algorithme du tourniquet est appliqué dans lequel le planificateur en choisit un parmi eux
s'exécuter selon leur tranche horaire.
Dans la mise en œuvre d'un ordonnanceur de threads, on applique généralement l'un des deux suivants.
stratégies :
Planification préemptive - Si le nouveau fil a une priorité plus élevée que celui qui est en cours d'exécution
le fil quitte l'état exécutable et un fil de priorité supérieure entre dans l'état exécutable.
Classe : [Link](I.T) SEM - IV Subject : Core Java
Planification par tranches temporelles (Tourniquet) - Un thread en cours d'exécution est autorisé à s'exécuter pendant
le temps fixe, après l'achèvement du temps, le fil actuel indique à un autre fil
pour le mettre dans un état exécutable.
Vous pouvez également définir la priorité d'un fil à tout moment après sa création en utilisant la méthode setPriority.
méthode. Voyons comment définir et obtenir la priorité d'un thread.
Pour rendre une méthode synchronisée, il suffit d'ajouter le mot-clé synchronized à sa déclaration :
c--;
}
Notez que les constructeurs ne peuvent pas être synchronisés - l'utilisation du mot-clé synchronized avec un
Le constructeur est une erreur de syntaxe. Synchroniser les constructeurs n'a pas de sens, car seul le
Le fil qui crée un objet devrait y avoir accès pendant sa construction.
Avertissement : Lors de la construction d'un objet qui sera partagé entre des threads, soyez très prudent
qu'une référence à l'objet ne 'fuit' pas prématurément. Par exemple, supposons que vous vouliez
maintenez une liste appelée instances contenant chaque instance de la classe. Vous pourriez être tenté d'ajouter
la ligne
[Link](this);
à votre constructeur. Mais ensuite, d'autres threads peuvent utiliser des instances pour accéder à l'objet avant
la construction de l'objet est terminée.
Les méthodes synchronisées permettent une stratégie simple pour prévenir l'interférence des threads et
erreurs de cohérence de la mémoire : si un objet est visible par plus d'un thread, toutes les lectures ou écritures vers
les variables de cet objet sont gérées par des méthodes synchronisées. (Une exception importante : final
les champs, qui ne peuvent être modifiés une fois l'objet construit, peuvent être lus en toute sécurité à travers
méthodes non synchronisées, une fois que l'objet est construit) Cette stratégie est efficace, mais peut
présenter des problèmes de vivacité, comme nous le verrons plus tard dans cette leçon.
Au lieu de laisser les programmeurs concevoir leurs propres verrous, gérer les blocs de synchronisation,
et applique les règles de synchronisation, Java offre un moniteur de synchronisation sur chaque instance de
Classe : [Link](I.T) SEM - IV Sujet : Java de base
la classe Object, afin qu'elle puisse être utilisée comme un verrou de synchronisation. Puisque toutes les classes sont des sous-classes de
Objet, tous les objets en Java peuvent être utilisés comme verrous de synchronisation.
Toutes les instructions de la méthode deviennent le bloc synchronisé, et l'objet de la classe est le
verrou
Méthode d'instance synchronisée :
classe nom_de_classe {
synchronized type méthode_nom() {
bloc de déclaration
}
}
Toutes les instructions de la méthode deviennent le bloc synchronisé, et l'objet d'instance est le
fermer
Instruction synchronisée :
classe nom_de_classe {
type method_name() {
synchronisé (objet) {
bloc d'instructions
}}}
Classe : [Link](I.T) SEM - IV Subject : Core Java
11 - Forfaits
Un paquet Java est un mécanisme pour organiser les classes Java en espaces de noms similaires à
les modules de Modula.
Les paquets Java peuvent être stockés dans des fichiers compressés appelés fichiers JAR, permettant aux classes de
téléchargez plus rapidement en groupe plutôt qu'un à la fois.
Les programmeurs utilisent également généralement des packages pour organiser les classes appartenant à la même
category or providing similar functionality.
Un package fournit un espace de noms unique pour les types qu'il contient.
Les classes du même paquet peuvent accéder aux membres d'accès au paquet des autres.
Utilisation de paquets
Dans un fichier source Java, le package auquel appartiennent la classe ou les classes de ce fichier est spécifié avec le
mot clé de package. Ce mot clé est généralement le premier mot clé dans le fichier source.
paquet [Link];
Pour utiliser les classes d'un package dans un fichier source Java, il est pratique d'importer les classes de
the package with an import declaration. The following declaration
import [Link].*;
importe toutes les classes du paquet [Link], tandis que la déclaration suivante
import [Link];
importe uniquement la classe ActionEvent du paquet. Après l'une de ces déclarations d'importation,
la classe ActionEvent peut être référencée en utilisant son nom de classe simple :
ActionEvent monÉvénement = new ActionEvent();
Les classes peuvent également être utilisées directement sans déclaration d'importation en utilisant le nom complet.
de la classe. Par exemple,
[Link] myEvent = new [Link]();
Les classes au sein d'un package peuvent accéder aux classes et aux membres déclarés avec un accès par défaut.
et les membres de classe déclarés avec le modificateur d'accès protégé.
L'accès par défaut est appliqué lorsque l'accès public, protégé ou privé n'est pas spécifié.
le modificateur est spécifié dans la déclaration.
Classe : [Link](I.T) SEM - IV Objet : Java de base
En revanche, les classes dans d'autres packages ne peuvent pas accéder aux classes et membres déclarés avec
accès par défaut.
Les membres de classe déclarés comme protégés peuvent être accessibles depuis les classes dans le même
le paquet ainsi que les classes dans d'autres paquets qui sont des sous-classes de la classe déclarée.
Conventions de nommage de paquet
Les paquets sont généralement définis en utilisant un schéma de nommage hiérarchique, avec des niveaux dans le
hierarchie séparée par des points (.) (prononcé "point").
Bien que les paquets situés plus bas dans la hiérarchie de nommage soient souvent appelés
«sous-packages» des paquets correspondants plus hauts dans la hiérarchie, il n'y a pas
relation sémantique entre les paquets.
La Spécification du Langage Java établit des conventions de nommage de paquets pour éviter le
possibilité de deux packages publiés ayant le même nom.
Les conventions de nommage décrivent comment créer des noms de paquet uniques, afin que
Les paquets largement distribués auront des espaces de noms uniques.
Cela permet aux packages d'être installés et catalogués séparément, facilement et automatiquement.
En général, un nom de paquet commence par le nom de domaine de premier niveau de l'organisation
et ensuite le domaine de l'organisation et ensuite tous les sous-domaines énumérés dans l'ordre inverse.
L'organisation peut alors choisir un nom spécifique pour son paquet. Noms de paquet
devrait être en minuscules autant que possible.
For example, if an organization in Canada called MySoft creates a package to deal with
fractions, nommant le paquet [Link] distingue le paquet fractions
d'un autre paquet similaire créé par une autre entreprise.
Si une entreprise américaine nommée MySoft crée également un paquet de fractions, mais l'appelle
[Link], puis les classes dans ces deux packages sont définies de manière unique et
espace de noms séparé.
Créer et utiliser des paquets
Pour faciliter la recherche et l'utilisation des types, éviter les conflits de noms et contrôler l'accès,
les programmeurs regroupent des types connexes dans des paquets.
Définition : Un package est un regroupement de types liés offrant une protection d'accès et
gestion des espaces de noms. Notez que les types se réfèrent aux classes, interfaces, énumérations,
et types d'annotations. Les énumérations et les types d'annotations sont des sortes spéciales de classes
et interfaces, respectivement, donc les types sont souvent simplement appelés dans cette leçon comme
classes et interfaces.
Les types qui font partie de la plateforme Java sont des membres de divers packages qui
regrouper les classes par fonction : les classes fondamentales se trouvent dans [Link], les classes pour la lecture et
L'écriture (entrée et sortie) se fait dans [Link], et ainsi de suite. Vous pouvez mettre vos types dans des paquets.
aussi.
Classe : [Link](I.T) SEM - IV Sujet : Java de base
Supposons que vous écriviez un groupe de classes qui représentent des objets graphiques, tels que des cercles,
rectangles, lignes et points. Vous écrivez également une interface, Draggable, que les classes
implémenter s'ils peuvent être déplacés avec la souris.
//dans le fichier [Link]
interface publique Déplaçable {
...
}
Importation de Claass :
Ex : classe A classe B
Mais quand vous essayez de créer une instance de la classe A dans la classe B, cela se plaint des doublons ou
quelque chose.
paquet outils;
importer [Link].*;
public Encryptor()
{}
public Encryptor(String s)
{
s = clé;
importer [Link].*;
import [Link].*;
import tools.*;
classe Encryptortest
{
public static void main (String []args)
lance IOException {
Déclaration de package
La première instruction, en dehors des commentaires, dans un fichier source Java, doit être le package
déclaration.
Après la déclaration de package optionnelle, vous pouvez avoir des instructions d'importation, qui permettent
pour spécifier des classes d'autres packages qui peuvent être référencées sans les qualifier avec
leur colis.
Package par défaut. Bien que toutes les classes Java se trouvent dans un répertoire, il est possible d'omettre le package.
déclaration. Pour les petits programmes, il est courant de l'ommettre, auquel cas Java crée ce qu'il appelle un
package par défaut. Sun recommande de ne pas utiliser de packages par défaut.
Syntaxe de déclaration de paquet
L'ordre des déclarations est le suivant. Les commentaires peuvent être placés n'importe où.
Package1([Link])
Classe : [Link](I.T) SEM - IV Sujet : Java de base
package area;
classe publique RectA
{
double a;
a=len*brd;
}
Paquet 2([Link])
package zone;
classe publique cercleA
{
double areac,pi=3.14;
cercleA(double r)
{
aire=pi*r*r;
}
public void montrer()
{
[Link]("L'aire du cercle est : " + areac);
}
}
classe CalArea
{
Classe : [Link](I.T) SEM - IV Sujet : Java de base
Alors fais ça
Paquet [Link]
Cours de mathématiques
1) random()
2) arrondir()
3) pow()
4) racine carrée()
5) abs()
max()
7) log()
Classe : [Link](I.T) SEM - IV Subject : Core Java
import [Link].*;
classe MathClassDemo
{
public static void main(String args[])
{
[Link]("Racine carrée="+[Link](11));
int num = -3;
[Link]("Valeur Absolue="+[Link](num));
[Link]("Valeur Maximum="+[Link](10.22,10.33));
[Link]("Log value="+[Link](10));
}
}