[Java] Ich habe die grundlegende Grammatik persönlich zusammengefasst.

Ich werde Java zusammenfassen, um mein Verständnis zu vertiefen. Ich werde es von Zeit zu Zeit aktualisieren.

Verweise ☆ Kiyotaka Nakayama / Daigo Kunimoto "Einführung in Java für eine erfrischende 3. Ausgabe"

fließen

① Erstellung des Quellcodes

Die Quelldateierweiterung lautet ".java".

② Kompilieren

$ javac Quelldateiname ① .java Quelldateiname ② .java

$ javac Split.java SplitLogic.java
③ Ausführung

Dateiname der $ java-Klasse

$ java Split

// Kann nicht mit Java Split Logic beginnen Fehler: Die Hauptmethode kann nicht in der Klasse SplitLogic gefunden werden.

//パッケージに属したクラスの実行 $ java FQCN der zu startenden Klasse

$ java splitapp.main.Split

-Der Interpreter (: Software) verwendet JVM (Java Virtual Machine), um den Bytecode zu entschlüsseln. -Der in der Hauptmethode enthaltene Klassenname muss angegeben werden. ・ Daher arbeitet der Computer wie angewiesen.

JAR-Datei

jar -cvf Klassendateiname .jar * .class // create

Beschreiben Sie "Hauptklasse: Klassendateiname" in der Datei "Klassendateiname.mf" // Zeilenumbruch am Zeilenende jar -cvfm Klassendateiname .jar Klassendateiname .mf * .class // Manifestdatei erstellen java -jar Klassendateiname.jar // ausführen

Eine Archivdatei ähnlich einer ZIP-Datei, die mehrere Klassen zu einer kombiniert

Grundstruktur

öffentliche Klasse Klassenname {* Klassenname beginnt mit dem oberen Alphabet // Klassenblock public static void main (String [] args) {// Methodenblock } } Doppelstruktur mit Blöcken

Variable

Erklärung

Datentyp Variablenname;

Datentyp

[Ganzzahl] Klein Byte: ziemlich kleine Byte-Gläser; Gläser = 7; kurz: kleines kurzes Alter; Alter = 7; ⭐︎ int: Normales int-Gehalt; Gehalt = 7777; lang: Groß lang Japanisch; Japanisch = 124_000_000L;

[Kleine Anzahl] Groß float: Mehrdeutiges Floatgewicht; Gewicht = 60.0F; ✨ doppelt: Normale doppelte Höhe; Höhe = 177,7;

[Richtig / Falsch Wert] boolean: true oder false boolean isValid;

[Brief] char: Nur ein Zeichen char color; color = 'green';

[Zeichenkette] ⭐︎String: Zeichenfolge String name; name = "John"

Initialisieren

Datentyp Variablenname = Wert;

String lik = "cat"; // Variablen initialisieren * Gleichzeitige Deklaration und Zuweisung liks = "inu"; // Neuzuweisung * "cat" wird überschrieben System.out.println (Likes + "Likes");

Konstante (Variable mit final)

Erklärung

Endgültiger Datentyp Konstantenname = Anfangswert; * Der Konstantenname ist im Grunde nur in Großbuchstaben

final double PI = 3.14; // Deklaration von Konstanten int pie = 7; PI = 10; // Auf Kompilierungsfehler prüfen System.out.println ("Radius" + Kreis + "cm Kreisfläche ist"); System.out.println(pie * pie * PI);

Der Wert kann festgelegt werden, um ein erneutes Schreiben zu verhindern

Formeln (Berechnungsformeln, Deklarationsformeln usw.)

Besteht aus Operanden und Operatoren

Operand

・ Bezieht sich auf den in der Formel verwendeten Wert -Der im Quellcode angegebene Wert wird als "Literal" bezeichnet. ・ Die Notationsmethode von Literalen unterscheidet sich je nach Datentyp.

Escape Synth

Sonderzeichen, die in Zeichenfolgen- und Zeichentypen verwendet werden ¥ "Doppeltes Anführungszeichen ¥ 'Einfaches Angebot ¥ \ Yen-Symbol (¥) \ N Zeilenumbruch

Auswertung

Berechnungsverarbeitung nach der Formel nach den drei Prinzipien

① Ersatz durch Bewertungsergebnisse

Der Operator führt die Berechnung mit dem Operanden durch und gelangt zum Berechnungsergebnis.

② Priorität

2 + 7 * 10 = 72 // Priorität multiplizieren (2 + 7) * 10 = 90 // Die Priorität kann durch Einschließen in Klammern angegeben werden Wenn mehrere Operatoren vorhanden sind, haben sie gemäß den Java-Regeln Vorrang

③ Beitrittsregeln

Wenn es mehrere Operatoren mit derselben Priorität gibt, hat die feste Richtungsreihenfolge für jeden Operator Vorrang.

Operator

Bezieht sich auf das in der Formel verwendete Symbol

Arithmetischer Operator (+, -, *, /,%)

・ Alles von links · Höhere Priorität

String Join Operator (+)

・ Ähnlich von links · Höhere Priorität

Zuweisungsoperator (=, + =, - =, * =, / =,% =)

・ Alles von rechts · Niedrige Priorität ・ Das Letzte, was zu tun ist

Inkrementierungs- / Dekrementierungsoperator (++, -)

・ Wird auch als Einzeltermoperator bezeichnet ・ Wie JavaScript · Höchste Priorität -Es ist wünschenswert, es nicht zusammen mit anderen Operatoren zu verwenden (es kann Fehler verursachen)

Datentypkonvertierung

(1) Automatische Typkonvertierung zum Zeitpunkt der Substitution

float y = 7; // Automatische Typkonvertierung zum Zeitpunkt der Zuweisung double z = y; // Automatische Typkonvertierung zum Zeitpunkt der Zuweisung int w = 0.7; // Typen, die kleiner als type sind, führen zu einem Kompilierungsfehler Byte q = 2; // Byte. Ausnahme zur Zuordnung des Typs int zum Kurztyp

Die Zuordnung zu einem Typ, der größer als jeder Typ ist, konvertiert den Wert automatisch

② Erzwungene Typkonvertierung

int e = (int) 7.7; // Cast-Operator

Darsteller

Definition

(Typname des Konvertierungsziels) Wert; ・ Zwangsumwandlung anweisen

[Fehler] -Der Inhalt der Daten geht verloren, da die Konvertierung auch dann durchgeführt wird, wenn ein Teil der Daten beschädigt ist. ➡︎ Im obigen Fall werden die Ziffern nach dem Dezimalpunkt nicht ausgegeben. Es wird empfohlen, es nicht zu verwenden, es sei denn, es gibt einen guten Grund

③ Automatische Typkonvertierung zum Zeitpunkt der Berechnung

long b = 7 + 7L; // Konvertiere int in long double c = 7.7 * 2; // Konvertiere int in double String msg1 = 7 + "I like"; // Int in String konvertieren

・ Das Prinzip ist der gleiche Typ ・ Wenn verschiedene Typen verwendet werden, werden sie automatisch zu einem größeren Typ vereinheitlicht.

Befehlsausführung

Definition

Aussage (Argument);

int p = 1, o = 2;

int m = Math.max (p, o); // Werte vergleichen und den größeren ersetzen System.out.println (m); // Anzeige auf dem Bildschirm System.out.print (m); // Anzeige auf dem Bildschirm (keine Zeilenumbrüche)

String age = "12";

int n = Integer.parseInt (Alter); // Strings in Zahlen konvertieren System.out.println ("Alter ist" + n + "");

int r = new java.util.Random (). nextInt (7); // Generiere eine Zufallszahl System.out.println ("Alter ist" + r + "?");

System.out.println ("Geben Sie Ihren Namen ein"); String name = new java.util.Scanner (System.in) .nextLine (); // Empfange eine Zeile der String-Eingabe von der Tastatur System.out.println ("Wie alt?"); int age1 = new java.util.Scanner (System.in) .nextInt (); // Empfange eine ganzzahlige Eingabe von der Tastatur System.out.println ("Willkommen!" + Alter1 + "Jahre alt" + Name + "san");

Steuerungssyntax

・ Besteht aus bedingten Ausdrücken und Blöcken ・ Der Mechanismus ähnelt JavaScript

Bedingter Ausdruck

Zeichenfolgentypvariable .equals (zu vergleichende Zeichenfolge)

if (str.equals ("Guten Morgen")) ・ "==" Zeigt Gleichheit an ・ Zeichenketten können jedoch nicht mit "==" verglichen werden.

Bedingte Verzweigung

① if-else-Anweisung ② if-Anweisung

③ if-else if-else-Anweisung

➡︎ Wenn der else-Block leer ist, kann er vollständig weggelassen werden

④ switch-Anweisung

➡︎ Wenn Aussage klug gemacht werden kann Bedingung ❶ Es muss ein Ausdruck dafür sein, ob die linke und die rechte Seite übereinstimmen ❷ Der Vergleichswert ist kein Bruch und kein Boolescher Wert

Wiederholung

① while-Anweisung

➡︎ Präfixbeurteilung (bedingten Ausdruck vor Ausführen des Blocks auswerten)

② do-while-Anweisung
do {
  temp++;

System.out.println ("Es ging einmal hoch"); } while(temp > 27); ➡︎ Postfix-Beurteilung (Auswertung des bedingten Ausdrucks nach Ausführung des Blocks)

③ für Satz

for (int Variablenname = 0; Variablenname <Wiederholungswert; Variablenname ++)

for (int Variablenname = 1; Variablenname <Wiederholungswert; Variablenname ++) // Schleifenvariable von 1 starten for (int Variablenname = 0; Variablenname <Wiederholungswert; Variablenname + = n) // Erhöhe die Schleifenvariable um n for (int Variablenname = n; Variablenname> 1; Variablenname--) // Verringere die Schleifenvariable von n um 1 for (; Variablenname <n; Variablenname ++) // Schleifenvariable nicht initialisieren for (int Variablenname = 0; Variablenname <wiederholter Wert;) // Verarbeitung nicht wiederholen ・ Ähnlich wie JavaScript ・ Wird verwendet, wenn die Anzahl der Wiederholungen festgelegt ist

Andere

Wiederholte Unterbrechung

・ Ähnlich wie JavaScript ① break-Anweisung ② Aussage fortsetzen

Endlosschleife
①while (true) {

wird bearbeitet }

②for (;;) {

wird bearbeitet } Setzen Sie die Schleife absichtlich fort, sofern sie nicht unterbrochen wird

Array

Ähnlich wie bei JavaScript

Erklärung

Datentyp [] Array-Variablenname;

int[] scores;
Auswechslung

Name der Array-Variablen = neuer Datentyp [Wert];

scores = new int[5];
Initialisieren

① Datentyp [] Array-Variablenname = neuer Datentyp [] {Wert}; ② Datentyp [] Array-Variablenname = {Wert};

int[] scores = new int[] {10, 20, 30, 40, 50};
int[] scores = {10, 20, 30, 40, 50};
Holen Sie sich die Anzahl der Elemente

Array-Variablenname.Länge

int num = scores.length;

String variable name.length ();

String str = "Java lernen"; System.out.println(str.length());

Error
ArrayIndexOutOfBoundsException 

Weil Sie ein Element verwenden, das nicht existiert

Kombination mit für Aussage

① Verwendung aller Elemente durch Schleife

for (int i = 0; i <Name der Arrayvariablen.Länge; i ++) { Verarbeitung mit dem Array-Variablennamen [i] }

for (int i = 0; i < scores.length; i++) {

System.out.println (Scores [i]); // i ändert sich für jede Schleife }

(2) Aggregation nach Schleife

int sum = 0; // Variablen initialisieren for (int i = 0; i < scores.length; i++) { sum + = score [i]; // Addiere jeweils ein Thema }

int count = 0;
for (int i = 0; i < scores.length; i++) {
  if (scores[i] >= 25) {

count ++; // Zähle die Elemente, die die Bedingungen erfüllen } }

③ Verwendung von Informationen, die Indizes entsprechen
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]] + " ");
④ Zur Aussage erweitert

for (Datentyp Variablenname: Array Variablenname) { wird bearbeitet }

int[] scores = {10, 20, 30, 40, 50};
for (int value : scores) {
  System.out.println(value);
}

・ Für Schleifen, die Elemente einzeln herausnehmen ・ Es wird eine sauberere Form als eine normale for-Anweisung ohne die Beschreibung von Schleifenvariablen und Indizes.

Aufräumen

Müllabfuhr
boolean valid = true;
if (valid == true) {
  int[] array = {2. 4. 6}

} // Zu diesem Zeitpunkt hat das Array nicht genügend Speicher

・ Die 3 durch new gesicherten Elemente bleiben auch nach dem Ende des Blocks (Müll) erhalten -Nur von keiner Array-Variablen referenziert ・ Ein Mechanismus, der automatisch nach solchem Müll sucht und ihn bereinigt

null int[] array = {1, 3, 5}; array = null; array[0] = 9;

・ Kann nur Referenztypvariablen zugewiesen werden

Error
NullPointerException

Tritt auf, wenn eine Array-Variable verwendet wird, die null enthält

Zweidimensionales Array (kollektiv mehrdimensionales Array)

Erklärung

Datentyp [] [] Array-Variablenname = neu Datentyp [Anzahl der Zeilen] [Anzahl der Spalten];

int[][] scores = new int[3][3];
wie benutzt man

Name der Arrayvariablen [Zeilenindex] [Spaltenindex]

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

Methode

・ Ein Name, der in mehreren Sätzen geschriebene Verarbeitungscodes zu einem zusammenfasst -Beachten Sie, dass die Position zum Definieren einer Methode und die Position zum Aufrufen nicht immer gleich sind. ➡︎ Die Entwicklung wird oft von mehreren Personen durchgeführt -Es ist wünschenswert, dass der Methodenname den Verarbeitungsinhalt anzeigt.

[verdienen] (1) Der Code ist leicht zu lesen und verständlich. (2) Der Korrekturbereich kann begrenzt werden, indem für jede Funktion in Methoden unterteilt wird (wodurch die Fehlerursache leichter gefunden werden kann). (3) Da das Verfahren wiederverwendet werden kann, kann die Arbeitseffizienz verbessert werden.

Definition

① public static Rückgabewert Datentyp Methodenname (Argumentliste) { (2) Spezifische Verarbeitung, die durch Aufrufen einer Methode ausgeführt wird }

public static void hello() {

System.out.println ("Hallo"); // Methodenblock = Ausführungsinhalt } [Zweistufige Konfiguration] ① Erklärung wichtiger Angelegenheiten ② Inhalte verarbeiten

Anruf

Methodenname (Argumentliste);

public static void main(String[] args) {

System.out.println ("Aufrufmethode"); // Hauptmethodenblock hallo (); // Methode aufrufen methodA (); // methodA einschließlich methodB wird aufgerufen } public static void methodA() { System.out.println("A"); methodB(); } public static void methodB() { System.out.println("B"); } ・ Es wird nicht nur per Definition ausgeführt -Es gibt keine feste Reihenfolge der Methodenbeschreibung (da die Hauptmethode das Zentrum ist)

Streit

Methodenname () // Übergebe nichts Methodenname (Wert) // eins übergeben Methodenname (Wert 1, Wert 2 ...) // mehrere übergeben

① public static void main(String[] args) {

Hallo ("Tanaka"); // Definition der Argumente (1) Hallo ("Sato"); Hallo ("Suzuki"); } public static void hello (String name) {// Definiere den Variablennamen des String-Typs System.out.println (Name + "san, guten Abend"); }

② public static void main(String[] args) {

add (100, 200); // Definition der Argumente (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) {

Methode C ("Goodbye", 777); } public static void methodC (int x, String y) {// Kompilierungsfehler 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; // Kompilierungsfehler System.out.println(a + b); }

Rückgabewert

public static Rückgabewertdatentyp Methodenname (Argumentliste) {// Rückgabewertdatentyp ist der gleiche Typ wie der von return zurückgegebene Wert Spezifische Verarbeitung durch Aufrufen einer Methode return Rückgabewert; // Geben Sie den Variablennamen oder das Literal (100, "Hallo" usw.) für den Rückgabewert an. }

public static int add(int x, int y) {
  int ans = x + y;
  return ans;
}

・ Verwenden Sie "void", wenn nichts zurückgegeben wird -Die return-Anweisung hat die Bedeutung von "Beenden der Methode" sowie "Zurückgeben des Werts". ➡︎ Wenn Sie den Verarbeitungscode nach der return-Anweisung schreiben, tritt daher ein Kompilierungsfehler auf.

Anruf

Datentyp Variablenname = Methodenname (Argumentliste); // Methodenaufruf hat Priorität

① public static void main(String[] args) {

int ans = add (100, 200); // call System.out.println("100 + 200 = " + ans); }

② public static void main(String[] args) {

System.out.println (add (add (100, 200), add (10, 20))) // Verwenden Sie den Rückgabewert so wie er ist } ・ Es ist nicht immer erforderlich, den Rückgabewert als Variable zu erhalten

Überlastung (Mehrfachdefinition)

①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))); // * wird aufgerufen System.out.println (add ("7 * 77 * 2 =" + add (1, 2, 3))); // # wird aufgerufen } 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; //# }

[Ausnahme] (1) Wenn der Datentyp des formalen Arguments der Methode unterschiedlich ist (int, double, String hier erwähnt) (2) Wenn die Anzahl der Elemente des formalen Arguments der Methode unterschiedlich ist (a ・ b, a ・ b ・ c hier erwähnt)

Argument (Array ver)

public static void main(String[] args) {
  int[] array = {1, 3, 5};

printArray (Array); // ein Array übergeben } public static void printArray (Array int []) {// Geben Sie ein Array als Argument an for (int element : array) { System.out.println(element); } } -Pass by value: Ein Aufruf, der den Wert selbst übergibt Bei Verwendung eines Arrays wird die Adresse des Elements anstelle des Werts kopiert (1, 3, 5 hier). Das Übergeben einer Adresse als Argument wird als "Übergeben als Referenz" bezeichnet. ➡︎ Das Umschreiben am Angerufenen spiegelt sich im Anrufer wider

Rückgabewert (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;
  }
}

Kommandozeilenargumente

String[] args

-Wert, der beim Starten des Programms an das Programm übergeben wird -Der Wert wird an die Hauptmethode übergeben

Anlaufen

Argumentliste für Java-Programmnamen

java Sample abc def ghi
java Sample 1 2 3

Partisierung

(1) Erstellen einer Quelldatei nur mit Verarbeitungsmethoden
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) Ändern Sie den Aufruf der Hauptmethode
public class Split {
  public static void main(String[] args) {
    int a = 7; int b = 1;

int total = SplitLogic.tasu (a, b); // Hier int delta = SplitLogic.hiku (a, b); // Hier System.out.println ("Addieren" + gesamt + ", subtrahieren" + Delta); } }

Da die Verarbeitungsmethode nicht mehr zur Hauptmethode gehört, muss die Zugehörigkeit angegeben und aufgerufen werden.

Paket

Ein Mechanismus, der für jede Klasse in Gruppen klassifiziert und verwaltet werden kann

Definition

Paket Der Name des Pakets, zu dem es gehört;

package splitapp.main;
public class Split {
}
package splitapp.logics;
public class SplitLogic {
}

・ Muss am Anfang des Quellcodes geschrieben werden ・ Kleinbuchstaben sind häufig -Es gibt keine Eltern-Kind-Beziehung oder hierarchische Beziehung zwischen Paketen (jedes unabhängig) -Default-Paket: Gehört zu keinem Paket (auch ein anonymes Paket) Die import-Anweisung kann nicht verwendet werden

FQCN (vollständig eingeschränkter Klassenname oder vollständig qualifizierter Klassenname)

Paketname.Klassenname

package splitapp.main;
public class Split {

int total = splitapp.logics.SplitLogic.tasu (a, b); // hier int delta = splitapp.logics.SplitLogic.hiku (a, b); // hier }

Um eine Klasse in einem anderen Paket aufzurufen, müssen Sie das Paket angeben, zu dem sie gehört.

Importanweisung

Paketname importieren.Klassenname;

package splitapp.main; 

import splitapp.logics.SplitLogic; // Wenn nur SplitLogic importiert wird import splitapp.logics. *; // Beim Importieren von allem import splitapp.main. *; // Beim Importieren von allem

//どちらの表記でも構わない int total = SplitLogic.tasu(a, b); int delta = splitapp.logics.SplitLogic.hiku(a, b);

・ FQCN kann weggelassen werden ・ Nach dem Paket beschrieben ・ Eingangsreduzierungsfunktion

Namensraum

・ Kapazität des angegebenen Namens ・ Namenskonflikt: Wettbewerb um denselben Namen zwischen Klassen mit unterschiedlichen Inhalten -Der gleiche Name kann für verschiedene Pakete verwendet werden (da er durch FQCN unterschieden werden kann) ➡︎ Daher müssen Paketnamenkonflikte vermieden werden. Paketnamen in umgekehrter Reihenfolge der Unternehmensdomäne werden empfohlen (Für 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); // Rufe die Sortiermethode in der Arrays-Klasse des java.util-Pakets auf for (int h : heights) System.out.println(h); } } }

[Repräsentatives Paket] · Java.lang: Grundlegende Klassen (System, Integer, Math, Object, String, Runtime usw.) Wird automatisch importiert -Java.util: Klassen, die für die Programmierung geeignet sind -Java.math: Klassen, die sich auf Zahlen beziehen -Java.net: Klassen, die kommunizieren -Java.io: Klassen, die die sequentielle Verarbeitung von Daten durchführen

Objekt orientierte Programmierung)

・ Konzept der Komponentisierung bei der Entwicklung von Software ・ Seien Sie vorsichtig, denn was Sie lernen und wie Sie es lernen, unterscheidet sich von der grundlegenden Grammatik. ➡︎ Lernen Sie die Idee, die richtige Antwort zu erreichen, nicht die richtige Antwort ・ Unterteilen des Programms in Klassen für jedes Objekt, das in der realen Welt erscheint ⬅︎➡︎ Prozedurale Programmierung (: Sie müssen die Prozedur definieren, um sie zeilenweise auszuführen.) ・ Da in jeder Klasse "Verantwortung (Verantwortung für das Handeln und Verantwortung für die Aufbewahrung von Informationen)" geschrieben ist, besteht keine Notwendigkeit, jede einzelne zu unterweisen. ➡︎ Jeder hat ein Attribut und eine Operation, um eine Aufgabe auszuführen

[verdienen] ((1) Es ist möglich, eine Programmentwicklung zu realisieren, die für den Menschen leicht zu verstehen ist.) (② Programmwechsel wird einfach) (③ Es ist einfach, einen Teil des Programms umzuleiten.) "Einfache, lustige und gute Dinge können gemacht werden" ➡︎ Weil es nur eine Geschichte ist, in der "reale Objekte und ihre Bewegungen in der virtuellen Welt auf einem PC neu erstellt werden"

① Vererbung ➡︎ Erstellen Sie neue Teile, indem Sie vorhandene Teile umleiten

② Polymorphismus ➡︎ Ähnliche Teile können auf die gleiche Weise behandelt werden

③ Kapselung ➡︎ Machen Sie das angegebene Teil für Attribute und Operationen nicht verfügbar

Beispiel

-Performer der virtuellen Welt (: Computerspeicherbereich) (Klasse erstellen) ➡︎ Instantifizierung ➡︎ Mit anderen Worten, der im Heap zugewiesene Speicherbereich (: dieser Bereich)

Klassenname Variablenname = neuer Klassenname (); // Instanz erstellen Variablenname. Feldname = Wert; // Feld zuweisen Variablenname. Methodenname (); // Methode aufrufen

public class Kamisama {
  public static void main(String[] args) {
    Sword s = new Sword();

s.name = "Chun Chun Seiba"; s.damage = 10;

Held h1 = neuer Held (); // Instanz generieren - Hier wird der Held geboren h1.name = "Chun Chun Maru"; // Feld zuweisen h1.hp = 100;
h1.sword = s; --sword Ersatzinstanz für s

    Hero h2 = new Hero();

h2.name = "Chanchanmaru"; h2 = h1; // Kopiere h1 nach h2 - Adressinformationen werden kopiert (nicht die Instanz selbst) h2.hp = 200;

System.out.println ("Brave" + h1.name + "wurde geboren.") System.out.println ("Ausrüstete Waffe ist" + h1.sword.name + "."); - Brave h1 "no" Schwert "no" name h1.sit (3); // Methode aufrufen h1.slip(); w.heal(h1); System.out.println ("Mushroom Alien" + m1.suffix + "ist erschienen."); h1.attack(); h1.run(); } }

-Objektorientierung erleichtert das Verständnis des Inhalts der "Hauptmethode" Reference Referenz ➡︎ In der Variablen enthaltene Adressinformationen -JVM führt eine "Referenzauflösung" oder "Adressauflösung" durch (: Adressinformationen von Variablen und Zugriffsadressen abrufen) ・ Unabhängigkeit ➡︎ Wenn dieselbe Klasse unterschiedliche Instanzen hat, sind sie nicht betroffen.

Klasse

Definieren Sie basierend auf dem Klassendiagramm (: Entwurfsdiagramm) ➡︎ Eine von UML (Unified Modeling Languages)

Definition

public class Hero {// Klassendeklaration String name; // Attributdeklaration int hp; Schwert Schwert; - Ausrüstungsinformationen

  public void attack() {

System.out.println (this.name + "angegriffen mit" + this.sword.name + "."); System.out.println ("5 dem Feind beschädigt."); }

public void sleep () {// Betriebserklärung - Methode this.hp = 100; // dieses Schlüsselwort System.out.println (this.name + "ausgeruht und wiederhergestellt."); } public void sit (int sec) {// Argument für die Anzahl der zu sitzenden Sekunden this.hp + = sec; // Für einige Sekunden wiederherstellen, um sich zu setzen System.out.println (this.name + "is" + sec + "sit for a second."); System.out.println ("HP hat wiederhergestellt" + Sek + "Punkte wiederhergestellt."); } public void slip() { this.hp- = 5; // HP nimmt durch Fallen ab System.out.println (this.name + "ist gefallen."); System.out.println ("5 Schaden"); } public void run() { System.out.println (this.name + "ist entkommen."); System.out.println ("Game Over"); System.out.println ("Die letzte HP war" + this.hp + "."); } ---- public class Matango { int hp; int level = 10; // Geben Sie den Anfangswert des Attributs an final int LEVEL = 10; // Konstantes Feld (Großbuchstabe empfohlen) char suffix;         } ---- public class Sword { String name; int damage; } ---- public class Wizard { String name; int hp;

public void heal (Hero h1) {--Wenn eine Methode als Argument verwendet wird h1.hp += 10; System.out.println (h1.name + "10 HP wiederhergestellt"); } }

Field Feld ➡︎ Im Klassenblock deklarierte Variablen (Name, HP hier) ・ Konstantes Feld ➡︎ Wert nicht wiederbeschreibbare Variable (LEVEL hier)

Erklärung

Held h; // Klassentyp Variablenname Variablenname;

Die Instanz wird verwendet, indem sie in eine Klassentypvariable eingefügt wird ➡︎ Identifizieren einer bestimmten Instanz als Programm aus mehreren Instanzen mit demselben Namen, die in der virtuellen Welt vorhanden sein können

Konstrukteur

Methode, die nach der Instanziierung automatisch ausgeführt wird ➡︎ Kann nicht direkt aufgerufen werden (JVM macht es basierend auf dem Code)

[Bedingungen] ① Der Methodenname entspricht dem Klassennamen (2) Die Methodendeklaration enthält keinen Rückgabewert (einschließlich void).

öffentlicher Klassenklassenname { Name der Klasse () { Inhalte werden automatisch ausgeführt } }

[Anfangswert des Feldes] Numerischer Typ (int, kurz, lang usw.): 0 Zeichentyp: \ u0000 Boolescher Typ: false Array-Typ (int [] usw.): null Klassentyp (String usw.): null

public class Hero {
  String name;
  int hp;
  Sword sword;

  public void attack() {

Kürzung } public void sleep() { Kürzung } public void sit(int sec) { Kürzung } public void slip() { Kürzung } public void run() { Kürzung } public Hero () {// Methode, die nach der Instanziierung automatisch ausgeführt wird this.hp = 100;
} } ---- public Hero (String name) {// Eine Zeichenfolge als Argument empfangen * Sie müssen einen Namen für die Instanz festlegen this.hp = 100; this.name = name; - Namefeld mit Argumentwert initialisieren } public Hero () {--Erstellt einen Konstruktor, der keine Argumente akzeptiert this.hp = 100; this.name = "sample"; } ---- public class Kamisama { public static void main(String[] args) { Held h1 = neuer Held ("Pyonpyonmaru"); - Führen Sie gleichzeitig mit dem Argument aus, das an den Konstruktor übergeben werden soll

Held h2 = neuer Held (); - Da es kein Argument gibt, wird "Sampuru" genannt. h2.hp = 200; }    } ---- public class Kamisama { public static void main(String[] args) { Held h1 = neuer Held (); --HP100 wird vom Konstruktor gesetzt h1.name = "Pyonpyonmaru"; h1.sword = s;

	Hero h2 = new Hero();

h2.name = "Chun Chun Maru"; h2.hp = 200; - Kann mit neuen numerischen Einstellungen geändert werden

System.out.println ("Brave" + h1.name + "wurde geboren."); System.out.println ("HP ist" + h1.hp + "."); System.out.println ("Brave" + h2.name + "wurde geboren."); System.out.println ("HP ist" + h2.hp + "."); } } -Sie müssen den Anfangswert in der Hauptmethode nicht einstellen. ・ Mit dem Konstruktor ist auch eine Überladung (Mehrfachdefinition) möglich -Wenn es mehrere Konstruktoren gibt, beurteilt die JVM anhand der Argumente (nur einer funktioniert).

[Ausnahme] Wenn in der Klasse kein Konstruktor definiert ist Standardkonstruktor (: Kein Argument & Verarbeitungsinhalt) wird beim Kompilieren automatisch hinzugefügt

this (argument); // Bitten Sie die JVM, einen anderen Konstruktor in derselben Klasse aufzurufen

public Hero(String name) {
  this.hp = 100;
  this.name = name;
}
public Hero() {

dies ("Probe"); } Muss am Kopf des Konstruktors geschrieben werden Beachten Sie, dass "this.member name" völlig anders ist als "

Recommended Posts

[Java] Ich habe die grundlegende Grammatik persönlich zusammengefasst.
Grundlegende Java-Grammatik
Grundlegende Java-Grammatik
Grundlegende Java-Grammatik
Ich habe den Sammlungsrahmen zusammengefasst.
Ich habe die Typen und Grundlagen von Java-Ausnahmen zusammengefasst
[Java] Ich habe versucht, die Kombination zu implementieren.
Ich habe den Konstruktor (Java) studiert.
Ich habe die grundlegende Grammatik von Ruby kurz zusammengefasst
Ich habe das Java-Framework "Quarkus" ausprobiert.
Seit ich Oracle Java Bronze bestanden habe, habe ich die Umrisse des Tests zusammengefasst.
Ich habe das neue Yuan-Problem in Java ausprobiert
Grundlegende Java-Grammatik sollten Sie zuerst kennen
Ich ging zum Java Women's Club # 1
Ich habe versucht, die Grammatik von R und Java zu übersetzen [Von Zeit zu Zeit aktualisiert]
Java-Ingenieure im Vergleich zum Erlernen der grundlegenden Grammatik von Ruby jetzt Teil 1 (Basic, Variablen)
Ich habe versucht, eine Standardauthentifizierung mit Java durchzuführen
Ich habe die Eigenschaften von Java und .NET verglichen
[Java] Grundstruktur
[Java] [Basic] Glossar
Warum Java die Zielsprache war, hasse ich
Ich kann mich nicht an die Eingabe / Ausgabe von Textdateien in Java erinnern, also habe ich sie zusammengefasst.
Java-Übung [Basic]
Probieren Sie Progate Free Edition [Java I]
Java-Ingenieure vergleichen nun, um die grundlegende Grammatik von Ruby Teil 2 (Klassen, Methoden) zu lernen.
[Java] Ich möchte die Differenz zum Datum berechnen
Ich habe das Anzeigeformat der JSON-Antwort von Rails zusammengefasst
Ich konnte es nach dem Upgrade der Java-Version nicht ausführen
Ich habe versucht, die Methode der gegenseitigen Teilung von Eugrid in Java zu implementieren
Über Android grundlegende Grammatik
Ich habe zuerst Java touched berührt
Java-Technologie leicht zusammengefasst
Ich habe zuerst Java touched berührt
Java Grundwissen Memo
[Java] Datentyp ①-Basistyp
Ich habe zuerst Java touched berührt
Grundlegende Java-Datumsmanipulation
Grundlegende Java-Namenskonventionen
Java-Lernnotiz (grundlegend)
Ich habe zuerst Java berührt
[Java] Grundlegende Methodenhinweise
Java-Grunddatentypen
Grundlegende Java OOps-Konzepte
Ich habe [Klonmethode für Java-Arrays] als Klonmethode in Java-Arrays übersetzt.
[JDBC] Ich habe versucht, von Java aus auf die SQLite3-Datenbank zuzugreifen.
Ich habe versucht, die Grundlagen von Kotlin und Java zusammenzufassen
Ich möchte die Java 8 DateTime-API (jetzt) langsam verwenden.
Hier sind einige Artikel, auf die sich Anfänger in der Programmierung bezogen haben.
Ich habe versucht, die CameraX-Bibliothek mit Android Java Fragment zu verwenden
[Java] Ich habe über die Vorzüge und Verwendungen von "Schnittstelle" nachgedacht.
Ich möchte die if-else-Anweisung für bedingte Verzweigungen in Java vereinfachen