[Java] J'ai personnellement résumé la grammaire de base.

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"

couler

① Création du code source

L'extension du fichier source est ".java"

② Compiler

$ 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)

③ Exécution

$ 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é.

Fichier JAR

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

Structure basique

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

variable

Déclaration

Nom de la variable de type de données;

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"

Initialiser

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");

Constante (variable avec final)

Déclaration

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

Formules (formules de calcul, formules de déclaration, etc.)

Se compose d'opérandes et d'opérateurs

opérande

・ 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.

Synthétiseur d'échappement

Caractères spéciaux utilisés dans les types String et char ¥ "Double devis ¥ 'Devis unique Symbole ¥ \ Yen (¥) \ N saut de ligne

Évaluation

Traitement des calculs selon la formule basée sur les trois principes

① Remplacement avec les résultats de l'évaluation

L'opérateur effectue le calcul à l'aide de l'opérande et arrive au résultat du calcul.

② Priorité

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

③ Règles d'adhésion

S'il y a plusieurs opérateurs avec la même priorité, l'ordre directionnel fixe pour chaque opérateur est prioritaire.

opérateur

Fait référence au symbole utilisé dans la formule

Opérateur arithmétique (+, -, *, /,%)

・ Tout de la gauche ・ Priorité plus élevée

Opérateur de jointure de chaîne (+)

・ De même de la gauche ・ Priorité plus élevée

Opérateur d'affectation (=, + =, - =, * =, / =,% =)

・ Tout de la droite · Priorité basse ・ La dernière chose à faire

Opérateur d'incrémentation / décrémentation (++, -)

・ 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)

Conversion de type de données

(1) Conversion de type automatique au moment de la substitution

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

② Conversion de type forcée

int e = (int) 7.7; // Opérateur de cast

Opérateur de casting

Définition

(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

③ Conversion de type automatique au moment du calcul

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.

Exécution de la commande

Définition

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");

Syntaxe de contrôle

・ Se compose d'expressions conditionnelles et de blocs ・ Le mécanisme est similaire à JavaScript

Expression conditionnelle

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 à "=="

Branche conditionnelle

① instruction if-else ② instruction if

③ instruction if-else if-else

➡︎ Si le bloc else est vide, il peut être complètement omis

④ instruction switch

➡︎ 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

répétition

① instruction while

➡︎ Jugement de préfixe (évaluer l'expression conditionnelle avant d'exécuter le bloc)

② déclaration do-while
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)

③ pour phrase

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

Autre

Interruption répétée

・ Similaire à JavaScript ① déclaration break ② instruction continue

boucle infinie
①while (true) {

En traitement }

②for (;;) {

En traitement } Continuer à boucler intentionnellement à moins d'être interrompu

Tableau

Similaire à JavaScript

Déclaration

Type de données [] nom de la variable du tableau;

int[] scores;
Substitution

Nom de la variable de tableau = nouveau type de données [valeur];

scores = new int[5];
Initialiser

① 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};
Obtenez le nombre d'éléments

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());

Erreur
ArrayIndexOutOfBoundsException 

Parce que vous utilisez un élément qui n'existe pas

Combinaison avec for statement

① Utilisation de tous les éléments par boucle

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 }

(2) Agrégation par 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 } }

③ Utilisation des informations correspondant aux indices
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]] + " ");
④ Étendu pour déclaration

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.

Nettoyer

Collecte des ordures
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)

Erreur
NullPointerException

Se produit lors de l'utilisation d'une variable de tableau contenant null

Tableau bidimensionnel (tableau multidimensionnel collectivement)

Déclaration

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];
comment utiliser

Nom de la variable de tableau [indice de ligne] [indice de colonne]

System.out.println(scores[1][1]);

Méthode

・ 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.

Définition

① 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

appel

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)

argument

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.

Valeur de retour

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.

appel

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

Surcharge (définition multiple)

①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)

Argument (tableau ver)

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

Valeur de retour (array ver)

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;
  }
}

Arguments de ligne de commande

String[] args

-Valeur transmise au programme au démarrage du programme -La valeur est passée à la méthode principale

Commencez

liste d'arguments de nom de programme java

java Sample abc def ghi
java Sample 1 2 3

Partitionnement

-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.

(1) Création d'un fichier source avec uniquement des méthodes de traitement
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);
  }
}
(2) Modifier l'appel à la méthode principale
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.

paquet

Un mécanisme qui peut être classé et géré en groupes pour chaque classe

Définition

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

FQCN (nom de classe entièrement limité ou nom de classe complet)

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.

déclaration d'importation

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

Espace de nom

・ 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

Programmation orientée objet)

・ 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»

① Héritage ➡︎ Créer de nouvelles pièces en détournant les pièces existantes

② Polymorphisme ➡︎ Des pièces similaires peuvent être traitées de la même manière

③ Encapsulation ➡︎ Rendre la pièce spécifiée indisponible pour les attributs et les opérations

exemple

-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 principaleRé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.

classe

Définir en fonction du diagramme de classes (: diagramme de conception) ➡︎ Un des UML (Unified Modeling Languages)

Définition

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

Déclaration

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

constructeur

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

[Java] J'ai personnellement résumé la grammaire de base.
Grammaire Java de base
Grammaire de base Java
Grammaire de base Java
J'ai résumé le cadre de la collection.
J'ai résumé les types et les bases des exceptions Java
[Java] J'ai essayé d'implémenter la combinaison.
J'ai étudié le constructeur (java)
J'ai brièvement résumé la grammaire de base de Ruby
J'ai essayé le framework Java "Quarkus"
Depuis que j'ai réussi l'Oracle Java Bronze, j'ai résumé les grandes lignes du test.
J'ai essayé le nouveau yuan à Java
Grammaire Java de base à connaître en premier
Je suis allé au Java Women's Club # 1
J'ai essayé de traduire la grammaire de R et Java [Mis à jour de temps en temps]
Les ingénieurs Java comparés pour apprendre la grammaire de base de Ruby maintenant Partie 1 (Basique, Variables)
J'ai essayé de faire une authentification de base avec Java
J'ai comparé les caractéristiques de Java et .NET
[Java] Structure de base
[Java] [Basic] Glossaire
Pourquoi Java était la langue cible que je déteste
Je ne me souviens pas de l'entrée / sortie du fichier texte en Java, alors je l'ai résumé.
Exercice Java [basique]
Essayez Progate Free Edition [Java I]
Les ingénieurs Java comparent maintenant pour apprendre la grammaire de base de Ruby Part 2 (classes, méthodes)
[Java] Je souhaite calculer la différence par rapport à la date
J'ai résumé le format d'affichage de la réponse JSON de Rails
Je n'ai pas pu l'exécuter après la mise à niveau de la version Java
J'ai essayé d'implémenter la méthode de division mutuelle d'Eugrid en Java
À propos de la grammaire de base Android
J'ai d'abord touché Java ②
La technologie Java en bref
J'ai d'abord touché Java ③
mémo de connaissances de base java
[Java] Type de données ①-Type de base
J'ai d'abord touché Java ④
Manipulation de base de la date Java
Conventions de dénomination Java de base
Mémo d'apprentissage Java (basique)
J'ai d'abord touché Java
[Java] Notes de méthode de base
Types de données de base Java
Concepts de base Java OOps
J'ai traduit [Méthode Clone pour les tableaux Java] comme méthode Clone dans les tableaux Java.
[JDBC] J'ai essayé d'accéder à la base de données SQLite3 depuis Java.
J'ai essayé de résumer les bases de kotlin et java
Je souhaite utiliser l'API Java 8 DateTime lentement (maintenant)
Voici quelques articles auxquels les débutants en programmation se sont référés.
J'ai essayé d'utiliser la bibliothèque CameraX avec Android Java Fragment
[Java] J'ai réfléchi aux mérites et aux utilisations de "interface"
Je souhaite simplifier l'instruction if-else de la branche conditionnelle en Java