Je vais résumer Java pour approfondir ma compréhension. Je vais le mettre à jour de temps en temps.
Références ☆ Kiyotaka Nakayama / Daigo Kunimoto "Introduction à Java pour une 3e édition rafraîchissante"
L'extension du fichier source est ".java"
$ nom du fichier source javac ① nom du fichier source .java ② .java
$ javac Split.java SplitLogic.java
-Utiliser un compilateur (: logiciel) pour convertir le fichier source en un fichier de classe ➡︎ (Création d'un fichier de classe) ・ L'extension est ".class" -Comprend le code d'octet (code qui permet à l'ordinateur de reconnaître les instructions du code source)
$ nom de fichier de classe java
$ java Split
// Impossible de démarrer avec Java Split Logic Erreur: la méthode principale est introuvable dans la classe SplitLogic.
//パッケージに属したクラスの実行 $ java FQCN de la classe à démarrer
$ java splitapp.main.Split
-L'interpréteur (: logiciel) utilise JVM (Java Virtual Machine) pour déchiffrer le code d'octet. -Le nom de classe inclus dans la méthode principale doit être spécifié. ・ Par conséquent, l'ordinateur fonctionnera comme indiqué.
jar -cvf nom de fichier de classe .jar * .class // créer
Décrivez "Main-Class: class file name" dans le fichier "class file name.mf" // Saut de ligne à la fin de la ligne jar -cvfm nom de fichier de classe .jar nom de fichier de classe .mf * .class // créer un fichier manifeste java -jar nom du fichier de classe.jar // exécuter
Un fichier d'archive similaire à un fichier ZIP qui combine plusieurs classes en une seule
public class Nom de la classe {* Le nom de la classe commence par l'alphabet supérieur // Bloc de classe public static void main (String [] args) {// bloc de méthode } } Double structure avec blocs
Nom de la variable de type de données;
[Entier] Petit octet: verres d'octet assez petits; verres = 7; court: petit âge court, âge = 7; ⭐︎ int: salaire int normal; salaire = 7777; long: grand long japonais; japonais = 124_000_000L;
[Petit nombre] Grand float: poids du flotteur ambigu; poids = 60.0F; ✨ double: double hauteur normale; hauteur = 177,7;
[Valeur Vrai / Faux] booléen: vrai ou faux booléen isValid;
[lettre] char: Un seul caractère char color; color = 'green';
[Chaîne de caractères] ⭐︎String: chaîne de caractères String name; name = "John"
Nom de la variable de type de données = valeur;
String likes = "cat"; // Initialiser les variables * Déclaration et affectation simultanées likes = "Inu"; // Réaffectation * "Cat" est écrasé System.out.println (aime + "aime");
nom de la constante de type de données final = valeur initiale; * Le nom de la constante est essentiellement en majuscules
final double PI = 3,14; // Déclaration des constantes int pie = 7; PI = 10; // Vérifier les erreurs de compilation System.out.println ("rayon" + tarte + "la zone du cercle en cm est"); System.out.println(pie * pie * PI);
La valeur peut être fixée pour empêcher la réécriture
Se compose d'opérandes et d'opérateurs
・ Fait référence à la valeur utilisée dans la formule -La valeur spécifique spécifiée dans le code source est appelée "littéral". ・ La méthode de notation des littéraux diffère selon le type de données.
Caractères spéciaux utilisés dans les types String et char ¥ "Double devis ¥ 'Devis unique Symbole ¥ \ Yen (¥) \ N saut de ligne
Traitement des calculs selon la formule basée sur les trois principes
L'opérateur effectue le calcul à l'aide de l'opérande et arrive au résultat du calcul.
2 + 7 * 10 = 72 // Multiplier la priorité (2 + 7) * 10 = 90 // La priorité peut être donnée en mettant entre parenthèses S'il y a plusieurs opérateurs, ils sont prioritaires selon les règles Java
S'il y a plusieurs opérateurs avec la même priorité, l'ordre directionnel fixe pour chaque opérateur est prioritaire.
Fait référence au symbole utilisé dans la formule
・ Tout de la gauche ・ Priorité plus élevée
・ De même de la gauche ・ Priorité plus élevée
・ Tout de la droite · Priorité basse ・ La dernière chose à faire
・ Aussi appelé opérateur à terme unique ・ Identique à JavaScript ・ Priorité la plus élevée -Il est souhaitable de ne pas l'utiliser avec d'autres opérateurs (cela peut provoquer des bugs)
float y = 7; // Conversion de type automatique au moment de l'affectation double z = y; // Conversion de type automatique au moment de l'affectation int w = 0.7; // Les types plus petits que le type entraîneront une erreur de compilation octet q = 2; // octet. Exception à l'affectation de type int au type court
L'affectation à un type plus grand que chaque type convertit automatiquement la valeur
int e = (int) 7.7; // Opérateur de cast
(Tapez le nom de la destination de conversion) Valeur; ・ Instruire la conversion forcée
[Démérite] -Le contenu des données est perdu car la conversion est effectuée même si une partie des données est endommagée. ➡︎ Dans le cas ci-dessus, les chiffres après la virgule décimale ne seront pas émis. Il est recommandé de ne pas l'utiliser sauf s'il y a une bonne raison
long b = 7 + 7L; // Convertit int en long double c = 7,7 * 2; // Convertit int en double String msg1 = 7 + "I like"; // Convertir int en chaîne
・ Le principe est du même type ・ Lorsque différents types sont utilisés, ils sont automatiquement unifiés en un type plus grand.
Déclaration (argument);
int p = 1, o = 2;
int m = Math.max (p, o); // Comparez les valeurs et remplacez la plus grande System.out.println (m); // Affichage à l'écran System.out.print (m); // Affichage à l'écran (sans saut de ligne)
String age = "12";
int n = Integer.parseInt (age); // Convertit les chaînes en nombres System.out.println ("L'âge est" + n + "");
int r = new java.util.Random (). nextInt (7); // Génère un nombre aléatoire System.out.println ("L'âge est" + r + "?");
System.out.println ("Entrez votre nom"); String name = new java.util.Scanner (System.in) .nextLine (); // Recevoir une ligne d'entrée de chaîne depuis le clavier System.out.println ("Quel âge?"); int age1 = new java.util.Scanner (System.in) .nextInt (); // Recevoir une entrée entière du clavier System.out.println ("Bienvenue!" + Age1 + "ans" + nom + "san");
・ Se compose d'expressions conditionnelles et de blocs ・ Le mécanisme est similaire à JavaScript
Variable de type chaîne .equals (chaîne de caractères à comparer)
if (str.equals ("Bonjour")) ・ "==" Indique l'égalité ・ Cependant, les chaînes de caractères ne peuvent pas être comparées à "=="
① instruction if-else ② instruction if
➡︎ Si le bloc else est vide, il peut être complètement omis
➡︎ Si la déclaration peut être rendue intelligente Condition ❶ Il doit s'agir d'une expression indiquant si les côtés gauche et droit correspondent ❷ La valeur de comparaison n'est pas une fraction et une valeur booléenne
➡︎ Jugement de préfixe (évaluer l'expression conditionnelle avant d'exécuter le bloc)
do {
temp++;
System.out.println ("Il est monté une fois"); } while(temp > 27); ➡︎ Jugement de Postfix (évaluer l'expression conditionnelle après l'exécution du bloc)
for (int nom de la variable = 0; nom de la variable <valeur répétée; nom de la variable ++)
for (int nom de la variable = 1; nom de la variable <valeur répétée; nom de la variable ++) // Démarrer la variable de boucle à partir de 1 for (int nom de la variable = 0; nom de la variable <valeur répétée; nom de la variable + = n) // augmenter la variable de boucle de n for (int variable name = n; variable name> 1; variable name--) // Diminue la variable de boucle de 1 à partir de n for (; nom de la variable <n; nom de la variable ++) // ne pas initialiser la variable de boucle for (int nom de la variable = 0; nom de la variable <valeur répétée;) // ne pas répéter le traitement ・ Similaire à JavaScript ・ Utilisé lorsque le nombre de répétitions est fixe
・ Similaire à JavaScript ① déclaration break ② instruction continue
①while (true) {
En traitement }
②for (;;) {
En traitement } Continuer à boucler intentionnellement à moins d'être interrompu
Similaire à JavaScript
Type de données [] nom de la variable du tableau;
int[] scores;
Nom de la variable de tableau = nouveau type de données [valeur];
scores = new int[5];
① Type de données [] Nom de la variable du tableau = nouveau Type de données [] {valeur}; ② Type de données [] Nom de la variable du tableau = {valeur};
int[] scores = new int[] {10, 20, 30, 40, 50};
int[] scores = {10, 20, 30, 40, 50};
Nom de la variable de tableau.longueur
int num = scores.length;
Variable de chaîne name.length ();
String str = "Apprendre Java"; System.out.println(str.length());
ArrayIndexOutOfBoundsException
Parce que vous utilisez un élément qui n'existe pas
for (int i = 0; i <nom de la variable de tableau.longueur; i ++) { Traitement à l'aide du nom de variable de tableau [i] }
for (int i = 0; i < scores.length; i++) {
System.out.println (scores [i]); // i change pour chaque boucle }
int sum = 0; // Initialiser les variables for (int i = 0; i < scores.length; i++) { sum + = scores [i]; // Additionnez pour additionner un sujet à la fois }
int count = 0;
for (int i = 0; i < scores.length; i++) {
if (scores[i] >= 25) {
count ++; // Compter les éléments qui remplissent les conditions } }
int[] seq = new int [10];
for (int i = 0; i < seq.length; i++) {
seq[i] = new jaba.util.Random().nextInt(4);
}
for (int i = 0; i < seq.length; i++) {
char[] base = {'A', 'T', 'G', 'C'};
}
System.out.println(base[seq[i]] + " ");
for (nom de la variable de type de données: nom de la variable du tableau) { En traitement }
int[] scores = {10, 20, 30, 40, 50};
for (int value : scores) {
System.out.println(value);
}
・ Pour les boucles qui éliminent les éléments un par un ・ Cela devient une forme plus propre qu'une instruction for normale sans la description des variables de boucle et des indices.
boolean valid = true;
if (valid == true) {
int[] array = {2. 4. 6}
} // À ce stade, le tableau n'a plus de mémoire
・ Les 3 éléments sécurisés par new continueront à rester même après la fin du bloc (poubelle) -Juste pas référencé par une variable de tableau ・ Un mécanisme qui recherche automatiquement ces déchets et les nettoie
null int[] array = {1, 3, 5}; array = null; array[0] = 9;
・ Peut être affecté uniquement aux variables de type référence -Ne pas faire référence intentionnellement à un tableau (= couper la référence)
NullPointerException
Se produit lors de l'utilisation d'une variable de tableau contenant null
Type de données [] [] Nom de la variable du tableau = nouveau Type de données [Nombre de lignes] [Nombre de colonnes];
int[][] scores = new int[3][3];
Nom de la variable de tableau [indice de ligne] [indice de colonne]
System.out.println(scores[1][1]);
・ Un nom qui combine des codes de traitement écrits en plusieurs phrases en une seule -Notez que la position pour définir la méthode et la position pour l'appeler ne sont pas toujours les mêmes. ➡︎ Le développement est souvent effectué par plusieurs personnes -Il est souhaitable que le nom de la méthode montre le contenu du traitement.
[mérite] (1) Le code est facile à lire, ce qui le rend plus facile à comprendre. (2) La plage de correction peut être limitée en divisant en méthodes pour chaque fonction (ce qui permet de trouver plus facilement la cause de l'erreur). (3) Étant donné que la méthode peut être réutilisée, l'efficacité du travail peut être améliorée.
① public static Type de données de la valeur de retour Nom de la méthode (liste d'arguments) { (2) Traitement spécifique exécuté en appelant une méthode }
public static void hello() {
System.out.println ("Hello"); // bloc de méthode = contenu de l'exécution } [Configuration en deux étapes] ① Énoncé des questions importantes ② Traitement du contenu
Nom de la méthode (liste d'arguments);
public static void main(String[] args) {
System.out.println ("call method"); // bloc de méthode principal hello (); // méthode d'appel methodA (); // méthodeA comprenant la méthodeB est appelée } public static void methodA() { System.out.println("A"); methodB(); } public static void methodB() { System.out.println("B"); } ・ Il n'est pas exécuté uniquement par définition -Il n'y a pas d'ordre fixe de description de la méthode (car la méthode principale est le centre)
Nom de la méthode () // Ne passe rien Nom de la méthode (valeur) // passer un Nom de la méthode (valeur 1, valeur 2 ...) // passer plusieurs
① public static void main(String[] args) {
hello ("Tanaka"); // Définition des arguments (1) bonjour ("Sato"); bonjour ("Suzuki"); } public static void hello (String name) {// Définit le nom de la variable de type string System.out.println (nom + "san, bonsoir"); }
② public static void main(String[] args) {
add (100, 200); // Définition des arguments (2) add(10, 20); } public static void add(int x, int y) { int ans = x * y; System.out.println(ans); }
❸ public static void main(String[] args) {
methodC ("Au revoir", 777); } public static void methodC (int x, String y) {// erreur de compilation System.out.println(x + y); }
❹ public static void main(String[] args) {
int a = 7;
int b = 77;
add();
}
public static void add() {
int ans = a + b; // erreur de compilation System.out.println(a + b); } -Faites attention au type de données et à l'ordre définis dans la méthode -Une erreur de compilation se produira si chaque type de données de l'argument et de la variable est différent. ・ Argument formel: variable reçue ➡︎ x, y mentionnée ici ・ Argument réel: variable à transmettre ➡︎ 100, 200, 10, 20 mentionnés ici -Selon la portée, la variable définie dans la méthode principale ne peut pas être utilisée dans une autre méthode. -Variable locale: Variable déclarée dans la méthode ➡︎ main (), add () mentionnée ici La variable locale portant le même nom dans une autre méthode est complètement différente car elle n'est valide que dans cette méthode.
public static Type de données de la valeur de retour Nom de la méthode (liste d'arguments) {// Le type de données de la valeur de retour est du même type que la valeur renvoyée par return Traitement spécifique effectué en appelant une méthode return Valeur de retour; // Spécifiez le nom de la variable ou le littéral (100, "bonjour", etc.) pour la valeur de retour. }
public static int add(int x, int y) {
int ans = x + y;
return ans;
}
・ Utilisez "void" lorsque rien n'est retourné -L'instruction return a le sens de «terminer la méthode» ainsi que de «renvoyer la valeur». ➡︎ Par conséquent, si vous écrivez le code de traitement après l'instruction return, une erreur de compilation se produira.
Type de données Nom de la variable = Nom de la méthode (liste d'arguments); // L'appel de la méthode a la priorité
① public static void main(String[] args) {
int ans = add (100, 200); // appel System.out.println("100 + 200 = " + ans); }
② public static void main(String[] args) {
System.out.println (add (add (100, 200), add (10, 20))); // Utiliser la valeur de retour telle quelle } ・ Il n'est pas toujours nécessaire de recevoir la valeur de retour sous forme de variable
①public static void main(String[] args) {
System.out.println(add(7, 77));
System.out.println(add(7.7, 77.7));
System.out.println(add("yahoo", "google"));
}
public static int add(int x, int y) {
return x + y;
}
public static double add(double x, double y) {
return x + y;
}
public static String add(String x, String y) {
return x + y;
}
②public static void main(String[] args) {
System.out.println (add ("7 * 77 =" + add (1, 2))); // * est appelé
System.out.println (add ("7 * 77 * 2 =" + add (1, 2, 3))); // # est appelé
}
public static int add(int a, int b) {
return a + b; //*
}
public static int add(int a, int b, int c) {
return a + b + c; //#
}
-En principe, le même nom ne peut pas être donné à la méthode (même si le contenu du traitement est similaire).
➡︎ Mécanisme qui permet
[exception] (1) Lorsque le type de données de l'argument formel de la méthode est différent (int, double, String mentionné ici) (2) Lorsque le nombre d'éléments de l'argument formel de la méthode est différent (a ・ b, a ・ b ・ c mentionnés ici)
public static void main(String[] args) {
int[] array = {1, 3, 5};
printArray (array); // passe un tableau } public static void printArray (int [] array) {// Spécifie un tableau comme argument for (int element : array) { System.out.println(element); } } -Passez par valeur: un appel qui transmet la valeur elle-même Lors de l'utilisation d'un tableau, l'adresse de l'élément est copiée à la place de la valeur (1, 3, 5 ici) Passer une adresse comme argument s'appelle "passer par référence" ➡︎ La réécriture chez l'appelé se reflète dans l'appelant
public static void main(String[] args) {
int[] array = makeArray(3);
for (int i : array) {
System.out.println(i);
}
}
public static int[] makeArray(int size) {
int[] newArray = new int[size];
for (int i = 0; i < newArray.length; i++) {
newArray[i] = i;
}
}
String[] args
-Valeur transmise au programme au démarrage du programme -La valeur est passée à la méthode principale
liste d'arguments de nom de programme java
java Sample abc def ghi
java Sample 1 2 3
-Une méthode de partage de développement (division des classes) pour chaque fichier ・ Par conséquent, le produit fini du programme est souvent une collection de plusieurs fichiers source.
public class SplitLogic {
public static int tasu(int a, int b) {
return (a + b);
}
public static int hiku(int a, int b) {
return (a - b);
}
}
public class Split {
public static void main(String[] args) {
int a = 7; int b = 1;
int total = SplitLogic.tasu (a, b); // Ici int delta = SplitLogic.hiku (a, b); // Ici System.out.println ("Ajouter" + total + ", soustraire" + delta); } }
La méthode de traitement n'appartenant plus à la méthode principale, il est nécessaire de spécifier l'affiliation et de l'appeler.
Un mécanisme qui peut être classé et géré en groupes pour chaque classe
package Le nom du package auquel il appartient;
package splitapp.main;
public class Split {
}
package splitapp.logics;
public class SplitLogic {
}
・ Doit être écrit au début du code source ・ Les petites lettres sont courantes -Il n'y a pas de relation parent-enfant ou de relation hiérarchique entre les packages (chacun indépendant) -Pack par défaut: n'appartient à aucun package (également appelé package anonyme) l'instruction d'importation ne peut pas être utilisée
Nom du package Nom de la classe
package splitapp.main;
public class Split {
int total = splitapp.logics.SplitLogic.tasu (a, b); // ici int delta = splitapp.logics.SplitLogic.hiku (a, b); // ici }
Pour appeler une classe dans un autre package, vous devez spécifier le package auquel elle appartient.
nom du package d'importation. nom de la classe;
package splitapp.main;
import splitapp.logics.SplitLogic; // Lors de l'importation uniquement SplitLogic import splitapp.logics. *; // Lors de l'importation de tout import splitapp.main. *; // Lors de l'importation de tout
//どちらの表記でも構わない int total = SplitLogic.tasu(a, b); int delta = splitapp.logics.SplitLogic.hiku(a, b);
・ FQCN peut être omis ・ Décrit après le colis ・ Fonction de réduction d'entrée
・ Capacité du nom donné ・ Conflit de nom: concurrence pour le même nom entre des classes avec des contenus différents -Le même nom peut être utilisé pour différents packages (car il peut être distingué par FQCN) ➡︎ Par conséquent, il est nécessaire d'éviter les conflits de nom de package. Les noms de package dans l'ordre inverse du domaine de l'entreprise sont recommandés (Pour java.example.com, com.example.java)
Java API public class Main { public static void main(String[] args) { int[] heights = {170, 150, 160, 180}; java.util.Arrays.sort (heights); // Appelez la méthode sort dans la classe Arrays du package java.util for (int h : heights) System.out.println(h); } } } -Un terme générique pour les packages et les classes initialement intégrés à Java ・ Peut être utilisé librement ・ Référence API: manuel API (https://www.oracle.com/jp/java/technologies/javase/documentation/api-jsp.html)
[Package du représentant] · Java.lang: classes indispensables (System, Integer, Math, Object, String, Runtime, etc.) Sera importé automatiquement -Java.util: Classes pratiques pour la programmation -Java.math: Classes liées aux nombres -Java.net: des classes qui communiquent -Java.io: Classes qui effectuent un traitement séquentiel des données
・ Concept de composantisation utilisé lors du développement de logiciels
・ Soyez prudent car ce que vous apprenez et comment vous l'apprenez est différent de la grammaire de base.
➡︎ Apprenez l'idée de «atteindre la bonne réponse», pas la bonne réponse elle-même
・ Diviser le programme en classes pour chaque objet qui apparaît dans le monde réel
⬅︎➡︎ Programmation procédurale (: vous devez définir la procédure à exécuter ligne par ligne)
・ Puisque «responsabilité (responsabilité pour l'action et responsabilité pour la conservation des informations)» est écrite dans chaque classe, il n'est pas nécessaire de donner des instructions à chacun.
➡︎ Chacun a un «attribut» et une «opération» pour accomplir une tâche
[mérite] ((1) Il est possible de réaliser un développement de programme facile à comprendre pour les humains) (② Le changement de programme devient facile) (③ Il est facile de détourner une partie du programme) `` Des choses faciles, amusantes et bonnes peuvent être faites '' ➡︎ Parce que c'est juste une histoire de «recréer des objets du monde réel et leurs mouvements dans le monde virtuel sur un PC»
-Performateur du monde virtuel (: zone mémoire de l'ordinateur
) (création de classe)
➡︎ Instantification
➡︎ En d'autres termes, la zone mémoire allouée dans le tas
(: cette zone)
-Comme cela ne fonctionne pas tel quel, préparez une classe d'instructeur (y compris la méthode principale)
séparément de la classe de chaque personnage
.
Nom de la classe Nom de la variable = nouveau nom de la classe (); // Créer une instance Nom de la variable. Nom du champ = valeur; // Attribuer au champ Nom de la variable. Nom de la méthode (); // Méthode d'appel
public class Kamisama {
public static void main(String[] args) {
Sword s = new Sword();
s.name = "Chun Chun Seiba"; s.damage = 10;
Hero h1 = new Hero (); // Générer une instance - Ici le héros est né
h1.name = "Chun Chun Maru"; // Attribuer au champ
h1.hp = 100;
h1.sword = s; --sword Instance de remplacement pour s
Hero h2 = new Hero();
h2.name = "Chanchanmaru"; h2 = h1; // Copier h1 dans h2 - Les informations d'adresse sont copiées (pas l'instance elle-même) h2.hp = 200;
System.out.println ("Brave" + h1.name + "est né.") System.out.println ("L'arme équipée est" + h1.sword.name + "."); --Brave h1 "no" sword "no" name h1.sit (3); // Méthode d'appel h1.slip(); w.heal(h1); System.out.println ("Mushroom Alien" + m1.suffix + "est apparu."); h1.attack(); h1.run(); } }
-L'orientation objet facilite la compréhension du contenu de la méthode principale
・ Référence
➡︎ Informations d'adresse contenues dans la variable
-JVM effectue la résolution de référence
ou la résolution d'adresse
(: récupération des informations d'adresse à partir de variables et accès aux adresses)
・ Indépendance
➡︎ Si la même classe a des instances différentes, elles ne devraient pas être affectées.
Définir en fonction du diagramme de classes (: diagramme de conception)
➡︎ Un des UML (Unified Modeling Languages)
public class Hero {// déclaration de classe Nom de chaîne; // Déclaration d'attribut int hp; Épée d'épée; - Informations sur l'équipement
public void attack() {
System.out.println (this.name + "attaqué avec" + this.sword.name + "."); System.out.println ("endommagé 5 à l'ennemi."); }
public void sleep () {// Déclaration de fonctionnement - méthode this.hp = 100; // ce mot-clé System.out.println (this.name + "reposé et récupéré."); } public void sit (int sec) {// Argument du nombre de secondes pour s'asseoir this.hp + = sec; // Récupérez pendant quelques secondes pour vous asseoir System.out.println (this.name + "is" + sec + "assis pendant une seconde."); System.out.println ("HP a récupéré" + sec + "points récupérés."); } public void slip() { this.hp- = 5; // HP diminue en tombant System.out.println (this.name + "est tombé."); System.out.println ("5 dommages"); } public void run() { System.out.println (this.name + "s'est échappé."); System.out.println ("Game Over"); System.out.println ("Le dernier HP était" + this.hp + "."); } ---- public class Matango { int hp; int level = 10; // Spécifiez la valeur initiale de l'attribut final int LEVEL = 10; // Champ constant (lettre supérieure recommandée) char suffix; } ---- public class Sword { String name; int damage; } ---- public class Wizard { String name; int hp;
public void heal (Hero h1) {--Lors de l'utilisation d'une méthode comme argument h1.hp += 10; System.out.println (h1.name + "récupéré 10 HP"); } }
・ Field
➡︎ Variables déclarées dans le bloc de classe (nom, hp ici)
・ Champ constant
➡︎ Valeur variable non réinscriptible (LEVEL ici)
-Ne pas utiliser static
dans les méthodes orientées objet
・ Membre
➡︎ Un terme général pour les champs et les méthodes
・ N'omettez pas this
(pour éliminer les dysfonctionnements)
-Par définition de classe, vous pouvez créer une instance
et utiliser des variables de type de classe par exemple
.
➡︎ Types pouvant être utilisés en plus
・ La chaîne est également classée dans le même type de classe
➡︎ Peut être instancié avec String variable name =" string ";
sans utiliser le nouvel opérateur.
・ A une relation
➡︎ Une classe utilise une autre classe comme champ
Hero h; // Nom de variable de type de classe Nom de variable;
Les instances sont utilisées en les mettant dans des variables de type classe ➡︎ Pour `` identifier une instance spécifique en tant que programme '' parmi plusieurs instances du même nom pouvant exister dans le monde virtuel
Méthode qui est automatiquement exécutée après l'instanciation
➡︎ Ne peut pas être appelé directement
(JVM le fait en fonction du code)
[conditions] ① Le nom de la méthode est le même que le nom de la classe (2) Il n'y a pas de valeur de retour dans la déclaration de méthode (y compris void)
nom de classe de classe publique { nom de la classe () { Traitement du contenu à exécuter automatiquement } }
[Valeur initiale du champ]
Type numérique (int, court, long, etc.): 0
type de caractère: \ u0000
type booléen: false
Type de tableau (int [], etc.): null
Type de classe (chaîne, etc.): null
public class Hero {
String name;
int hp;
Sword sword;
public void attack() {
réduction
}
public void sleep() {
réduction
}
public void sit(int sec) {
réduction
}
public void slip() {
réduction
}
public void run() {
réduction
}
public Hero () {// Méthode exécutée automatiquement après instanciation
this.hp = 100;
}
}
----
public Hero (String name) {// Recevoir une chaîne de caractères comme argument * Vous devez définir un nom pour l'instance
this.hp = 100;
this.name = nom; --Initialiser le champ de nom avec la valeur de l'argument
}
public Hero () {--Crée un constructeur qui n'accepte pas les arguments
this.hp = 100;
this.name = "échantillon";
}
----
public class Kamisama {
public static void main(String[] args) {
Hero h1 = new Hero ("Pyonpyonmaru"); --Exécute en même temps que l'argument à passer au constructeur
Hero h2 = new Hero (); - Comme il n'y a pas d'argument, "Sampuru" est appelé. h2.hp = 200; } } ---- public class Kamisama { public static void main(String[] args) { Hero h1 = new Hero (); --HP100 est défini par le constructeur h1.name = "Pyonpyonmaru"; h1.sword = s;
Hero h2 = new Hero();
h2.name = "Chun Chun Maru"; h2.hp = 200; --Peut être modifié avec de nouveaux paramètres numériques
System.out.println ("Brave" + h1.name + "est né."); System.out.println ("HP est" + h1.hp + "."); System.out.println ("Brave" + h2.name + "est né."); System.out.println ("HP est" + h2.hp + "."); } } -Vous n'avez pas besoin de définir la valeur initiale dans la méthode principale. ・ La surcharge (définition multiple) est également possible avec le constructeur -S'il y a plusieurs constructeurs, la JVM jugera en regardant les arguments (un seul fonctionne)
[exception]
Si aucun constructeur n'est défini dans la classe
Le constructeur par défaut (: pas d'argument et de traitement du contenu)
est automatiquement ajouté au moment de la compilation
this (argument); // Demander à la JVM d'appeler un autre constructeur de la même classe
public Hero(String name) {
this.hp = 100;
this.name = name;
}
public Hero() {
this ("échantillon"); } Doit être écrit en tête du constructeur Notez que «ce nom de membre» est complètement différent de «
Recommended Posts