J'ai commencé Java Gold (Chapitre 1-1)

Chapitre 1 Conception de classe Java

Les types de données qui peuvent être utilisés dans l'instruction case

・ Octet ・ Char · Court ・ Int ・ Énumération · Chaîne · Personnage ・ Octet · Court ・ Entier

Les types de données de base ci-dessus et leurs classes wrapper. Cependant, il semble que seuls enum, String, char et int soient réellement utilisés.


Vous pouvez utiliser décimal, octogone, hexadécimal, binaire et trait de soulignement (_).

public class Sample {
	public static void main(String[] args) {
		int v1 = 10; //Nombre décimal
		int v2 = 072; //8 base
		int v3 = 0x1a; //Hexadécimal
		int v4 = 0b1111; //Nombre binaire
		int v5 = 100_000; //Pour améliorer la lisibilité
	}
}

Gardez à l'esprit que les traits de soulignement ne peuvent pas être utilisés pour le ** début, la fin et avant et après le symbole ** du littéral.


Java dispose des modificateurs suivants pour définir la plage d'accès, appelée portée.

Qualificatif Lieu applicable La description
public Classes, méthodes, variables, constructeurs Peut être utilisé dans n'importe quelle classe
protected Méthodes, variables, constructeurs Seuls le même package et les mêmes classes héritées peuvent être utilisés
Par défaut (non spécifié) Classes, méthodes, variables, constructeurs Ne peut être utilisé qu'à partir du même emballage
private Méthodes, variables, constructeurs Ne peut être utilisé que dans la même classe

** À propos du public **

Une seule classe publique peut être créée dans un fichier comme indiqué ci-dessous.

Sample.java


public class Sample { //C'est acceptable
	public static void main(String[] args) {
		System.out.println("Sample");
	}
}

public class Sample2 { //Cela entraînera une erreur de compilation
	public static void main(String[] args) {
		System.out.println("Sample2");
	}
}

** À propos de protégé et privé **

En raison de la limitation que protected ne peut être utilisé qu'à partir du même package et des mêmes sous-classes Il semble qu'il soit habituellement attaché aux «méthodes que vous voulez remplacer».

Il semble que le privé soit souvent utilisé pour l'encapsulation. Le but de l'encapsulation semble être d'éviter que les champs ne soient modifiés sans discernement. Après cela, je pense que ce serait bien de pouvoir facilement comprendre où la valeur est fixée et où elle est acquise.

Est-ce comme ça lorsqu'il est utilisé comme source?

Sample.java


public class Sample {
	public static void main(String[] args) {
		Cat zakiyama = new Cat();
		zakiyama.setName("Zakiyama");
		System.out.println(zakiyama.getName());
	}
}

abstract class Animal {
	private String Name;

	protected abstract String getName();
	protected abstract void setName(String newName);
}

class Cat extends Animal {
	private String Name;

	@Override
	protected String getName() {
		return this.Name;
	}

	@Override
	protected void setName(String newName) {
		this.Name = newName;
	}
}

Le modificateur final peut être appliqué aux variables, méthodes et classes. Lorsqu'il est appliqué à chacun, le mouvement est le suivant.

Lieu applicable La description
classe そのclasseを継承できなくなる
Méthode そのMéthodeをオーバーライドできなくなる
variable そのvariableの中身を変更できなくなる(定数化)

** ・ À propos de la finale ** L'une des classes Java standard, la classe String est la classe finale. (Voir JavaDoc) Quand ajouter final, quand l'héritage n'est pas nécessaire. C'est génial d'empêcher le dessin de s'effondrer.

Ce n'est pas vraiment une classe qui hérite et s'étend S'il est hérité, le rôle qu'il devrait avoir n'a pas de sens.

L'article ici décrit les mérites de l'ajout de final, il est donc très utile.

** ・ À propos de l'électricité statique ** Les variables et méthodes avec statique ont des zones de mémoire différentes des instances. Vous pouvez utiliser les variables et les méthodes sans les instancier.

Comme ça.

Sample.java


public class Sample {
	public static void main(String[] args) {
		Animal zakiyama1 = new Animal();
		Animal zakiyama2 = new Animal();

		zakiyama1.SetName("C'est Zakiyama 1");
		System.out.println(zakiyama1.getName());
		System.out.println(zakiyama2.getName());

		zakiyama2.SetName("C'est Zakiyama 2");
		System.out.println(zakiyama1.getName());
		System.out.println(zakiyama2.getName());
	}
}

class Animal {
	private static String Name;

	public String getName() {
		return Animal.Name;
	}

	public void SetName(String newName) {
		Animal.Name = newName;
	}
}

Résultat d'exécution

C'est Zakiyama 1
C'est Zakiyama 1
C'est Zakiyama 2
C'est Zakiyama 2

Parce que les variables statiques sont pour les classes Il n'a pas de contenu pour chaque variable d'instance.

Par conséquent, si vous modifiez la variable dans zakiyama1, le contenu est modifié lorsque vous l'appelez dans zakiyama2. Si le contenu de la variable est conservé pour chaque instance, la variable n'est pas affectée par plusieurs instances.

Dans le cas des variables d'instance, cela ressemble à ceci.

Sample.java


public class Sample {
	public static void main(String[] args) {
		Animal zakiyama1 = new Animal();
		Animal zakiyama2 = new Animal();

		zakiyama1.SetName("C'est Zakiyama 1");
		System.out.println(zakiyama1.getName());
		System.out.println(zakiyama2.getName());

		zakiyama2.SetName("C'est Zakiyama 2");
		System.out.println(zakiyama1.getName());
		System.out.println(zakiyama2.getName());
	}
}

class Animal {
	private String Name;

	public String getName() {
		return this.Name;
	}

	public void SetName(String newName) {
		this.Name = newName;
	}
}

résultat

C'est Zakiyama 1
null
C'est Zakiyama 1
C'est Zakiyama 2

Plus à ce sujet.

Recommended Posts

J'ai commencé Java Gold (Chapitre 1-1)
J'ai pris Java SE8 Gold.
Ce que j'ai appris avec Java Gold
Efficace Java Chapitre 2
J'ai commencé Ruby
J'ai commencé Angular
Effective Java Chapitre 6 34-35
Effective Java Chapitre 4 15-22
Java efficace Chapitre 3
Java Performance Chapitre 1 Introduction
J'ai commencé un journal de programmation
J'ai d'abord touché Java ②
J'ai d'abord touché Java ③
J'ai d'abord touché Java ④
Mesures Java Gold: Format
J'ai d'abord touché Java
Java Performance Chapitre 3 Boîte à outils Java Performance
Notes sur l'examen Java8 Gold
Mesures Java Gold: localisation
Premiers pas avec Java Collection
Ce que j'ai recherché sur Java 6
[Cas d'amélioration Java] J'ai commencé à programmer après l'âge de 30 ans.
En passant Java Gold SE 8
J'ai fait une roulette à Java.
Ce que j'ai recherché sur Java 9
J'ai étudié les types primitifs Java
Java Performance Chapter 2 Approche des tests de performances
J'ai essayé Drools (Java, InputStream)
J'ai essayé Rails débutant [Chapitre 1]
Ce que j'ai recherché sur Java 7
J'ai essayé d'utiliser Java REPL
Premiers pas avec les bases de Java
[Java] J'ai essayé d'implémenter la combinaison.
J'ai essayé Rails débutant [Chapitre 2]
Je ne suis pas sûr du traitement parallèle Java
J'ai étudié le constructeur (java)
J'ai essayé la métaprogrammation avec Java
Ce que j'ai recherché sur Java 5
Ce à quoi j'ai pensé lorsque j'ai commencé à migrer de Java vers Kotlin
J'ai envoyé un e-mail en Java
J'ai comparé les constructeurs PHP et Java
J'ai créé un PDF avec Java.
J'ai créé une application shopify @java
Reçu un programmeur Java certifié Oracle, Gold SE 8
Histoire du passage de Java Gold SE8
J'ai vérifié Java Flight Recorder (JFR)
Tombé dans Java Silver (pleurant)
J'ai essayé d'interagir avec Java
J'ai essayé la communication UDP avec Java
Efficacité de Java 3rd Edition Chapitre 5 Génériques
J'ai écrit le théorème de Gordobach en java
J'ai essayé le framework Java "Quarkus"
J'ai essayé d'utiliser l'API Java8 Stream
Méthodes efficaces du chapitre 8 de Java 3rd Edition
J'ai fait une annotation en Java.
J'ai essayé d'utiliser JWT en Java
J'ai essayé de résumer l'apprentissage Java (1)
Ce que j'ai appris avec Java Silver
Ce que j'ai recherché sur l'apprentissage Java
J'ai essayé de résumer Java 8 maintenant