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"
Die Quelldateierweiterung lautet ".java".
$ javac Quelldateiname ① .java Quelldateiname ② .java
$ javac Split.java SplitLogic.java
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 -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
öffentliche Klasse Klassenname {* Klassenname beginnt mit dem oberen Alphabet // Klassenblock public static void main (String [] args) {// Methodenblock } } Doppelstruktur mit Blöcken
Datentyp Variablenname;
[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"
Datentyp Variablenname = Wert;
String lik = "cat"; // Variablen initialisieren * Gleichzeitige Deklaration und Zuweisung liks = "inu"; // Neuzuweisung * "cat" wird überschrieben System.out.println (Likes + "Likes");
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
Besteht aus Operanden und Operatoren
・ 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.
Sonderzeichen, die in Zeichenfolgen- und Zeichentypen verwendet werden ¥ "Doppeltes Anführungszeichen ¥ 'Einfaches Angebot ¥ \ Yen-Symbol (¥) \ N Zeilenumbruch
Berechnungsverarbeitung nach der Formel nach den drei Prinzipien
Der Operator führt die Berechnung mit dem Operanden durch und gelangt zum Berechnungsergebnis.
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
Wenn es mehrere Operatoren mit derselben Priorität gibt, hat die feste Richtungsreihenfolge für jeden Operator Vorrang.
Bezieht sich auf das in der Formel verwendete Symbol
・ Alles von links · Höhere Priorität
・ Ähnlich von links · Höhere Priorität
・ Alles von rechts · Niedrige Priorität ・ Das Letzte, was zu tun ist
・ 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)
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
int e = (int) 7.7; // Cast-Operator
(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
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.
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");
・ Besteht aus bedingten Ausdrücken und Blöcken ・ Der Mechanismus ähnelt JavaScript
Zeichenfolgentypvariable .equals (zu vergleichende Zeichenfolge)
if (str.equals ("Guten Morgen")) ・ "==" Zeigt Gleichheit an ・ Zeichenketten können jedoch nicht mit "==" verglichen werden.
① if-else-Anweisung ② if-Anweisung
➡︎ Wenn der else-Block leer ist, kann er vollständig weggelassen werden
➡︎ 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
➡︎ Präfixbeurteilung (bedingten Ausdruck vor Ausführen des Blocks auswerten)
do {
temp++;
System.out.println ("Es ging einmal hoch"); } while(temp > 27); ➡︎ Postfix-Beurteilung (Auswertung des bedingten Ausdrucks nach Ausführung des Blocks)
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
・ Ähnlich wie JavaScript ① break-Anweisung ② Aussage fortsetzen
①while (true) {
wird bearbeitet }
②for (;;) {
wird bearbeitet } Setzen Sie die Schleife absichtlich fort, sofern sie nicht unterbrochen wird
Ähnlich wie bei JavaScript
Datentyp [] Array-Variablenname;
int[] scores;
Name der Array-Variablen = neuer Datentyp [Wert];
scores = new int[5];
① 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};
Array-Variablenname.Länge
int num = scores.length;
String variable name.length ();
String str = "Java lernen"; System.out.println(str.length());
ArrayIndexOutOfBoundsException
Weil Sie ein Element verwenden, das nicht existiert
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 }
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 } }
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 (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.
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
NullPointerException
Tritt auf, wenn eine Array-Variable verwendet wird, die null enthält
Datentyp [] [] Array-Variablenname = neu Datentyp [Anzahl der Zeilen] [Anzahl der Spalten];
int[][] scores = new int[3][3];
Name der Arrayvariablen [Zeilenindex] [Spaltenindex]
System.out.println(scores[1][1]);
・ 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.
① 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
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)
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); }
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.
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
①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)
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
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
-Wert, der beim Starten des Programms an das Programm übergeben wird -Der Wert wird an die Hauptmethode übergeben
Argumentliste für Java-Programmnamen
java Sample abc def ghi
java Sample 1 2 3
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); // 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.
Ein Mechanismus, der für jede Klasse in Gruppen klassifiziert und verwaltet werden kann
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
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.
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
・ 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
・ 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"
-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.
Definieren Sie basierend auf dem Klassendiagramm (: Entwurfsdiagramm) ➡︎ Eine von UML (Unified Modeling Languages)
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)
Mitglied
➡︎ Ein allgemeiner Begriff für Felder und Methoden
・ Lassen Sie this
nicht weg (um Fehlfunktionen zu beseitigen)String variable name =" string ";
instanziiert werden, ohne den neuen Operator zu verwenden.
・ Hat-eine Beziehung
➡︎ Eine Klasse verwendet eine andere Klasse als FeldHeld 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
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