[Introduction à Java] J'ai essayé de résumer les connaissances que j'estime essentielles

introduction

La dernière fois, j'ai écrit un article "Je m'intéresse à la programmation web donc je vais étudier", mais cette fois c'est Java: lunettes de soleil: J'étudiais Java depuis plus de deux ans dans une classe universitaire, mais je ne le comprenais pas du tout, alors je n'ai résumé que les parties nécessaires sous forme de cahier. J'ai également écrit sur l'orientation objet dans cet article, mais je pense que c'est important car cela ** conduit également à une compréhension de l'orientation objet en PHP et JavaScript **. Eh bien, merci: information_desk_person:

Déclaration de classe

Une classe est un ensemble de processus requis pour exécuter un programme. Écrivez le début et le délimiteur du mot en majuscules et en nomenclature. L'état et le comportement de la classe sont définis dans la partie processus d'exécution. La façon de l'écrire est la suivante.

nom de classe de classe{
Traitement d'exécution...
}

En Java, un fichier et une classe sont le principe. Dans ce qui suit, il est écrit de manière à ce qu'il y ait plusieurs classes dans un fichier, mais lorsque vous écrivez réellement le code, veuillez les séparer. (Pourquoi seulement 1 classe publique dans le fichier Java)

À propos des variables de membre (champs)

Une variable membre définit l'état d'une classe et peut déclarer des variables de type de base, de type de classe et de type tableau. L'ordre de déclaration des variables membres est «nom de variable de type qualificatif». Type de base: ʻint id; Type de classe:Test a = nouveau test; Type de tableau: ʻint a []; ʻor ʻint [] a;
Les variables membres incluent des variables de classe et des variables d'instance. Les variables de classe sont des types avec «static» devant elles. Les variables d'instance sont des variables qui n'ont pas de «static».


public class Test{
    int id = 1; //Variable membre (variable d'instance)
    static int value = 200; //Variable membre (variable de classe)

    void student(){ //Ceci est une méthode
        System.out.println(id);
        System.out.println(value);
    }
}

De plus, les variables membres peuvent être référencées à partir de n'importe quelle méthode ou constructeur qui tente de référencer l'état de cette classe. Cependant, les variables locales, qui sont des variables qui définissent l'état de chaque méthode et constructeur, ne peuvent être référencées qu'à partir de chaque méthode et constructeur.


public class Student{
    int grade = 1; //Variables de membre
    void student1(){
        int id_1 = 7; //Variables locales
        System.out.println(grade); //Peut être référencé car il s'agit d'une variable membre
        System.out.println(id_1); //Peut être référencé car il s'agit d'une variable locale déclarée dans student1
        System.out.println(id_2); //Ne peut pas être référencé car il s'agit d'une variable locale déclarée dans student2 ×
    }
    void student2(){
        int id_2  = 1000;
        System.out.println(grade); //Peut être référencé car il s'agit d'une variable membre
        System.out.println(id_1); //Ne peut pas être référencé car il s'agit d'une variable locale déclarée dans student1 ×
    }
}

Méthode

Une méthode définit le comportement au sein d'une classe. Il se compose des formats suivants.

Modificateur Type de données de la valeur de retour Nom de la méthode (type d'argument nom de l'argument)....){
Corps de la méthode
}

① Type de données de valeur de retour

La valeur de retour est la valeur à renvoyer à l'appelant de la méthode. Si aucune valeur n'est renvoyée (il n'y a pas de valeur de retour), elle est décrite comme un type void. Un exemple est écrit ci-dessous.


public class Return {
    public static void print() {  //Puisqu'il s'agit d'un type void, il ne renvoie pas de valeur de retour
        System.out.println("It all returns to nothing");
    }
    public static int add(int x) {
        int result = x + 1999;
        return result;  //L'instruction return renvoie la valeur du résultat.
    }

    public static void main(String[] args) {
        int result = add(1); //Spécifiez la variable avec le même type que la valeur renvoyée par return pour plus de clarté
        print(); //Sortie "Tout revient à rien"
        System.out.println(result); //Sortie comme "2000"
    }
}

② Argument

Décrivez l'argument lorsqu'il est nécessaire d'hériter de la valeur de la méthode. Comment écrire est (type d'argument nom d'argument formel ....) Le type d'argument représente le type de la valeur à hériter et le nom d'argument formel représente le nom de variable qui ne peut être référencé que dans la méthode. S'il n'y a aucune valeur à hériter, seul () est utilisé. La méthode pour lire la méthode avec l'argument est nom de la méthode (valeur 1, valeur 2, ...);, et quand il est lu, le nom passe de ** argument formel ** à ** argument réel **.


public class Argument {
    public static void  main(String[] args){
        rabbithouse("Tomono Kafu"); //← Argument réel
        rabbithouse("Hoto Shinai");
        rabbithouse("Riyo Tenzenza");
        amausaan("Chiya Ujimatsu");
        fleur_du_lapin("Kirima Saji");
    }
    public static void rabbithouse(String name){ //← Argument formel
        System.out.println("Maison de lapin:"+ name);
    }
    public static void amausaan(String name){
        System.out.println("Kantoan:" + name);
    }
    public static void fleur_du_lapin(String name){
        System.out.println("Fleur de Lapin:" + name);
    }
}

Le résultat de l'exécution sera comme ça.

Maison de lapin:Tomono Kafu
Maison de lapin:Hoto Shinai
Maison de lapin:Riyo Tenzenza
Kantoan:Chiya Ujimatsu
Fleur de Lapin:Kirima Saji

Qualificatif

Il existe les types suivants de modificateurs Java. (J'ai omis un peu)

① Modificateur d'accès

public: Aucune restriction, peut être référencé de n'importe où protected: accessible uniquement à partir de la même classe, dans le même package, ou de ses sous-classes private: ne peut être référencé qu'à partir de la même classe. Les variables membres sont souvent «privées» pour apprendre de l'encapsulation. «Aucun»: dites package privé. Il ne peut être librement accessible que depuis l'intérieur du package avec le modificateur d'accès omis.

②static Indique qu'il s'agit d'une variable de classe. Vous pouvez y accéder sans instancier la classe, vous pouvez donc y accéder avec nom de classe.nom de membre.

③final Si vous le déclarez sur une classe, vous ne pourrez pas hériter de la classe. De plus, si elle est attachée à une méthode, la sous-classe ne peut pas remplacer la méthode.

À propos des instances et des objets

De là, je vais aborder l'orientation des objets. En tant qu'image, considérez une classe comme un dessin de conception, un objet comme un objet (tel qu'un humain ou une voiture) et une instance comme une entité créée à partir du dessin de conception. .. ..
L'instance est créée au format suivant. Nom de la classe Nom de la variable = nouveau nom de la classe (argument); Il existe deux façons de faire référence à une instance. Nom de la variable Nom de la variable membre; Nom de la variable Nom de la méthode;

** Mis à jour le 8 juin ** En Java, il existe une convention de dénomination selon laquelle toutes les variables membres (champs) et les noms de méthode sont tous inférieurs, et dans le cas de caractères composés, le délimiteur est supérieur. On dit qu'il s'agit d'un cas de chameau, mais il a commenté qu'il s'agit d'une méthode de description générale. .. !! Dans ce qui suit, le nom de la variable est défini sur "A" etc., mais ce n'est pas courant, donc j'apprécierais que vous puissiez le compléter ...: bow_tone1:

Un exemple est écrit ci-dessous.


class Instance {
    String name = "Destructeur de type rosée blanche "Yutachi""; //Variables de membre

    void shipType(){ //Méthode
        System.out.println("Destructeur");
    }
}

class MainClass{
    public static void main(String[] args) {
        Instance A = new Instance();
        System.out.println(A.name); //Ici, sortie comme "Destructeur de type rosée blanche" Yutachi ""
        A.shipType(); //Sortez "Destroyer" ici
    }
}

statique et non statique

J'ai mentionné un peu les variables membres (champs) et les modificateurs ci-dessus, mais je les expliquerai plus en détail ici.

Les méthodes et les variables avec statique sont référencées de diverses manières dans les livres de référence et sur le net, telles que «méthode statique», «méthode statique», «méthode de classe» et «variable de classe». Ne vous fâchez pas: peureux: Inversement, les méthodes et les variables qui n'ont pas de statique sont appelées «méthodes d'instance», «méthodes non statiques» et «variables d'instance».

méthode statique

Étant donné que la méthode statique est une méthode de la classe, elle peut être appelée par d'autres méthodes statiques, des méthodes d'instance ou une autre classe sans créer d'instance à l'aide de ** new **. Cependant, lors de l'appel dans votre propre classe, vous pouvez utiliser method name ();, mais lors de l'appel dans une autre classe, vous devez utiliser class name.method name ();. De plus, les méthodes statiques seront partagées et utilisées par cette classe. Par conséquent, le processus ne change pas, peu importe où vous l'appelez, donc s'il existe un processus ou des données communs dans la conception, la méthode statique est bonne.

Méthode d'instance

Une méthode identifiée pour chaque objet instancié à l'aide du nouvel opérateur. Par conséquent, ** vous devez toujours créer et appeler une instance. ** **

Résumé


class Method1 {

    //méthode statique, méthode statique, méthode de classe
    static void staticMethod1() {

        // instanceMethod();Ce n'est pas bien!Vous ne pouvez pas (directement) accéder aux méthodes d'instance (dans la même classe) à partir de méthodes statiques.

        Method1 a = new Method1(); //Créer une instance de la classe
        a.instanceMethod(); //Vous pouvez accéder aux méthodes d'instance avec un accès indirect via l'instance.
    }

    //méthode statique / méthode statique
    static void staticMethod1_1() {
        staticMethod1(); //Puisqu'il s'agit d'un appel depuis votre propre classe, vous n'avez pas besoin d'un nom de classe.

        Method1.staticMethod1(); //Vous pouvez toujours l'appeler.
    }

    //Méthode d'instance / méthode non statique
    void instanceMethod() {
        staticMethod1(); //Appel d'une méthode statique à partir d'une méthode d'instance(accès)Aussi ok sans nom de classe

        Method1.staticMethod1(); //Vous pouvez toujours l'appeler.
    }
}

//Une autre classe
class Method2 {
    static void staticMethod2() {

        // staticMethod1();Ce n'est pas bien!

        Method1.staticMethod1(); //Lors d'un appel depuis une autre classe, le nom de la classe.nom de méthode statique

        // instanceMethod();Ce n'est pas bien!

        Method1 b  = new Method1(); //Lors de l'accès à une méthode d'instance d'une autre classe, accédez à la méthode d'instance via l'instance
        b.instanceMethod();

        Method2 c = new Method2(); //L'accès aux méthodes d'instance de votre classe est le même.
        c.instanceMethod2();
    }

    void instanceMethod2() {
        Method1.staticMethod1_1(); //Un nom de classe est requis lors de l'appel d'une méthode statique d'une autre classe à partir d'une méthode d'instance!
        staticMethod2();
        Method3.staticMethod3();
    }
}

class Method3 extends Method1{
    static void staticMethod3() {
        staticMethod1(); //Lorsqu'il est hérité, il peut être appelé sans avoir besoin d'un nom de classe

        //instanceMethod();Ce n'est pas bon pour l'héritage. Assurez-vous de créer une instance de la classe et d'y accéder

        Method1 d = new Method1();
        d.instanceMethod();
    }

    void instanceMethod3() {
        staticMethod1();
    }
}

constructeur

Un constructeur est exécuté lorsqu'une instance d'une classe est créée et est un processus qui vous permet de déterminer et d'initialiser les valeurs des variables membres. Pour appeler le constructeur, la méthode avec le même nom de classe que lors de la création de l'instance avec nom de classe nom de variable = nouveau nom de classe (argument); est le constructeur **. En d'autres termes, il peut également être exprimé comme nom de la variable nom de classe = nouveau nom du constructeur (argument).


public class Constructor1{
    String name = "Aoyama Blue Mountain";

    public Constructor1(){
        System.out.println(name);
    }
}
class Main{
    public static void main(String[] args) {
        Constructor1 cs = new Constructor1();
    }
}

Le résultat de l'exécution est le suivant.

Aoyama Blue Mountain

public class Constructor2{
    public Constructor2(String str){
        System.out.println(str);
    }
}
class Main{
    public static void main(String[] args){
        Constructor2 A = new Constructor2("Hello");
    }
}

Le résultat de l'exécution est le suivant.

Hello

À propos de ça

① Ceci qui pointe vers votre propre variable d'instance et méthode d'instance

Utilisez «this» lorsque les noms de variable des variables membres (champs) et des variables locales sont identiques. Si cela n'est pas ajouté, les variables locales définies dans la méthode prévaudront et les variables membres (champs) ne seront pas référencées.


class ThisClass{
    private int number;
    public void setNumber(int number){ //Variables locales(argument)La valeur de nombre est une variable membre(Plier)En remplaçant le nombre de
        this.number = number + 100;
    }
    public int getNumber(){
        return this.number;
    }
}

class Main{
    public static void main(String[] args) {
        ThisClass A = new ThisClass();
        A.setNumber(1);
        System.out.println(A.getNumber()); //Il est sorti comme 101.
    }
}

Par rapport à la classe Student écrite dans l'en-tête ci-dessus «À propos des variables membres (champs)», avec ou sans «this» selon que les noms de variable des variables membres (champs) et des variables locales sont identiques. Veuillez juger.

② Appelez un autre constructeur depuis le constructeur this ()

Utilisez this () lorsque vous voulez décrire le traitement commun dans un seul constructeur et appelez ce traitement depuis un autre constructeur. Il est différent de celui écrit en ①.


class ThisConstructor {
    private String ShopName;
    private String CharacterName;

    public ThisConstructor(String shopName , String CharacterName){
        this.ShopName = shopName;
        this.CharacterName = CharacterName;
    }

    //Définition de la valeur par défaut
    public ThisConstructor(){
        this("Maison de lapin" , "Tomono Kafu");
    }

    //Initialisation du champ
    public void print(){
        System.out.println(ShopName+" : "+CharacterName);
    }
}

class Main{
    public static void main(String[] args) {
        ThisConstructor tc1 = new ThisConstructor();
        tc1.print();

        ThisConstructor tc2 = new ThisConstructor("Maison de lapin" , "Riyo Tenzenza");
        tc2.print();
    }
}

Site référencé

Recommended Posts

[Introduction à Java] J'ai essayé de résumer les connaissances que j'estime essentielles
J'ai essayé de résumer l'apprentissage Java (1)
J'ai essayé de résumer Java 8 maintenant
J'ai essayé de résumer les bases de kotlin et java
J'ai essayé de résumer les méthodes utilisées
J'ai essayé de résumer les expressions Java lambda
J'ai essayé de résumer l'API Stream
Qu'est-ce que Docker? J'ai essayé de résumer
J'ai essayé de résumer les méthodes de Java String et StringBuilder
[Ruby] J'ai essayé de résumer les méthodes fréquentes dans paiza
[Ruby] J'ai essayé de résumer les méthodes fréquentes avec paiza ②
J'ai essayé de résumer à nouveau le projet qui était difficile à première vue
J'ai essayé d'implémenter la méthode de division mutuelle d'Eugrid en Java
J'ai créé un programme qui recherche la classe cible à partir du processus surchargé avec Java
J'ai brièvement résumé la grammaire de base de Ruby
J'ai essayé de résumer le support d'iOS 14
J'ai essayé d'interagir avec Java
J'ai essayé d'expliquer la méthode
J'ai essayé le framework Java "Quarkus"
[Java] J'ai essayé de créer un jeu Janken que les débutants peuvent exécuter sur la console
J'ai essayé de résumer ce qui était demandé lors de l'édition site-java-
[Rubiy] J'ai essayé de résumer le traitement de la boucle ce soir [fois, pause ...]
Conférence spéciale sur la simulation multi-échelles: j'ai essayé de résumer le 5e
J'ai essayé de traduire le message d'erreur lors de l'exécution d'Eclipse (Java)
J'ai essayé de comprendre comment la méthode des rails "redirect_to" est définie
Conférence spéciale sur la simulation multi-échelles: j'ai essayé de résumer le 8
J'ai essayé de comprendre comment la méthode des rails "link_to" est définie
[Java] J'ai essayé de faire un labyrinthe par la méthode de creusage ♪
J'ai essayé d'exécuter le formulaire FaaS compatible Java "Fn Project"
J'ai essayé d'afficher le calendrier sur la console Eclipse en utilisant Java.
Conférence spéciale sur la simulation multi-échelles: j'ai essayé de résumer le 7
Introduction à Java pour la première fois # 2
J'ai essayé le nouveau yuan à Java
J'ai essayé d'implémenter le modèle Iterator
Sortie du livre "Introduction à Java"
Je suis allé au Java Women's Club # 1
J'ai essayé de résumer les points clés de la conception et du développement de gRPC
J'ai essayé de résoudre les 10 dernières questions qui devraient être résolues après m'être inscrit auprès d'AtCoder en Java
J'ai essayé de résumer sur JVM / garbage collection
J'ai essayé de faire une authentification de base avec Java
[Rails] J'ai essayé de faire passer la version de Rails de 5.0 à 5.2
J'ai essayé d'organiser la session en Rails
Initialiser le tableau Ruby avec 0 comme Java, c'est-à-dire définir la valeur par défaut sur 0
[Java] Introduction à Java
J'ai essayé de sortir quatre-vingt-dix-neuf en Java
[JavaScript] Le cas le plus fort lorsque j'ai essayé de résumer les parties que je ne comprends pas
J'ai essayé de configurer tomcat pour exécuter le servlet.
Introduction à Java
J'ai essayé de créer une compétence Alexa avec Java
[Petite histoire] J'ai essayé de rendre java ArrayList un peu plus pratique
J'ai essayé de casser le bloc avec java (1)
[Introduction à Java] Liste des choses qui ont été capturées par le 14e jour de programmation