Einführung in Java für Anfänger | Worn Off Keys | Skillshare

Playback-Geschwindigkeit


1.0x


  • 0.5x
  • 0.75x
  • 1x (normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Einführung in Java für Anfänger

teacher avatar Worn Off Keys

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Einheiten dieses Kurses

    • 1.

      Einführung

      0:33

    • 2.

      IntelliJ installieren

      2:23

    • 3.

      Hallo Welt

      5:46

    • 4.

      Kommentare

      1:20

    • 5.

      Variablen

      6:57

    • 6.

      Benutzereingabe

      3:59

    • 7.

      Arithmetische Betreiber

      4:41

    • 8.

      Wenn anders wenn anders wenn

      7:28

    • 9.

      Switch-Statements

      3:25

    • 10.

      Comparison

      2:02

    • 11.

      Logischer Bediener

      3:20

    • 12.

      Während der Schleifen

      2:29

    • 13.

      Tun während der Schleifen

      2:28

    • 14.

      Für Schleifen

      1:56

    • 15.

      Brechen und fortfahren

      1:45

    • 16.

      Calculator

      7:01

    • 17.

      Methoden

      5:26

    • 18.

      Methode Überladung

      1:35

    • 19.

      Umfang

      2:18

    • 20.

      Ternärer Betreiber

      2:08

    • 21.

      Arrays

      4:43

    • 22.

      Für jede Schleife

      2:03

    • 23.

      Multidimensionale Arrays

      5:07

    • 24.

      Varargs

      2:38

    • 25.

      Konstanten und Casting

      4:11

    • 26.

      Gemeinsame String

      3:45

    • 27.

      Escape Sequenzen

      2:18

    • 28.

      Die Mathematikklasse und zufällige Zahlen

      3:55

    • 29.

      Primitive vs Referenztyp Variablen

      8:39

    • 30.

      Objektorientierte Programming

      4:43

    • 31.

      Konstrukteure

      3:12

    • 32.

      Das "diese" Schlüsselwort und Eigenschaften

      4:19

    • 33.

      Verkapselung, Abstraktion, Getter und Setter

      7:07

    • 34.

      Vererbung

      3:52

    • 35.

      Polymorphismus

      3:38

    • 36.

      Das "statische" Schlüsselwort

      4:07

    • 37.

      Abstrakte Kurse

      3:20

    • 38.

      Schnittstellen

      3:21

    • 39.

      Instanz Von

      1:40

    • 40.

      Enums

      7:23

    • 41.

      Versuche endlich zu fangen

      5:36

    • 42.

      Fehler beim Verwerfen von Fehlern

      2:15

    • 43.

      Listen und Array

      6:25

    • 44.

      Karten und Hash

      4:14

    • 45.

      Ein Glas erstellen

      3:07

    • 46.

      Battleship Projekt Intro

      1:13

    • 47.

      Dateien und Koordinaten

      2:33

    • 48.

      Schiffe

      8:09

    • 49.

      Spieler

      10:50

    • 50.

      Fertigstellen des Spiels

      22:53

    • 51.

      Schlussbemerkung

      0:11

  • --
  • Anfänger-Niveau
  • Fortgeschrittenes Niveau
  • Fortgeschrittenes Niveau
  • Jedes Niveau

Von der Community generiert

Das Niveau wird anhand der mehrheitlichen Meinung der Teilnehmer:innen bestimmt, die diesen Kurs bewertet haben. Bis das Feedback von mindestens 5 Teilnehmer:innen eingegangen ist, wird die Empfehlung der Kursleiter:innen angezeigt.

1.801

Teilnehmer:innen

14

Projekte

Über diesen Kurs

Struggling du dich mit Java Programmieren zu lernen?

Als ich 2011 das erste Mal Java lernen begann, war es ein Alptraum. So viele neue Konzepte und Ideen, um meinen Kopf herumzuwickeln.

Deshalb habe ich diesen Kurs gemacht: Um ein einfaches Schritt-für-Schritt-System für das Lernen von Java FAST zu erstellen.

Mit mehreren Projekten und klaren Erklärungen hilft dir dieser Kurs Java-Grundlagen zu meistern, auch wenn du noch nie zuvor programmiert hast.

Worauf wartest du also noch? LASS UNS LOSLEGEN!

Triff deine:n Kursleiter:in

Teacher Profile Image

Worn Off Keys

Kursleiter:in

Hey! My name is Alexzander Flores and I'm a self-taught software developer. I started programming in 2008 and since then it has been a major part of my life.

I frequently used courses to learn a lot of what I know, so I'm now creating my own courses to help others in a similar way.

Vollständiges Profil ansehen

Skills dieses Kurses

Entwicklung Programmiersprachen Java
Level: Beginner

Kursbewertung

Erwartungen erfüllt?
    Voll und ganz!
  • 0%
  • Ja
  • 0%
  • Teils teils
  • 0%
  • Eher nicht
  • 0%

Warum lohnt sich eine Mitgliedschaft bei Skillshare?

Nimm an prämierten Skillshare Original-Kursen teil

Jeder Kurs setzt sich aus kurzen Einheiten und praktischen Übungsprojekten zusammen

Mit deiner Mitgliedschaft unterstützt du die Kursleiter:innen auf Skillshare

Lerne von überall aus

Ob auf dem Weg zur Arbeit, zur Uni oder im Flieger - streame oder lade Kurse herunter mit der Skillshare-App und lerne, wo auch immer du möchtest.

Transkripte

1. EINFÜHRUNG: Java ist eine der am einfachsten zu erlernenden Programmiersprachen eignet sich daher perfekt für Anfänger. In diesem Kurs führe ich Sie Schritt für Schritt durch Programmierung und Java. Am Ende dieses Kurses erstellen Sie mit Java zu echten Programmen. Und Sie haben ein solides Verständnis der Grundlagen und Grundlagen der Programmierung. Ofenprogrammierung in Java seit 2011. Und ich benutze sogar Java, um mein eigenes Startup für Gameserver zu erstellen , und 14, ich habe einige Jahre lang ein Vollzeiteinkommen aus ich habe einige Jahre lang ein Vollzeiteinkommen aus seinem Projekt erzielt, bevor ich es verkaufte. Ich habe also viel Erfahrung mit Java und freue mich darauf, mein Wissen während dieses Kurses mit Ihnen zu teilen . 2. Installieren von IntelliJ: Bevor wir Java lernen können, brauchen wir einen Ort, an dem wir unseren Code tatsächlich schreiben und ausführen können . Dies wird als IDE bezeichnet, die für Integrated Development Environment steht. Das ist eine super ausgefallene Art zu sagen, dass es sich einen Texteditor handelt, der Ihren Code auch in ein echtes Programm umwandelt. Jetzt wird der Industriestandard für IDEs und Java als Intelligenz bezeichnet. So können Sie einfach einfach intelligenten Google herunterladen. Dies ist eine freie Software. Klicken Sie hier auf den oberen Link und stellen Sie sicher, dass Sie Community Edition auswählen. Und sie wählen auch das richtige Betriebssystem aus, auf dem Sie sich befinden. Ich bin unter Windows, was der Standardwert ist. Also bleibe ich hier auf der Windows-Registerkarte. Ich kann dann auf Download klicken. Und dein Download sollte beginnen. Und bei den meisten Browsern müssen Sie zustimmen , dass Sie diese Datei herunterladen möchten. Sobald der Download abgeschlossen ist, können Sie direkt hier darauf klicken. Hier haben wir den eigentlichen Installer. Dies ist ein ziemlich Standardinstallationsprogramm. Nun, du klickst einfach etwa 800 Mal auf Weiter und dann solltest du loslegen. Ich gehe einfach durch und behalte alles hier, die Standardeinstellung. Und dann werde ich die Aufnahme pausieren , während die Installation stattfindet. Nach der Deinstallation können wir hier auf dieses Kontrollkästchen klicken und dann schließlich auf Fertig stellen klicken. Sobald Sie es geöffnet haben, sollten Sie auf eine ähnliche Seite gesendet werden . Sie möchten auf Neues Projekt klicken. Jetzt möchten Sie auf dieser Seite sicherstellen, dass Sie oben Java ausgewählt haben. Das sollte der Standardwert sein. Und für das Projekt-SDK können wir fortfahren und den Standardwert auswählen. Wenn Sie jedoch keinen Standardwert sehen, können Sie ein JDK herunterladen. So können wir darauf klicken und Sie können die gewünschte Version auswählen. Jede Version sollte es tun. Wir werden nichts tun. Das ist ein sehr versionsabhängiger Prozesskurs. Klicken Sie einfach auf Download. Angenommen, Sie haben bereits ein SDK, können wir einfach auf Weiter und dann wieder auf Weiter klicken. Und dann können wir endlich einen Weg zu unserem Projekt und einen Namen geben . Wir können hier auf die drei Punkte klicken, um zu stöbern. Ich wähle hier meinen Java-Ordner und erstelle einen neuen Ordner. Dieser wird als Workspace bezeichnet. Hier drin. Ich wähle es einfach aus und klicke dann auf Okay. Jetzt ist der Projektname standardmäßig Workspace. Das ist in Ordnung. Ich fahre weiter und klicke auf Fertig stellen. Jetzt ist intelligent endlich offen. Auf der linken Seite haben wir dieses Projekt , das wir durch Klicken umschalten können. Dies zeigt alle Dateien und Ordner in unserem Workspace an. Jetzt wird überall sonst in diesem riesigen Panel hier unser Code angezeigt. Aber wir haben momentan keinen Code geöffnet. Aber jetzt, da die Intelligenz erfolgreich installiert wurde, können wir mit dem nächsten Video Code schreiben . 3. Hallo Welt: Wir sind jetzt bereit, endlich an unserem allerersten Java-Programm zu arbeiten . Und es ist üblich, den Text Hello World einfach als erstes Programm auf den Bildschirm zu drucken , egal welche Sprache oder welches Lernen das hier fortsetzen wird, navigieren Sie zum Quellordner. Und hier müssen wir einen neuen Ordner darin erstellen. Sie können mit der rechten Maustaste klicken, zu Neu gehen und Paket auswählen. Ein Paket ist im Grunde nur ein Ordner. Und ein Java-Programmierer verwendet Pakete, um alle Ihre Codedateien zu organisieren. Sie können mehrere Codedateien innerhalb von Paketen haben und Sie könnten mehrere Pakete in Ihrem Projekt haben. Im Moment arbeiten wir nur in einem Paket zusammen. Also mach weiter und klicke hier mit der linken Maustaste. Wir müssen jetzt einen Paketnamen eingeben , und dies muss eindeutig sein. Jetzt ist es üblich, eine umgekehrte Domain zu verwenden. Zum Beispiel com.google.com.YouTube. Aber offensichtlich sollte dies nicht eine der beliebtesten Domains sein, sondern Ihre eigene Domain. Und wenn wir keine Domain besitzen, sich keine Sorgen, das müssen Sie nicht. Sie können technisch gesehen alles eingeben, was Sie wollen. Aber um zum Beispiel den Standard-Namenskonventionen zu folgen , machen wir etwas wie com dot alex dot Flores oder so etwas anderes. Offensichtlich hat das meinen Namen und du könntest deinen eigenen Namen benutzen , wenn du willst oder etwas komplett erfundenes. Ich nenne dieses Paket genau die Domain, die ich besitze. So zum Beispiel Com Dot abgenutzte Schlüssel. Wenn ich nun die Eingabetaste drücke, sehen wir, dieser Ordner genau hier erstellt wurde. Jetzt kann ich hier meine eigene Datei erstellen, damit ich mit der rechten Maustaste klicken und zu einer neuen Java-Klasse wechseln kann. Und hier haben wir ein paar verschiedene Möglichkeiten. Wir bleiben bei einer Standardklasse. Ich erkläre den Unterschied zwischen all diesen in zukünftigen Videos. Der Klassenname, den ich diesen Hello World nennen werde, mit einem Kapital H und einem Kapital W und ohne Leerzeichen. Es ist sehr wichtig, dass keine dieser Dateien Leerzeichen in ihrem Namen hat. Sobald Sie die Eingabetaste gedrückt haben, haben Sie hier ein paar Codeabschnitte geschrieben. Wenn Sie diesen Ordner erweitern, sehen Sie jetzt die Hallo Weltklasse genau hier. Jetzt werden die Details dessen, was jedes dieser Dinge tut, in einem zukünftigen Video behandelt. Im Moment werden wir diesen vorhandenen Code einfach hinzufügen. Wenn Sie nun genau hier auf diese öffnende geschweifte Klammer klicken , können Sie die Eingabetaste drücken und Sie können feststellen, dass wir automatisch mit der Registerkarte versehen sind. Und sobald sie jetzt tabbing, ist es in jeder Programmiersprache sehr wichtig , da Ihr Code dadurch viel einfacher zu lesen ist. Und der Vorteil davon wird später viel deutlicher , sobald wir viel größere Dateien haben. Aber im Moment müssen wir uns keine Sorgen um große Dateien machen. Unser Ziel ist es gerade, den Text Hello World auf den Bildschirm zu drucken. Ich schreibe jetzt einen Code. Geh weiter und folge mir mit und schmeiß diesen Kurs. Wir werden verstehen, was jeder Teil dieses Codes bewirkt. Aber das meiste davon wird derzeit nicht erklärt werden. Zu Beginn kann ich sagen, dass öffentliche, statische, nichtig, Haupt- und dann Klammern und Endklammern automatisch generiert werden sollten. Und danach können wir ein Leerzeichen und dann eine geschweifte Klammer setzen , und ähnlich den Klammern wird automatisch die endende geschweifte Klammer generiert. nun zwischen den beiden geschweiften Klammern drücken, wenn Sie die Eingabetaste oder C drücken, gab es auch noch einmal Tabbed End. Wir müssen zurück in die Klammern gehen und Zeichenfolge mit einem großen S-Raum eingeben. Dann werden eine eckige Klammer und eine eckige Endklammer hinzugefügt. Und dann können wir Bögen eintippen. Jetzt haben wir gerade viel Code geschrieben und das meiste davon sieht für Sie sehr verwirrend aus. Mach dir darüber überhaupt keine Sorgen. Solange dein Code so aussieht und es nirgendwo rote, scharfe Zeilen gibt, kannst du loslegen. Und meine roten, schnörkeligen Linien habe ich so etwas gemacht. Hier sehen wir diese rote Schnörkellinie genau hier. Dies ist eine Intelligenz, um uns mitzuteilen , dass unser Code einen Fehler enthält. Wir bewegen den Mauszeiger darüber. Es wird sagen, dass eine endende Klammer wie erwartet ist. Also kann ich hier einen hinzufügen, und dann verschwindet dieser Fehler. Wenn Sie gerade verwirrt sind, machen Sie sich keine Sorgen, alles wird erklärt, während wir den gesamten Kurs fortsetzen. Der nächste Schritt wird ihr jedoch jetzt erklärt, unser Ziel ist es, etwas auf die Konsole zu drucken. Wir können dies tun, indem wir ein System mit einem Kapital S, Dot Out, Dot Print LN eingeben. Wir können eine Klammer hinzufügen und es werden automatisch eine Endklammer hinzugefügt. Darin können wir ein doppeltes Zitat hinzufügen und ähnlich wie alles andere, und das endende Doppelzitat wird hinzugefügt. Jetzt haben wir am Ende einen Fehler hier. Wenn ich den Mauszeiger darüber fahre, sehen wir, dass ein Semikolon erwartet wird. Ich kann einen hinzufügen und hier, ähnlich einem Punkt mit einem englischen Satz, beendet Semikolon eine Anweisung oder einen Java-Satz. Am Ende der meisten Zeilen fügen Sie ein Semikolon hinzu. Und Sie haben vielleicht bemerkt , dass wir hier in Zeile sechs oder sieben kein Semikolon haben . Der Grund dafür wird später erläutert. Aber im Allgemeinen sollten die meisten Codezeilen, die Sie schreiben werden, am Ende ein Semikolon haben. In diesen doppelten Anführungszeichen können wir den gewünschten Text hinzufügen. Und während wir zum Beispiel auf die Konsole gedruckt haben , kann ich Helloworld hinzufügen. Dann kann ich von hier aus oben zu Run gehen, denn dann klicke hier auf Run. Alternativ können Sie eine hier angezeigte Verknüpfung verwenden. Wir kriegen dieses Pop-Up genau hier. Wir wollten auf Hello world klicken. Und jetzt sehen wir, dass es sich baut. Jetzt können wir einfach hier auftauchen. Ich werde diese Höhe senken , nur damit ich mehr Platz habe , um mit dem Code zu arbeiten. Aber wir sehen den Text Hello world, und dass der Prozess mit einem Exit-Code von 0 abgeschlossen wurde. Die 0 einer Führungskraft bedeutet im Grunde, dass alles gut gelaufen ist und es keine Probleme gab. Wenn wir möchten, können wir verschiedene Ausrufezeichen innerhalb der Zeichenfolge hinzufügen . Und anstatt all diese Dropdowns hier zu durchlaufen, können wir einfach auf diesen grünen Pfeil oben rechts klicken . Oder Sie können die Umschalttaste plus F2 drücken, je nachdem, was Sie bevorzugen. Wenn ich darauf klicke, sehen wir jetzt , dass es unser Projekt neu aufbauen wird. Und jetzt sehen wir Hello World mit Ausrufezeichen. Danach. Sie haben jetzt Ihr allererstes Java-Programm abgeschlossen. Ich weiß, dass ein Großteil dieses Codes gerade sehr verwirrend aussieht, aber alles wird erklärt wenn wir weiter gehen. 4. Kommentare: Beim Programmieren können wir nicht einfach alles schreiben, was wir wollen, da dies kein gültiger Java-Code ist. Und wenn ich also den Mauszeiger darüber fahre, werden diese sagen , dass es Fehler im Zusammenhang mit diesem Code geben wird. Aber manchmal möchten Sie möglicherweise verschiedene Notizen hinzufügen oder wurden ordnungsgemäß als Kommentare in Ihren Code bezeichnet. Dies wird Ihnen oder Ihren Mitarbeitern helfen besser zu verstehen, was innerhalb des Kodex passiert. Zum Beispiel kann ich hier zwei Schrägstriche machen, und dann kann ich Hello World drucken auf der Konsole sagen. In genau diesem Beispiel möchten wir wahrscheinlich keinen Kommentar für diese Zeile hinzufügen, möchten wir wahrscheinlich keinen Kommentar für diese Zeile hinzufügen da die Zeile ohnehin ziemlich selbsterklärend ist. Aber so fügst du einen Kommentar richtig ein. Dies hätte keine Auswirkungen auf das Programm oder das, was auf die Konsole gedruckt wird. Es ist nur als Hinweis für andere Programmierer und Sie selbst da. Jetzt, während wir diesen Kurs durchlaufen, werden Sie sehen, was einen Kommentar angehängt haben sollte und was nicht. Auch hier ist eine Zeile wie diese sehr selbsterklärend, daher müssen wir keine Kommentare hinzufügen. Alternativ können wir alternativ mehrzeilige Kommentare hinzufügen, indem wir einen Schrägstrich machen. Und dann macht ein Endstern-Vorwärts-Schrägstrich und Intelligent tatsächlich das Ende für uns. Hier kann ich sagen, dass dies ein Kommentar ist. All dieser Text hier ist ausgegraut weil er technisch nicht Code ist, sondern ein Kommentar. 5. Variablen: Wir werden jetzt über eines der wichtigsten Konzepte sprechen , wenn es um die Programmierung geht. Und das ist das Konzept von Variablen. ob Sie sich eine Variable als einen Container vorstellen , der einen Wert enthält. Arbeitsspeicher oder der Speicher Ihres Computers besteht im Grunde genommen aus einer Reihe von Regalen , die diese Container enthalten. Jetzt hat jeder Container einen Namen und der darin enthaltene Wert kann jederzeit gelesen oder geändert werden. Erstellen wir zum Beispiel eine ganze Zahl, die im Grunde nur eine ganze Zahl ist. Ich kann „int space“ sagen. Und jetzt müssen wir unsere Variable nennen. Dies sollte etwas sein , das beschreibend ist. Wir sollten keine Variablen namens a oder X oder solche Dinge haben , die nicht sehr beschreibend sind. In diesem Fall möchte ich, dass dies mein aktuelles Alter hält. Also gebe ich das Alter ein. Also nenne ich dieses variable Alter. Du kannst es im Grunde alles nennen, was du willst. Aber es gibt einige Regeln, die ich später in diesem Video durchgehen werde. Danach fügen wir ein Gleichheitszeichen hinzu. Und nach dem Gleichheitszeichen können wir eine beliebige Zahl hinzufügen. In diesem Fall wird es 28 sein. Und schließlich müssen wir in einem Semikolon hinzufügen , was hier eigentlich passiert? Nun, der int wird Java im Grunde sagen, dass wir eine Variable erstellen möchten, und dies wird einen ganzzahligen Werttyp enthalten. Es gibt verschiedene Werte von Variablen, die gespeichert werden können , und wir werden diese später im Video behandeln. Jetzt braucht jede Variable seinen eigenen Namen. In diesem Fall geben wir ihm den Namen des Alters. Danach haben wir ein Gleichheitszeichen, das technisch als Zuweisungsoperator bekannt ist. Dies nimmt den Wert auf der rechten Seite und weist ihn der Variablen auf der linken Seite zu. Und dann haben wir natürlich das Alter und Sie können hier jede gewünschte Zahl hinzufügen. Es könnte 999 sein, es könnte 0 sein, es könnte negativ fünftausend sein. Jede ganze Zahl wird funktionieren. Aber der Einfachheit halber werde ich nur mein aktuelles Alter hinzufügen, das 28 ist. Was können wir also eigentlich mit dieser Variablen machen? Nun, das grundlegendste, was wir tun können, ist wahrscheinlich, es auf der Konsole auszudrucken. Anstatt jedes Mal system.out.print-Zeile auszuschreiben, gibt uns Intelligenz tatsächlich eine Abkürzung , da dies eine ziemlich lange Codezeile ist, die geschrieben werden muss. Also kann ich S0 UT für das System heraus eingeben. Wenn ich die Eingabetaste drücke, wird diese Codezeile automatisch für uns generiert. Jetzt werden die doppelten Anführungszeichen nicht generiert und das ist beabsichtigt. Wenn ich die doppelten Anführungszeichen und dann das Alter hinzufügen würde, in dem wir dieses Programm ausführen, sehen wir einfach das Wort Alter und unsere Konsole. Aber das wollen wir nicht. Wir möchten den Wert innerhalb der Altersvariablen sehen. Wir müssen diese doppelten Anführungszeichen entfernen, damit kein sogenannter String angezeigt wird. Eine Zeichenfolge ist im Grunde wie ein Satz oder eine Sammlung von Zeichen, etwas, das einige tatsächliche Texte ausmacht. Jetzt ohne die Anführungszeichen wird es versuchen, den Wert innerhalb der Altersvariablen zu referenzieren . In diesem Fall wird es in den zuvor erwähnten Container gelangen , und es wird den Wert von 28 herausziehen und ihn dann an den Kunden senden. Binde uns wieder weit. Wir sollten jetzt 28 in der Konsole sehen , wie wir es hier tun. Das ist ein Beispiel dafür, was wir mit Variablen machen können. Wir können auch einen Wert neu zuweisen. Nehmen wir zum Beispiel an, ich habe Geburtstag, ich könnte sagen, dass Alter gleich 29 mit einem Semikolon ist. Beachten Sie, dass ich das int nicht genau hier benutze. Wenn ich das mache, liegt ein Fehler vor. Wenn ich den Mauszeiger darüber fahre, heißt es, dass das variable Alter bereits definiert wurde. Im Grunde ist der int nur da, wenn wir die Variable erstellen. Aber nachdem es erstellt wurde, können wir diesen Wert immer noch ändern , indem wir einen Wert wie diesen neu zuweisen. Um dies zu beweisen, kann ich das auf die Konsole drucken. Also OUT, ich könnte das Alter ausdrucken. Und wenn ich das mache, sehen wir jetzt 28 und auch 29300. Eine Ganzzahl ist also nur eine ganze Zahl, aber es gibt verschiedene andere Arten von Variablen. Wenn ich zum Beispiel all das lösche, kann ich jetzt sagen, dass String mit einem großen S Namen Alex entspricht. Und beachte, wie ich Schnelligkeit innerhalb von doppelten Anführungszeichen bin. Wenn ich hier einfach Alex sagen würde, würde es denken, dass wir nach einer Variablen mit diesem Namen suchen , aber es gibt keine. Um Java mitzuteilen, dass wir mit einer Zeichenfolge wie einem Satz oder einer Nachricht arbeiten Zeichenfolge wie einem Satz , einer Art Text. Dann fügen wir unsere doppelten Anführungszeichen hinzu. Java wird nicht nach einer Variablen namens Alex suchen, sondern wir behandeln dies als eine Textzeichenfolge. Jetzt können wir das natürlich auf die Konsole stellen. Ich kann den Namen ausdrucken. Und wenn ich das durchführe, sehen wir Alex in der Konsole. Es gibt jedoch viele andere Variablentypen. Zum Beispiel haben wir einen booleschen Wert. Der boolesche Jeff repräsentiert entweder einen wahren oder einen falschen Wert. Das ist alles was es tut. So kann ich zum Beispiel hier sagen, dass Programmierung gleich wahr ist. Jetzt ist true nicht in Anführungszeichen, da dies technisch gesehen keine Zeichenfolge ist. Wahr oder falsch, was die einzige andere Option für einen booleschen Wert ist , sind technisch gesehen Schlüsselwörter in Java. Wir können sie einfach in unseren Code schreiben. Wenn das zum Beispiel stimmt, kann ich jetzt programmieren. Wenn ich das jetzt ausführe, sollten wir in der Konsole wahr sehen. Natürlich können wir, genau wie ganze Zahlen, Wertstudien neu zuweisen. Ich kann also sagen, dass Programmierung gleich falsch ist. Und wenn ich das ausführe, sehen wir jetzt False in der Konsole. Jetzt lösche ich diese Zeile hier. Und du merkst vielleicht, wie ich seine Programmierung genannt habe. Ich habe ein Kleinbuchstaben I und ein Kapital P. Innerhalb von Variablennamen können wir keine Leerzeichen haben. Wann immer wir also mehrere Wörter haben, ist es üblich, etwas zu verwenden als CamelCase Notation bekannt ist. Notation von Kamel ist, wenn ein Wort geschrieben wird , wobei der allererste Großbuchstabe stattdessen Kleinbuchstabe ist. Aber dann hat jedes Wort danach am Anfang einen Großbuchstaben. Dies macht es sehr einfach, ohne Leerzeichen zu lesen. Vergleiche das mit der Notation des Kamelfalls. Dies ist offensichtlich viel schwieriger zu lesen, besonders für andere Personen, die nur Ihren Code lesen und ihn nicht geschrieben haben. Sie wissen also nicht genau, was es ist. Andere Regeln betreffen , dass Variablen keinen Namen haben können, der für die Nummer schwer ist. Normalerweise sollten Sie dies sowieso nicht tun, also ist das nicht sehr beschreibend. Aber wenn Sie es aus irgendeinem Grund unbedingt möchten, können Sie es in einem Unterstrich hinzufügen, um zu beginnen. Es wird dann zu einem gültigen Variablenname. Während wir während des gesamten Kurses vorankommen, sehen Sie weitere Beispiele für Variablennamen, damit wir uns eine bessere Vorstellung davon machen können , was eine gute Namenskonvention ist. Gehen wir nun zu anderen variablen Typen über. Als nächstes haben wir ein Zeichen, das einer Zeichenfolge ähnelt, aber nur ein einzelnes Zeichen darstellt. Zum Beispiel kann ich sagen, Buchstabe ist gleich a. Und diese verwenden einfache Anführungszeichen, keine doppelten Anführungszeichen. Wenn ich hier mehrere Charaktere hinzufügen wollte, wird es es nicht mögen und es wird sich beschweren. Diese verwenden also nur ein einziges Zeichen. Wir haben auch ein Double, das einer Ganzzahl ähnelt, aber natürlich wird dies eine beliebige Zahl sein. Es muss nicht nur eine ganze Zahl sein. Zum Beispiel beträgt das Alter 28,5. Dies wäre ein gültiges Double, aber ich verwende denselben Namen wie eine vorhandene Variable. Also sage ich das Alter als doppelt. Das ist eine andere Regel für die Benennung ist , dass jeder Name eindeutig sein muss. Sonst würde es nicht wissen , auf welche Variable Sie genau verwiesen haben. 6. Benutzereingabe: Bisher haben wir gerade Dinge auf die Konsole gedruckt. Aber was wäre, wenn wir Beiträge von den Benutzern erhalten wollten , die Ihr Programm verwenden? In diesem Fall wären es nur wir. Aber was ist, wenn wir bestimmte Zahlen oder Namen oder andere Dinge wie diese eingeben bestimmte Zahlen oder Namen oder andere Dinge und sie tatsächlich in unserem DAW-Programm verstehen lassen wollen. Um dies zu tun, werden dies ein paar Konzepte sein. Es wird etwas verwirrend und sehr außerhalb des Umfangs dieses Videos hier sein. Dies sind Konzepte, die später im Kurs erklärt werden , aber sie sind jetzt viel zu kompliziert, um sie zu erklären. Also mach weiter und codiere mit mir und sei dir bewusst, dass diese später erklärt werden. Beginnen wir also damit, etwas zu machen, das als Scanner bekannt ist. Dies wird verwendet, um Input in unserer Konsole zu empfangen. Also kann ich Scanner mit einem Kapital S sagen, ich drücke Enter. Wir werden jetzt den Scanner importieren. Dies ist etwas, das in Java integriert ist, aber um es in dieser Datei verwenden zu können, müssen wir diesen gesamten Code in diese Datei importieren. Das ist es, was diese Linie genau hier bewirkt. Jetzt haben wir einen Scanner erstellt , der den Variablen ähnelt, die wir im letzten Video angesehen haben. Wir müssen dem einen Namen geben. Ich nenne diesen Input. Dann können wir einen Zuweisungsoperator oder ein Gleichheitszeichen verwenden , um diesem einen neuen Wert zuzuweisen. Nun wird dies etwas sein, das später im Kurs viel ausführlicher erklärt wird . Aber im Moment mach einfach weiter und codiere mit. Hier. Ich sage neuen Space Scanner mit einem Kapital S und danach Klammern. Jetzt bekomme ich diesen Fehler hier. Wenn ich den Mauszeiger darüber fahre, kann der Konstruktor Scanner nicht auflösen. Auch hier wird das Konzept eines Konstruktors und warum dieser Fehler auftritt , in einem zukünftigen Video behandelt. Aber lasst uns vorerst in die Klammern gehen, es sei denn, fügen Sie ein System mit einem großen S-Punkt n hinzu. Dies sollte den Fehler beseitigen. Jetzt sind wir bereit, Eingaben von der Konsole zu erhalten . Fangen wir mit einer einfachen Zeichenfolge an. Zum Beispiel kann ich sagen, dass der String-Name als nächstes dem Eingabepunkt entspricht. Und dies wird standardmäßig eine Zeichenfolge zurückgeben. Dann kann ich die Namen der Konsole ausdrucken. Also OUT und Name. Und stellen wir sicher, dass der Benutzer weiß, was zu tun ist. Ich kann S OUT sagen, dann kann ich mitmachen. Bitte gib deinen Namen ein. Wenn ich das jetzt ausführe, sehen wir bitte den vorderen Namen, aber er schließt nicht sofort wie Daten und andere Situationen warten hier tatsächlich darauf, dass wir unseren Namen eingeben. In diesem Fall füge ich einen Alex hinzu, und wenn ich die Eingabetaste drücke, druckt er Alex. Und hier heißt es, dass ein Prozess abgeschlossen ist. Die grünen Texte werden die Texte sein, die ich eingegeben habe, und der weiße Text wird von einem Java-Programm selbst stammen. Wenn ich das jetzt noch einmal ausführe, habe ich meinen vollständigen Namen hinzugefügt. Zum Beispiel Alexander-Raum Flores. Wenn ich das durchführe, sehen wir jetzt nur Alexander. Das liegt daran, dass die nächste Funktion hier jedes einzelne Zeichen bis zu einem bestimmten Leerzeichen zählt . Wenn es also ein Leerzeichen oder eine Registerkarte oder eine neue Zeile gibt und solche Dinge werden es schaffen. Also hört es einfach auf, nach neuen Charakteren zu suchen und gibt einfach zurück, was er bisher gefunden hat. Wenn wir die vollständige Linie bekommen wollten, können wir die nächste Zeile sagen. Ähnlich wie bei Variablen wird dies die CamelCase-Notation verwenden, was bedeutet, dass wir ein Kleinbuchstabe n haben weil es der erste Buchstabe des ersten Wortes ist. Aber der erste Buchstabe jedes anderen Wortes. Zum Beispiel wird L in Großbuchstaben sein. Wenn ich das durchführe, kann ich jetzt meinen vollständigen Namen mit einem Leerzeichen eingeben, also Alexander Platz für uns. Und wenn ich die Eingabetaste drücke, sehen wir, die vollständige Zeichenfolge an uns zurückgedruckt wurde. Jetzt müssen wir nicht einfach nur Strings machen. Zum Beispiel kann ich sagen, bitte gib dein Alter ein. Dann kann ich hier sagen, dass int age als nächstes den Eingabepunkt gleich ist. Und hier sehen wir eine Reihe anderer Optionen. In diesem Fall wollen wir next int, weil das unser Variablentyp ist, der ein int ist. Dann kann ich S0 UT benutzen. Ich könnte das Alter ohne Zitate ausdrucken. Und wenn ich das mache, wird es uns nach unserem Alter fragen. In diesem Fall gebe ich 28 ein. Dann wird es 28 zurück an uns drucken. 7. Arithmetische Operatoren: Wenn wir Zahlen haben, möchten wir sie oft nicht nur auf die Konsole ausdrucken. Möglicherweise möchten wir diese Zahlen addieren, subtrahieren , multiplizieren oder dividieren . Zum Beispiel kann ich sagen, dass int number gleich 50 ist. Lassen Sie uns damit beginnen dies auf die Konsole auszudrucken. Wir können einfach immer sehen, was passiert. Jetzt werde ich das nicht ausführen , weil es sehr offensichtlich ist, was passieren würde. Aber nehmen wir an, wir möchten dieser Zahl eine hinzufügen. Ein paar verschiedene Möglichkeiten, dies zu tun. Ein Beispiel ist Zahl gleich Zahl plus Eins. Wenn ich das jetzt durchführe, wirst du wahrscheinlich wissen, was gedruckt wird. In diesem Fall sind es 51. Wir können zehn oder 100 oder eine andere Art von Wert hinzufügen. Was wir für diesen Eindringling wollen. Jetzt gibt es einen kürzeren Weg, dies zu tun. Also verwende ich den Kontroll-Schrägstrich , um die aktuelle Zeile zu kommentieren . Und dann sage ich Zahl plus gleich 100. Dies ist im Grunde genau das Gleiche wie das , was wir hier haben, ist nur eine kürzere Möglichkeit, einer Variablen eine Zahl hinzuzufügen. Wenn ich das ausführe, werden wir 150 in der Konsole sehen. Wir können genau das gleiche Konzept machen , wenn es um Subtraktion geht. Anstelle von Plus habe ich Minus. Und wenn ich das ausführe, werden wir negative 50 in der Konsole sehen. Natürlich haben wir eine Multiplikation. Wenn ich das also mache, sehen wir hier 5 Tausend und Division, die einen Schrägstrich hat. Wenn ich das durchführe, werden wir 0 sehen. Jetzt ist die 0 hier, weil wir Zahlen verwenden, die ganze Zahlen sind. Wenn ich diesen int in ein Double ändern würde, was Dezimalstellen zulässt, würde ich das ausführen. Wir sehen jetzt 0,5. Und natürlich können all diese Symbole für diese ursprüngliche Syntax verwendet werden . Zum Beispiel können wir sagen, dividieren Sie es durch 100 mal 100. So etwas wird immer noch funktionieren. Jetzt fragen Sie sich vielleicht, warum sollte jemand, der diese Art von Syntax verwendet , wenn dies nur kürzer ist? Der Hauptgrund für die Verwendung dieser Art von Syntax ist, dass wenn Sie mehrere Variablen haben, dies die einzige Möglichkeit war, Dinge zu tun. Zum Beispiel kann ich sagen, dass int Nummer zwei gleich zehn ist. Dann kann ich sagen, dass Zahl gleich Nummer zwei Mal 100 ist. Wir können das mit dieser Art von Syntax hier nicht tun, da diese Art von Syntax nur die in diesem Fall erwähnte Variable ändern wird, das ist die in diesem Fall erwähnte Variable ändern Zahl. Jetzt lösche ich die meisten Dinge und erstelle eine weitere Ganzzahl namens Zahl gleich fünf. Nehmen wir an, wir wollen eine von dieser Variablen mit dem, was wir gerade gesehen haben, addieren oder subtrahieren , wir könnten Zahl plus gleich eins machen. Wenn ich das laufen würde, ist es natürlich eine Art Arbeit. Wir würden sechs in der Konsole sehen. jedoch so üblich, eine Zahl um eins zu erhöhen und zu verringern Es ist jedoch so üblich, eine Zahl um eins zu erhöhen und zu verringern, dass die meisten Programmiersprachen , einschließlich Java, dazu eine noch kürzere Syntax haben . Dies wird als Inkrementieren und Dekrementieren eines Wertes bezeichnet. Also kann ich Nummer plus sagen. Wenn ich das speichere, werden wir immer noch sechs in der Konsole sehen. Dies wird die Zahl um eins erhöhen. Wir könnten auch Zahl minus minus machen. Wenn ich das ausführe, werden wir vier in der Konsole sehen , weil wir von der ursprünglichen Nummer subtrahieren, die in diesem Fall fünf ist. Jetzt können die Plus- und Minuspunkte entweder der Variablen zugewiesen werden, und sie tun etwas andere Dinge. In diesem Anwendungsfall werden wir keine tatsächliche Änderung sehen, wenn ich es ausführen würde. Und wir werden immer noch sechs in der Konsole sehen. Aber das liegt nur daran, wie unser Code hier geschrieben wird. Die Pluspunkte vorher oder nachher zu haben , wird viel klarer über den Unterschied sein. Wenn ich die Pluspunkte direkt auf die Variable hier hinzufüge, sehe ich diesen Pinsel immer noch sechs in der Konsole. liegt daran, dass die Pluspunkte vor dem Variablennamen zuerst die Variable inkrementieren und dann verwenden. In diesem Fall geben wir es an die Druckzeilenfunktion weiter und drucken es im Grunde auf die Konsole. Aber wenn ich danach Pluspunkte hinzufügen würde, bedeutet das, dass wir zuerst die Variable verwenden und sie dann erhöhen werden. Wenn ich das ausführen würde, werden wir fünf in der Konsole sehen. Aber technisch gesehen hält Zahl im Speicher unseres Programms immer noch den Wert Sechs. Wir haben es einfach nicht gedruckt. Um dies zu beweisen, kann ich das noch einmal ausdrucken. Sieh dir unsere Ausdrucknummer an. Und wenn ich das durchführe, sehen wir uns dann 56. Das gleiche Konzept gilt genau , wenn es um Minus, Minus geht. Wenn ich das durchführe, sehen wir uns fünf und dann vier. Wenn ich jetzt Minus mache, minus vorher, werden wir natürlich 44 sehen. Das liegt daran, dass wir zuerst die Zahl verringern und sie dann verwenden. Dann drucken wir natürlich die Ergebnisse einfach noch einmal aus. Während wir mit dem Kurs fortfahren, werden Sie eine Reihe von verschiedenen Möglichkeiten und Instanzen sehen , in denen dies nützlich sein wird. Vor allem, wenn es um unser erstes Projekt geht, das ungefähr zur Hälfte des Kurses sein wird. 8. Wenn andere: Wir sind jetzt dabei, in ein sehr wichtiges Konzept einzutauchen , das als Control Flow bekannt ist. Kontrollfluss ist im Grunde genommen der Ort, an dem wir den Ablauf des Programms steuern können, der es erraten hätte. Und dies geschieht am häufigsten mit etwas, das als IF-Anweisungen bekannt ist. Im Grunde genommen, wenn etwas etwas entspricht , werden wir einen bestimmten Code ausführen. Sonst denken wir vielleicht nicht an ein Lieblingsschießspiel. Wenn Sie die Schaltfläche „Neu laden“ drücken, wird überprüft, ob Sie eine volle Magdalena haben. Nicht Wenn du das tust, gehe nicht in den Nachladen. Aber wenn Sie kein vollständiges Magazin haben, wird es neu geladen. Beginnen wir damit, einige Benutzereingaben zu erstellen einen Scanner zu erstellen. Ich nenne diesen Input. Ich weise den Wert des neuen Scanners zu , der in Systempunkt n übergeht. Jetzt, da wir Zugriff auf dieses Eingabeobjekt haben, können wir tatsächlich Eingaben vom Benutzer lesen. Also werde ich sagen, dass int number gleich Eingabepunkt nächsten int ist. Jetzt drucke ich das einfach aus, um sicherzustellen, dass alles funktioniert. Alles klar, Mike, und führe das mit Shift und FTN aus. Hier erwartet ich, dass ich eine Zahl eintrage. Ich gebe 50 ein und dann bekommen wir 50 zurück. Alles funktioniert gut. Aber anstatt die Nummer einfach auszudrucken, verwende ich eine if-Anweisung. Die Syntax für eine if-Anweisung wäre wenn Klammer und dann eine geschweifte Klammer und eine endende geschweifte Klammer in der nächsten Zeile. Jetzt in den Klammern befindet sich unser Zustand. Und diese Bedingung wird normalerweise die beiden vergleichen. Danke. Zum Beispiel kann ich sagen, Nummer zwei Gleichheitszeichen, 52 Gleichheitszeichen sind sehr wichtig , da ein einzelnes Gleichheitszeichen, wie ich bereits erwähnt habe, ein Zuweisungsoperator ist. Dies nimmt den Wert auf der rechten Seite und weist ihn der Variablen auf der linken Seite zu. Aber zwei Gleichheitszeichen sind ein Vergleich. Dies wird sehen, ob der Wert auf der linken Seite den Wert auf der rechten Seite nennt. Ich füge hier einen Kommentar hinzu, in dem der Vergleich steht. Was passiert, wenn diese beiden Dinge gleich sind? Nun, das wird im Grunde ein boolescher Ausdruck werden. Und wenn Sie sich vorher erinnern, ein Boolescher Wert entweder wahr oder falsch, es gibt keine anderen Werte von Boolean, die eine IF-Anweisungen verwenden können und eine bedingte Bedingung bewohnen im Grunde nach einem booleschen Wert suchen wert. Lassen Sie mich das hypothetisch auskommentieren und lassen Sie mich einfach die Zahl 50 eingeben. In diesem Fall gibt uns unser Texteditor diese gelbe Warnung, indem wir den Mauszeiger darüber bewegen. Es heißt, dass die Bedingungszahl gleich 50 ist, immer wahr ist. Offensichtlich ist das der Fall, denn unser Wert hier liegt bei 50 und das ändert sich nie. Nun ist der wichtige Teil dabei, dass es immer wahr ist, was ein boolescher Wert ist. Das ist also im Grunde dasselbe wie zu sagen, ob wahr ist. Wenn dies der Fall ist, wird der Code in diesen geschweiften Klammern immer ausgeführt. Wenn dies falsch war und der Code in den geschweiften Klammern niemals ausgeführt wird. Die Bedingung innerhalb der Klammern muss eine wahre Bedingung sein. Ich verwende Control Z, um die Rücktaste zu verwenden , bis wir tatsächlich Benutzereingaben erhalten. Und hier drin werde ich einfach auf die Konsole drucken und sagen, dass die Nummer 50 ist. Jetzt werde ich hier einige dieser Kommentare los, nur um unseren Code ein wenig sauberer zu machen. Ich versuche uns mit Shift und F2 zu betreiben. Und hier wird erwartet, dass ich eine Zahl eintrage. Wenn ich 50 eintrage , sage ich die Zahlen 50. Und wenn ich das noch einmal durchführe, gebe ich noch etwas ein. Zum Beispiel 99. Es wird nichts drucken, weil diese Bedingung falsch ist. Daher wird der darin enthaltene Code nicht ausgeführt. Aber was wäre, wenn wir andere Nummern überprüfen wollten ? Will theoretisch könnten wir einfach eine Reihe von if-Aussagen hinzufügen. Zum Beispiel eine Zahl, die genau 51. Aber was ist, wenn wir wollen, dass nur eines auf die Konsole gedruckt wird? Jedes Mal, wenn wir eine if-Anweisung erstellen, wird dies etwas schaffen, das als if-Statement-Kette bekannt ist. Eine if-Statement-Kette. Dies wird bis zu drei verschiedene Arten von Aussagen enthalten . Wir haben unsere if-Aussagen, wir haben unsere else-if-Aussagen, und wir haben unsere else-if-Aussagen. Werfen wir einen Blick auf Else-if-Aussagen. Wenn ich diese if-Aussage hier loswerde, könnte ich sonst sagen, wenn die Zahl genau gleich 51 ist, kann ich dann ausdrucken, dass die Nummer 51 ist. Jetzt muss eine else-if-Aussage direkt nach einer if-Aussage sein. Diese werden im Grunde alle vorherigen if- und else-if-Aussagen betrachten . Und wenn sie alle falsch sind, wird es weitermachen und versuchen, diese beiden Werte zu vergleichen. In diesem Fall, IF-Anweisung online 16, wird es Nummer 50 vergleichen. Wenn das stimmt, führen wir diesen Code aus. Und dann springen wir gleich hier runter. Wir werden nicht einmal versuchen, die Zahl von 251 zu vergleichen weil die else-if-Anweisung sieht, dass die if-Anweisung wahr war. Es sieht, dass es keinen Sinn hat die beiden Werte überhaupt zu überprüfen. Wenn wir jedoch eine andere Zahl eingegeben haben, zum Beispiel 51, ist diese Bedingung jetzt falsch. Die else-if-Anweisung, wir werden sehen, dass sie dann versuchen wird, diese beiden Werte zu vergleichen. In diesem Fall sind die beiden Werte identisch. Also diesen Code haben wir ausgeführt, aber wenn ich 52 eingebe, wird hier nichts Rampe sein. Um dies zu beweisen, kann ich unser Programm ausführen. Ich kann 50 betreten. Hier sehen wir die Zahlen 50, fremde laufen es wieder. Ich kann eine 51 eingeben, und hier sehen wir, dass die Zahl 51 ist. Endlich kann ich es ausführen und ich kann 52 eingeben und nichts passiert. Jetzt können wir für jede IF-Anweisungskette zum Beispiel genau hier zum Beispiel genau hier nur eine if-Anweisung haben, aber so viele else-if-Aussagen, wie wir wollen. Zum Beispiel kann ich sonst sagen, wenn die Zahl genau 52 ist, könnte ich dann ausdrucken, dass die Zahl 52 ist. Und um die Dinge etwas interessanter zu machen, kann ich sagen, dass die f-Zahl sonst genau gleich 52 ist. Auch hier konnte ich den Test nicht ausdrucken, nur um sicherzustellen, dass diese Druckanweisung ganz anders ist als die anderen. Wenn ich das ausführe, gebe ich 52 in die Konsole ein. Wir sehen jetzt, dass die Zahl für die beiden ist, aber wir sehen keinen Text. Das liegt daran, dass diese Bedingung hier wahr war. Daher wird sich diese else-if-Anweisung nicht einmal die Mühe machen, diese beiden Werte zu vergleichen , und wird sicherlich nichts innerhalb der geschweiften Klammern ausdrucken. Jetzt beschwert sich unsere IDE natürlich, weil diese beiden Dinge nicht wirklich hier sein sollten. Diese Aussage hier wird eigentlich nie ausgeführt werden, egal was passiert. Denn wenn die Zahl 52 ist, dann haben wir diesen Code hier in Zeile 21 stattdessen ausgeführt, weil unser Zustand online 20 wahr sein wird. Ich entferne das. Und das Letzte, was ich dir zeigen wollte , ist die andere Aussage. Dies muss ganz am Ende einer if-Statement-Kette liegen. Dies ist im Grunde nur ein Catch-All. Wenn zum Beispiel nichts anderes in der if-Anweisungskette wahr war, kann ich eine unbekannte Nummer ausdrucken und ich kann diese ausführen. Und wenn ich 5352 eintrete, wissen wir, was passieren wird. Aber was passiert, wenn ich 53 eintrete? Es sagt unbekannte Nummer, weil alle drei dieser if-Anweisungen genau hier oder falsch sind, daher die else-Anweisung, die wir ausgeführt haben. Aber wenn ich das ausführen würde und 52 eingeben möchte, heißt es, dass die Nummer für die beiden ist. Und die else-Anweisung wird nicht ausgeführt, weil sie sieht oder eine der vorherigen f- oder else-if-Aussagen wahr war. Grundsätzlich wird das Programm all dies durchlaufen und versuchen, die ersten wahren Aussagen zu finden und den Rest zu ignorieren. 9. Switch-Statements: Im letzten Video haben wir uns if-Anweisungen angeschaut, aber das ist nur ein Beispiel für Steuerfluss. Ein anderes Beispiel wird etwas sein, als Switch-Anweisung bekannt ist. Jetzt wird dies weniger häufig wie Anweisungen verwendet, aber Sie werden es von Zeit zu Zeit sehen. Es ist also wichtig zu verstehen, wie es funktioniert. Ich kann einfach sagen, dass Klammern wechseln und danach geschweifte Klammern. Jetzt werden Antikörperklammern ein Wert sein, nicht unbedingt eine Bedingung, sondern jede Art von Wert. Zum Beispiel in diesem Fall eine Zahl. Im Inneren werden wir im Grunde etwas haben, das als Fallaussagen bekannt ist, die irgendwie wie if-Aussagen sind. Ich kann Fall 50 mit einem Doppelpunkt sagen. Wenn ich die Eingabetaste drücke, könnte ich dann die Zahl 50 hinzufügen. Dann muss ich etwas hinzufügen, das als Break-Anweisung bekannt ist. Ich fahre weiter und führe das mit Shift F2 aus. Hier kann ich die Zahl 50 eingeben, das heißt die Zahlen 50. Wenn ich das jetzt noch einmal durchführe, gebe ich noch etwas ein. Zum Beispiel 51. Eigentlich wird nichts passieren, weil wir offensichtlich nirgends mit 51 umgehen. Dies ist anders als eine if-Anweisung und es hatte eigene Anwendungsfälle. Es wird tatsächlich am häufigsten für meine Erfahrung beim Vergleich von Strings verwendet , aber Sie können es anstelle von if-Anweisungen verwenden , wenn wir es wirklich wollten. Aber es steckt noch mehr dazu. Zum Beispiel kann ich in weiteren Fällen hinzufügen. Also Fall 51, kann ich hinzufügen. Die Zahl ist 51 und ich kann brechen. Wenn ich das jetzt ausführe und 51 hinzufüge , wird es das natürlich sagen. Aber was passiert, wenn ich nach zwei verschiedenen Nummern suchen möchte ? Nun, ich kann auch den Fall von 52 sagen. Und dann sagt die Print-Anweisung, dass die Zahl 51 oder 52. Wenn ich das jetzt durchführe, kann ich dann in 52 einsteigen. Es heißt, die Zahl ist 51 oder 52. Natürlich bekommen wir die gleiche Ausgabe wenn ich die Nummer eins eintrage. Jetzt wird die Möglichkeit, zwei verschiedene Werte mit einer if-Anweisung zu überprüfen , in einigen Videos im Kurs erklärt . Es ist viel einfacher, das mit Switch-Anweisungen zu erklären. Deswegen verstehe ich es hier. Eine Sache, die Sie beachten sollten, ist im Grunde genommen, wenn einer der Fälle wahr ist, wird der Code weiterhin ausgeführt bis eine break-Anweisung gefunden wird. Zum Beispiel kann ich dies in die Zahl 52. ändern. Dann kann ich ausdrucken, die Nummer ist 51 genau hier. Beachten Sie, dass wir nach dieser Print-Anweisung hier keine Break-Anweisung haben . Das hier ist der einzige Bruch, wenn wir vierhunderteinundzweiundfünfzig und zweiundfünfzig haben. Wenn ich das also ausführe und 51 erbe, wird es passieren, dass der Code weiter ausgeführt wird , bis er eine Break-Anweisung findet. Wir sehen, dass die Zahl 51 ist. Es ist egal, ob es hier einen Fall gibt. wird es einfach ignorieren. Und es wird diese Linie genau hier laufen, die Nummer für die beiden, und dann werden wir brechen. Jetzt wird eine letzte Sache für Switch-Anweisungen Standard sein, was normalerweise ganz am Ende geht. Und das ist irgendwie wie die else-Aussage für if-Aussagen. Hier kann ich eine unbekannte Nummer ausdrucken. Und technisch gesehen brauchen Sie keine Break-Anweisung obwohl viele argumentieren, dass es sich um eine richtige Syntax handelt. Aber der Code funktioniert auch ohne eine Break-Anweisung einwandfrei , denn natürlich sollte der Standardwert der allerletzte Fall sein, in dem Scheck in Ihrer Switch-Anweisung ist. Wenn ich das ausführe, gebe ich eine andere Zahl ein, zum Beispiel negative 500. Wir sehen dann eine unbekannte Nummer. Switch-Anweisungen sind ziemlich einfach und können anstelle von if-Anweisungen und einigen Anwendungsfällen verwendet werden. In der Regel verwenden Sie jedoch nur if-Anweisungen. 10. Vergleichsoperatoren: Wir werden jetzt zu if-Anweisungen zurückkehren und einen Blick auf Vergleichsoperatoren werfen. Dies sind verschiedene Möglichkeiten , zwei Werte zu vergleichen. Zuvor mussten wir uns das Doppelgleichheitszeichen ansehen, das einfach den Wert auf der linken Seite überprüft und mit dem Wert auf der rechten Seite vergleicht. Aber es gibt viel mehr Operatoren, die wir innerhalb von Java oder so ziemlich jeder Programmiersprache verwenden können . Zum Beispiel haben wir ein Zeichen größer als. Es gab weniger als ein Zeichen. Wir haben größer oder gleich und wir haben weniger als oder gleich. Und wir haben auch ein Ungleichwertiges. Jetzt sind die meisten davon sehr selbsterklärend. Aber schauen wir uns ein paar Beispiele an. Wie ich schon sagte, wenn die Zahl nicht gleich 50 ist, kann ich dann die Nummer ausdrucken, seine nicht 50. Und wenn ich das ausführe und 50 eintrete, werden wir natürlich nichts sehen , weil die Zahl 50 entspricht. Daher ist diese Bedingung genau hier falsch. Aber wenn ich das noch einmal starte und etwas anderes eingebe , zum Beispiel einen, sehen wir, dass die Zahl nicht 50 ist, weil man natürlich dasselbe ist wie 50. Jetzt probieren wir noch ein paar andere Dinge aus. Zum Beispiel kann ich sagen, dass Zahl größer als 50 ist. Ich kann auch die Zahl größer als 50 sein. Und wenn ich das ausführe, kann ich jetzt jede gewünschte Nummer eingeben, zum Beispiel 900. Und es wird sagen, dass die Zahl größer als 50 ist. Aber wenn ich etwas weniger als oder gleich 50 eingebe, wird nichts passieren. Der gleiche Teil ist wichtig , da 50 nicht größer als 50 ist. Es ist gleich damit. Wenn ich 50 eintrete, wird nichts gedruckt. Wenn ich diese Funktionalität wollte, kann ich größer oder gleich 50 sagen. Wenn ich das ausführe und 50 eintrage, werden wir natürlich sehen, dass die Zahl größer als 50 ist. Aber das liegt nur daran, dass ich diesen Text nicht aktualisiert habe. Aber der wichtige Teil dabei ist, dass die Zahl jetzt größer oder gleich 50 ist. Und natürlich werden die weniger Zeichen Operatoren genau auf die gleiche Weise arbeiten. Ich bin mir sicher, Sie können sich vorstellen, wie diese funktionieren werden , und wir können diese verwenden, um kompliziertere Ausdrücke in unseren if-Anweisungen zu haben , um dann komplexere und aussagekräftigere Programme zu haben. 11. Logischer Betreiber: Werfen wir einen Blick auf logische Operatoren. Dies sind andere Möglichkeiten, kompliziertere Überprüfungen in unseren if-Anweisungen hinzuzufügen . Ein paar Beispiele dafür werden der NOT-Operator sein. Dies wird auch der logische UND-Operator sein. Und der logische ODER-Operator , der durch Halten der Umschalttaste und Drücken der obigen Taste dient, geben Sie ein. Der NOT-Operator wird im Grunde nur einen Wert umkehren. Der UND-Operator wird im Grunde sicherstellen , dass das Ding links und die Dinge auf der rechten Seite wahr sind. Der Operator oder wird sicherstellen, dass das Ding links oder rechts oder beides wahr ist. Werfen wir einen Blick auf all dies mit Beispielen. Ich kann sagen, wenn die Zahl genau gleich 50 ist, die Zahl genau gleich 55 ist, kann ich dann 50 oder 55 ausdrucken. Und wenn ich das mache, kann ich jetzt 50 eingeben und wir sehen, dass 50 oder 55 das wieder laufen, wir 55 eingeben, wir sehen dasselbe. Und wenn ich das ausführe und etwas anderes eingebe, zum Beispiel 70, sehen wir nichts in der Konsole. Grundsätzlich möchte dies sehen , dass die linke Seite des Operators oder die rechte Seite oder beides wahr sind. Und es könnte offensichtlich sein, weil dies der logische ODER-Operator ist . Lassen Sie mich weitermachen und fügen Sie hinzu , wofür diese stehen. Der logische ODER-Operator wird dies oder jener sein, entweder einer. Jetzt wird der AND-Operator in diesem Anwendungsfall zu sehr sinnvoll sein, da die Zahlenvariable nicht gleichzeitig 5055 enthalten kann . Ein besseres Beispiel für den UND-Operator ist, wenn Sie größer als und weniger als verwenden. So könnte ich zum Beispiel sagen, Zahl größer oder gleich 50 ist und die Zahl kleiner oder gleich 55 ist. Also sollte alles von 50 bis 55 enthalten sein. Ich ändere das auf 5255. Und wenn ich das durchführe, kann ich jetzt 52 eingeben. Und wir sehen, dass das stimmt. Im Wesentlichen, wenn die Zahl größer als oder 50 ist und die Zahl kleiner oder 55 ist als die gesamte if-Anweisung wahr ist. Wenn einer dieser beiden Ausdrücke falsch ist, ist die if-Anweisung falsch. Wenn ich das zum Beispiel noch einmal ausführe und 56 eingebe, wird nichts passieren. Während dieser Teil genau hier zutrifft, denn 56 ist größer oder gleich 50. Es ist genau hier falsch, denn für die Sechs ist nicht kleiner oder gleich 55. Und der und der Operator verlangt sowohl eine Linke als auch das Recht, um wahr zu sein. Werfen wir nun einen Blick auf einen NOT-Operator , der im Grunde nur einen booleschen Ausdruck mit einer if-Anweisung umkehren wird , wir können bestimmte Bedingungen tatsächlich miteinander koppeln. Zum Beispiel kann ich eine Klammer um diese ganze Sache wickeln . Und wenn ich das machen würde, würde das Gleiche passieren. Aber jetzt können wir einen NOT-Operator oder vorher verwenden. Dieser gesamte Ausdruck ist entweder wahr oder falsch, je nachdem wahr oder falsch, je nachdem, ob der Wert der Zahl der NOT-Operator ist, wird dies einfach umkehren. Also sage ich nicht 5255. Wenn ich das durchführe, könnte ich dann 52 eingeben. Es passiert nichts. Aber wenn ich das noch einmal durchführe und etwas eingebe , das nicht zwischen 5055 liegt, zum Beispiel alle 34, sehen wir nicht 5255. Der NOT-Operator wird einfach einen booleschen Ausdruck umkehren. Und während des gesamten Kurses werden wir weitere Anwendungsfälle des Not-Operators und der beiden anderen Operatoren sehen. Und wie nützlich können sie sein. 12. Während der Schleife: Wir werden uns jetzt das einfachste Beispiel für eine Schleife ansehen. Und dies ist eine Möglichkeit, bestimmte Codestücke immer wieder laufen zu lassen solange wir möchten, dass sie ausgeführt werden. Es gibt also ein paar verschiedene Arten von Schleifen. Aber in diesem Video werfen wir einen Blick auf die While-Schleife. Also können wir sagen While Klammer und dann geschweifte Klammern. Und innerhalb dieser Bedingung wird ein boolescher Ausdruck sein. Dies wird entweder wahr oder falsch sein , wenn diese Schleife weiterhin ausgeführt werden soll. Zum Beispiel kann ich eine ganze Zahl namens Counter erstellen und diese auf 0 setzen. Ich könnte dann sagen, während der Zähler weniger als zehn ist, kann ich dann in die While-Schleife gehen und alles in den geschweiften Klammern wird ausgeführt, solange dieser Zustand genau hier wahr ist. Jetzt wäre dies derzeit als Endlosschleife bekannt , da sich der Zähler nie ändert. Es ist immer 0. So ist Counter Lift und Zinn immer wahr. Wir wollen sicherstellen , dass wir den Zustand des Zählers tatsächlich geändert haben, wo es möglich ist, zehn oder mehr zu sein. Auf diese Weise bleiben wir nicht ewig im Schlaf stecken. Tu das. Ich werde zuerst ausdrucken, wie der Zähler ist. Ich sage „Zähler“, Doppelpunkt. Und dann könnte ich außerhalb der Saite einen Pluszähler machen. Dies fügt den Inhalt der Zählervariablen Gesamtzeichenfolge hinzu, die an die Druckzeilenfunktion übergeben wurde . Jetzt kann ich danach Counter plus plus sagen. Oder wenn ich es wirklich wollte, könnte ich das genau hierher stellen. Wie wir bereits erfahren haben, wird es zuerst erhöht, wenn Sie das Plus plus links neben dem Variablennamen setzen wird es zuerst erhöht, wenn Sie das Plus plus links neben dem Variablennamen und dann verwenden Sie es. In diesem Fall drucken wir es auf die Konsole. Bevor wir das ausführen, lasst uns das durchgehen, was ich gerade getan habe. Ich habe eine ganzzahlige Variable mit dem Wert 0 erstellt. Und wir sagen, obwohl diese Variable weniger als zehn ist, werden wir den gesamten Code innerhalb dieser geschweiften Klammern ausführen . Jetzt druckt dieser Code einfach den Zähler aus. Aber bevor wir den Zähler tatsächlich ausdrucken, werden wir ihn um eins erhöhen. Dies bedeutet, dass unsere Schleife nicht mehr unendlich ist , weil sie zum ersten Mal eine, dann zwei, dann drei usw. drucken wird , bis sie zehn erreicht, wobei der Zähler weniger als Zinn nicht mehr sein würde stimmt. So können wir dann aus unserer Schleife ausbrechen und mit dem Rest unseres Programms fortfahren. Lasst uns das in Aktion sehen. Ich kann Shift F2 machen. Es sollte unser Programm ausführen. Und wenn ich dieses Fenster erweitere, sehen wir jetzt den Zähler eins bis zehn. Dies ist ein sehr einfaches Beispiel für eine Schleife. Im Grunde genommen werden wir, obwohl dies zutrifft, den gesamten Code innerhalb der geschweiften Klammern ausführen . 13. Tritt mit Schleifen: Werfen wir jetzt einen Blick auf die Do While-Schleife. Dies ähnelt der While-Schleife, wird aber etwas seltener verwendet. Die Syntax bei uns wird fällig sein, dann geschweifte Klammern. Und dann würden wir am Ende geschweifte Klammer sagen, während wir mit unseren Klammern und einem Semikolon sind. Jetzt wird die Bedingung genau hier hineingelegt werden . Grundsätzlich ist das Konzept hier, dass wir diesen Codeblock sofort ausführen werden , egal was passiert. Dann wird es danach im Grunde nur eine normale While-Schleife werden. Wir werden diesen Codeblock weiterhin ausführen, solange diese Bedingung zutrifft. Aber egal welchen Codeblock wir mindestens einmal ausgeführt haben, das ist anders als eine While-Schleife, bei der dieser Block-Hook-Code nur beim ersten Mal ausgeführt wird , nur wenn die Bedingung wahr ist. Ein praktischer Anwendungsfall dafür ist Benutzereingaben zu erhalten und sicherzustellen, dass wir die richtige Art der Eingabe oder eine korrekte Nummer erhalten . Zum Beispiel kann ich sagen, dass der Scanner-Eingang einem neuen Scanner entspricht. Ich kann System Dot n übergeben . Und dann sage ich hier int number. Ich werde ihm keinen Wert zuweisen. Und das können wir mit Variablen machen. Wir können sie erstellen, aber Sie müssen ihnen nicht sofort einen Wert zuweisen. Jetzt innerhalb des Codeblocks hier werde ich sagen, dass Zahl gleich Eingabepunkt nächsten int ist. Dann sage ich, während die Zahl weniger als zehn ist. Was dieser Code im Wesentlichen tun wird, ist dass wir zuerst einige Eingaben vom Benutzer erhalten. Wir werden eine Nummer erstellen , die wir später verwenden werden. Und dann werden wir diesen Code ausführen. Egal wie die Walk-Bedingung ist, es läuft immer einmal. Im Wesentlichen erhalten wir vom Benutzer Eingaben, idealerweise eine Zahl. Und dann werden wir das weiter ausführen, solange diese Bedingung genau hier zutrifft. Daher müssen wir eine Zahl angeben, die zehn oder mehr ist , damit sie tatsächlich eine gültige Eingabe erhält. Jetzt, danach drucke ich die Nummer aus. Ich führe das mit Shift und FTN aus. Jetzt kann ich hier drin eintragen, was ich will. Zum Beispiel fünf oder sieben. Alles, was weniger als zehn ist, wird vollständig ignoriert, da die While-Schleife diesen Codeblock hier immer wieder laufen lässt , bis diese Bedingung falsch ist. Ich kann zum Beispiel sogar negative 5 Tausend eingeben , und es wird immer noch funktionieren. Aber sobald ich etwas zehn oder mehr eingebe , zum Beispiel 84, wird es aus dieser Schleife ausbrechen und es wird genau hier 84 drucken. 14. Für Schleifen: Werfen wir einen Blick auf die stärkste Schleife, die als for-Schleife bekannt ist. Dies ist der beste Weg , Dinge zu zählen oder eine Liste bestimmter Elemente zu durchlaufen. Das mag verwirrend klingen, aber im Laufe des Kurses werden Sie Beispiele dafür sehen. Lasst uns einfach versuchen, etwas zu zählen. Im vorherigen Beispiel habe ich einen Zähler erstellt und dann hat er eine While-Schleife benutzt, um darüber zu zählen. Wir können eine for-Schleife verwenden, um dies zu erreichen und einen viel saubereren Weg. Zum Beispiel kann ich für Klammern geschweifte Klammern sagen. Und innerhalb der Klammern wird es drei verschiedene Elemente geben , die durch Semikolons getrennt werden. Die erste wird die Initialisierung sein. Hier können wir tatsächlich Variablen erstellen , die mit unserer Schleife verwendet werden können. Also kann ich sagen, dass int counter gleich 0 ist. Die zweite wird eine Bedingung sein, die einer Weile oder einer Do-While-Schleife ähnelt. Dies wird der Fall sein, wenn die Schleife weiter laufen soll. In diesem Fall sage ich Counter weniger als zehn. Danach wird dieser letzte Abschnitt Code sein, den wir jedes Mal ausgeführt haben, wenn die Schleife abgeschlossen ist. In diesem Fall möchten wir plus plus Zähler sagen. Also jedes Mal, wenn wir den Zähler um eins erhöhen. Jetzt hier drin werde ich einfach den Zähler an die Konsole drucken. Und wenn ich das mit Shift und F2 mache, sollten wir eine Zählung von 0 bis neun sehen, wie wir genau hier sehen. Immer noch auf dem Laufenden. Zuerst beginnt es diese Variable nur einmal. Dann sitzt, wenn diese Bedingung zutrifft, wenn ja, wird hier nicht der gesamte Code in unseren geschweiften Klammern ausgeführt, einfach 0 auf die Konsole drucken, wie wir dort sehen. Sobald es das Ende erreicht hat, ihm klar, dass nichts mehr zu tun ist. Also geht es um eine Schleife zurück. Dabei erhöht es hier den Zähler. Diese Gnosis, dieser Zähler ist jetzt 11 ist weniger als zehn. So süß, den Prozess zu wiederholen bis diese Bedingung falsch ist, was wir genau hier sehen. Denn sobald es neun ist und auf zehn ansteigt, ist die Bedingung nicht mehr zutreffend. Deshalb brechen wir aus der Schleife aus. 15. Brechen und fortsetzen: Werfen wir einen Blick auf die Pause und die Continue Keywords mit dem Betrachten von Break in Switch-Anweisungen. Und es funktioniert hier in ähnlicher Weise. Dies sind jedoch zwei Schlüsselwörter, die in jedem der Loop-Typen verwendet werden können . Zum Beispiel kann ich sagen, dass int counter gleich 0 ist, während der Zähler weniger als zehn ist. Jetzt hier drin werde ich zuerst den Zähler erhöhen und dann drucke ich ihn auf die Konsole aus. Aber sagen wir, dass ich die Nummer fünf übersprungen habe, nachdem ich sie erhöht habe. Aber bevor ich auf die Konsole drucke, wie gesagt, wenn der Zähler genau gleich fünf ist, kann ich jetzt weitermachen und weitermachen oder im Grunde alles andere in einer Schleife überspringen und einfach zum Anfang von die Schleife. Es wird immer noch den Zustand überprüfen. Aber alles hat diese fortlaufende Aussage hier bestanden , nun, im Grunde genommen ignoriert zu werden, ist nur diese Zeile hier. Im Wesentlichen springen wir, sobald wir das erreicht haben, einfach wieder zum Anfang und sie schleifen von dort weiter normal. Ich drücke die Umschalttaste und F2, um den Code auszuführen. Und hier sehen wir eins bis zehn, aber fünf fehlen. Unmittelbar danach sehen wir 46. Das ist das Schlüsselwort „fortsetzen“. Es springt automatisch zum Anfang der Schleife zurück. Werfen wir einen Blick auf das Schlüsselwort break. Einige von Ihnen raten vielleicht schon , was das tun wird. Im Wesentlichen, anstatt einfach wieder zum Anfang zu springen, wenn er vollständig aus der Schleife ausbricht. Wenn ich das ausführe, sehen wir eins bis vier, denn sobald fünf erreicht sind, wird es sofort kaputt gehen und den Code außerhalb der While-Schleife ausführen. Sie können diese beiden Keywords verwenden, um eine bessere Kontrolle über Ihre Loops zu haben und was ausgeführt wird und wann Sie daraus ausbrechen müssen. Und diese beiden Schlüsselwörter funktionieren hier an jeder Schleife in Java, einschließlich der drei Typen, die wir bisher gesehen haben. 16. Calculator: Lassen Sie uns alle Fähigkeiten, die wir bisher gelernt haben, in die USA einbringen. Lassen Sie uns unser allererstes Projekt machen. Wir werden einfach ein einfacher Taschenrechner sein. Nun werden die meisten Dinge, die Sie bisher gelernt haben direkt in diesem Projekt angewendet. Was dieses Projekt entwickelt hat, ist immer noch schwierig , wenn Sie zu Beginn dieses Kurses ganz neu in der Programmierung sind. Wenn Sie auf Probleme stoßen oder mit diesem Projekt zu kämpfen haben , das erwartet wird und sich keine Sorgen macht, drei wichtige Dinge tun, die ich tun wollte, wenn es um dieses Video geht. Der erste wird einen Plan durchgehen. Wenn Sie ein Programm entwerfen, auch nur einen einfachen Taschenrechner, ist es wichtig, einen Plan und eine allgemeine Vorstellung davon zu haben , was Sie tun möchten, bevor Sie mit dem Schreiben von Code beginnen. Die zweite Sache ist, dass ich möchte, dass du es alleine versuchst. Also zeige ich dir Schritt für Schritt wie ich uns machen würde. Aber bevor ich das mache, möchte ich, dass du dieses Video pausierst und versuchst es selbst zu machen, nachdem wir einen Plan durchgegangen sind. Während Kurse wie dieser helfen, ist der beste Weg, um beim Programmieren besser zu werden, der richtige Code. Ich ermutige Sie dringend, so weit wie möglich alleine zu kommen , bevor Sie sich ansehen, wie ich das umsetzen würde. Jetzt wird das dritte Ding sein, ich zeige Ihnen, wie ich dieses Programm gemacht habe. Nachdem wir unseren Plan gemeinsam entworfen haben und nachdem Sie versucht haben, dies selbst zu erstellen, zeige ich Ihnen, wie ich dieses Programm erstellen würde. Beginnen wir mit Schritt eins und gehen einen Plan durch. Was sollte dieses Projekt machen? Und was müssen wir tun, um das zu erreichen? Nun, das erste ist, dass es nach zwei Zahlen fragen sollte. Dann sollte es fragen, oder eine mathematische Operation. Dies wird ein Plus sein, abzüglich Multiplikation oder Division. Es wäre also einer dieser vier Charaktere. Danach müssen wir das Ergebnis anzeigen und dann zum Start des Programms zurückkehren , wo wir nach Zahlen fragen. Dies ist ein sehr, sehr grundlegender Plan, wenn es um dieses Projekt geht. Einige dieser Dinge sollten einfach sein. andere Dinge müssen Sie nachdenken, vielleicht sogar auf frühere Lektionen zurückgehen. Versuchen Sie erneut, dieses Video sofort anzuhalten und gehen Sie so weit wie möglich alleine und kommen Sie dann zurück, sobald Sie ein Projekt abgeschlossen haben oder wenn Sie 100% stecken geblieben sind und Sie nicht weiter kommen können. Und ich zeige Ihnen Schritt für Schritt wie ich dieses Programm machen würde. Hoffentlich hast du es schon alleine versucht. Lassen Sie uns nun jeden dieser Schritte umsetzen. Aber unser Plan hier zeigt eine wichtige Verwendung beim Lesen aller Anweisungen. Zum Beispiel sehen wir hier, dass wir zum Start des Programms zurückkehren werden. Das bedeutet, dass sich dieses gesamte Programm innerhalb einer While-Schleife befinden könnte. Ich kann sagen, solange wahr ist. Jetzt wird dies eine Endlosschleife sein, die für immer läuft, was für diesen Anwendungsfall in Ordnung ist. Jetzt wird es sagen, dass es nach zwei Zahlen fragen sollte. Also beginne ich einfach damit, einen Scanner zu erstellen , der Eingaben aufruft, diesen auf einen neuen Scanner ein, der in Systempunkt n übergeht. Dann drucke ich aus und gib die erste Zahl aus. Dann sage ich, int Nummer eins ist gleich Eingabepunkt nächstes int. Bisher haben wir nach einer Nummer gefragt. Lassen Sie uns im Grunde genau das Gleiche für die zweite Zahl machen . Ich drucke einfach aus, gib die zweite Zahl ein. Und dann werden wir eine weitere Ganzzahl haben, int Nummer zwei ist gleich Eingabepunkt nächstes int. Bisher ist der allererste Schritt erledigt. Wir haben jetzt die beiden Zahlen. Jetzt sollten wir uns eine Matheoperation machen. Plus Minus Stern oder vier Schrägstrich wird Addition, Subtraktion, Multiplikation oder Division sein. Lassen Sie uns als Nächstes dem Benutzer mitteilen, was zu tun ist. Ich kann sagen, betreten Sie eine Operation. Dann werden wir sagen, welche Optionen es gibt. Plus, minus Stern und Schrägstrich. Wie ich schon sagte, String Operation ist als nächstes gleich Eingabepunkt. Jetzt haben wir Zugriff auf die Nummern und die gewünschte Operation. Wenn Sie jetzt if-Anweisungen zum Vergleich zweier Strings verwenden , funktioniert nicht richtig mit allem, was ich Ihnen bisher beigebracht habe. diesem Fall werden wir hier Switch-Anweisungen verwenden. Ich kann sagen, Switch-Betrieb. Ich könnte dann Fall mit einem Plus sagen. Ich füge die Pause hinzu und dann sage ich Fall minus break. Ich mache einfach weiter und füge alle vier hinzu. Wir haben Fall, Star, Break, Case, Vorwärts-Schrägstrich. Um bei all diesen Ergebnissen ein Ergebnis zu erhalten, muss ich es außerhalb dieser geschweiften Klammer erstellen. Die Details darüber, warum das so ist, werden in einem zukünftigen Video erklärt. Also erstelle ich eine Ganzzahl namens Results. Ich werde noch keinen Wert zuweisen. Das werden wir innerhalb unserer Switch-Anweisung tun. Wenn sie also ein Plus eingegeben haben, werde ich sagen, dass die Ergebnisse gleich Nummer eins plus Nummer zwei sind. Stellen Sie außerdem sicher, dass Sie eine Reihe von richtig buchstabieren. Dann werde ich von minus sagen, dass Ergebnis gleich Nummer eins minus Nummer zwei ist. Für die Multiplikation kann ich sagen, dass Ergebnis gleich Nummer eins Mal Nummer zwei ist. Und dann kann ich für die Division sagen, dass Ergebnis gleich Nummer eins geteilt durch Nummer zwei ist. Jetzt, außerhalb der Switch-Anweisung, kann ich dann das Ergebnis ausdrucken, wie ich schon sagte, Ergebnisraum. Und ich kann die Ergebnisse gleich hier hinzufügen. Jetzt erhalten wir tatsächlich einen Fehler und unsere IDE, indem wir den Mauszeiger darüber bewegen, heißt es, dass variable Ergebnisse möglicherweise nicht initialisiert wurden. Wir können fortfahren und auf eine Variable initialisieren klicken. Es wird einfach gleich hier 0 zuweisen. Obwohl wir diesen Wert überschreiben werden , sieht es immer noch gerne dass wir einen Standardwert haben da er nicht genau weiß, ob einer dieser vier Fälle ausgeführt wird. Lass uns weitermachen und lass uns sehen, was passiert. Wenn ich die Umschalttaste und F2 drücke, heißt es, gib die erste Zahl ein. Ich gebe fünf ein, gib die zweite Zahl, drei ein und drehe die Operation. Ich gebe die Multiplikation ein. Das Ergebnis ist 15 und blickt jetzt auf die erste Zahl zurück. So könnte ich zum Beispiel 105 machen und dann subtraktion. Und hier kriegen wir fünf. Also wird es immer wieder schleifen und immer wieder nach der ersten zweiten Nummer fragen. Und wir können dann jede Art von operativ machen , die wir wollen, mit diesen Zahlen. Denken Sie nun daran, dass wir hier ganze Zahlen verwenden. Wenn Sie also versuchen zu sehen, wird es Ihnen nur eine ganze Reihe von Ergebnissen liefern. Wenn Sie genauere Ergebnisse wünschen, können Sie für die Ergebnisvariable double und anstelle von Integer verwenden . Wenn Sie dieses Programm jetzt selbst stellen können, dann herzlichen Glückwunsch und gute Arbeit. Aber wenn er sich einige der zusätzlichen Videos ansehen musste , um dies zu tun, machen Sie sich keine Sorgen, das ist vollkommen in Ordnung, besonders wenn Sie neu in der Programmierung sind, denn dies ist eine brandneue Fähigkeit. Während er den Kurs durchläuft, werden mehr Dinge für Sie deutlicher und einfacher für Sie. Es braucht nur Zeit, um all diese Dinge zu lernen. 17. Methoden: Hier wird es etwas komplizierter, aber auch mehr Spaß. In diesem nächsten Thema geht es um Methoden. Methoden sind im Grunde nur ein Codeblock, der ausgeführt wird, und ihr Ziel ist es, eine bestimmte Sache zu tun. In der Tat haben wir die ganze Zeit in einem Methodisten gearbeitet. Diese Hauptmethode hier wird standardmäßig ausgeführt , wenn wir unser eigenes Programm ausführen. Aber wir können unsere eigenen Methoden außerhalb der geschweiften Klammern für die Hauptfunktion erstellen , ich kann sagen, öffentlich, statisch, ungültig, zum Beispiel Klammern und dann geschweifte Klammern. Und hier drin können wir jeden Code schreiben, den Sie wollen. Zum Beispiel kann ich einfach Hello World ausdrucken. Dann kann ich in unserer Hauptmethode ein Beispiel sagen. Und es wird automatisch wissen, dass wir versuchen, diese Funktion auszuführen. Wenn ich die Umschalttaste und F2 drücke, sollte es unser Programm ausführen. Und hier sehen wir HelloWorld in der Konsole. Hier passiert also viel. Und ich habe auch Methoden erwähnt, und es hat auch Funktionen erwähnt. Und Funktionen sind praktisch das Gleiche, obwohl es einen leichten Unterschied gibt. Funktion ist im Grunde das, was wir hier sehen. Dies ist technisch gesehen eine Funktion und das ist es auch. Aber wann immer eine Funktion in einer Klasse ist, was ich in einem zukünftigen Video erläutern werde. Diese werden jetzt Methoden genannt, aber in den meisten Fällen spielt es keine Rolle. Sie sind größtenteils austauschbar . Aber technisch gesehen befindet sich eine Funktion außerhalb einer Klasse und eine Methode befindet sich im Inneren. Jetzt werden wir die Klassen in Zukunft noch genauer abdecken , denken Sie an sie als Container in dem alle Ihre Methoden sitzen können. diese Klammern hier hinzufügen, wird diese Funktion aufgerufen oder ausgeführt oder ausgelöst. Dies sind alles austauschbare Begriffe im Grunde genommen eine Möglichkeit haben, die Funktion auszuführen. Dies sind auch gängige Terminologien, die verwendet werden, wenn wir tatsächlich versuchen, eine Funktion auszuführen. Jetzt fragen Sie sich vielleicht, warum die Beispielmethode genannt wird , wenn wir Hello World einfach in der Hauptmethode drucken können . Nun, das liegt daran, dass dies offensichtlich ein zu vereinfachtes Beispiel ist. In einem echten Programm möchten Sie diese Beispielfunktion möglicherweise nicht nur einmal verwenden. Vielleicht möchten Sie diese Beispielfunktion mehrmals in Ihrer Klasse verwenden mehrmals in Ihrer Klasse oder waren während Ihres gesamten Projekts. Die Fähigkeit, bestimmte Funktionen in ihre eigenen Methoden zu abstrahieren , macht es viel einfacher , diese Funktionalität wiederzuverwenden. Wir werden dies in realen Beispielen sehen wenn wir zum Kurs vorankommen. Aber jetzt lassen Sie uns erklären, was diese Klammern sind und was diese Leere genau hier bedeutet. Grundsätzlich kann eine Funktion Eingaben empfangen und sie kann auch Input zurückgeben. Ich werde diese Kommentare los . Und wenn ich auf den Beispielnamen klicke und die Umschalttaste und F6 drücke, kann ich jetzt diese gesamte Funktion umgestalten oder umbenennen. Ich kann „add“ sagen. Wenn ich nun die Eingabetaste drücke, benennt es sowohl die Funktion als auch den Funktionsaufruf um. Jetzt können wir innerhalb der Klammern etwas hinzufügen, das als Parameter bekannt ist. Zum Beispiel kann ich int num eins und int num2 sagen. Diese sind durch ein Komma getrennt. Wir können sogar mehrere Arten von Variablen haben. Zum Beispiel String-Beispiel. Aber in diesem Fall fügen wir nur zwei Zahlen hinzu. Es ist also nicht nötig, hier eine Zeichenfolge zu haben. Jetzt gibt uns automatisch intelligent diesen roten Pfeil hier und sagt, dass wir ihn nicht ohne Parameter aufrufen können. So können wir hier einige Informationen weitergeben , zum Beispiel 510, und jetzt haben wir keine Fehler mehr, aber dieser Code funktioniert nicht so, wie wir es erwarten. Das liegt daran, dass wir immer noch einfach nur Hello World drucken. Aber was wir tun wollten, ist, dass wir die Summe zwischen Num1 und Num2 zurückgeben wollen. Ich kann sagen, return num1 plus num2. Jetzt gibt es uns einen Fehler hier. Wenn ich den Mauszeiger darüber fahre, kann kein Wert von einer Methode mit einem ungültigen Ergebnistyp zurückgegeben werden. Dies vermeidet genau hier, bedeutet, dass nichts zurückgegeben wird. Wir müssen uns sehr darüber im Klaren sein, welche Art von Daten von jeder Funktion zurückgegeben wird. In diesem Fall geben wir eine ganze Zahl zurück , weil wir die Einführung hinzufügen. Also könnten wir eine Lücke in int ändern und der Fehler verschwindet. Jetzt hier drüben kann ich sagen, dass int sum gleich 510 addiert, und ich kann einige ausdrucken. Wenn ich das jetzt mit Shift F zehn ausführe, wird dies den 15. auf der Konsole drucken. Wenn wir das wollten, könnten wir diesen Funktionsaufruf auch einfach innerhalb der Druckzeilenfunktion übergeben . Und tatsächlich war die Druckzeile eine eigene integrierte Funktion , die wir die ganze Zeit genutzt haben. Es hat seine eigenen Klammern und wir geben Informationen an sie weiter, genau wie wir es mit dieser Add-Funktion sind. Und hier ist ein perfektes Beispiel dafür warum wir Funktionen erstellen wollen. Weil ich das ein paar Mal kopieren und einfügen kann. Und ich kann jetzt verschiedene Werte hinzufügen, die ich wollte. Dies gibt uns jetzt drei verschiedene Ergebnisse von 1520 und negativen drei. Und das liegt daran, dass wir hier eine einfache Add-Funktion haben . Jetzt ist dies offensichtlich eine sehr einfache Funktion. Aber wenn wir kompliziertere Funktionen mit mehr Code darin hatten , können Sie die Vorteile sehen Sie den Code nur einmal schreiben müssen dass Sie den Code nur einmal schreiben müssen und dann von verschiedenen Orten aus ausgeführt werden viele Male wie du es willst. Eine letzte Anmerkung ist, dass diese hier technisch als Parameter bezeichnet werden, aber wenn sie übergeben werden, z. B. genau hier oder diese Zahlen direkt, werden diese als Argumente bezeichnet. Sie haben Parameter und Argumente. Genau wie Funktionen oder Methoden werden diese oft austauschbar verwendet, aber technisch gesehen wird das, was Sie in die Funktion selbst schreiben , als Parameter bezeichnet. Und was Sie in die Funktion übergeben , wird als Argumente bezeichnet. Aber auch hier werden sie, genau wie Funktionen versus Methoden, oft austauschbar verwendet. 18. Method: Im vorherigen Video haben wir eine einfache Add-Funktion erstellt , die die Summe zwischen zwei Zahlen zurückgibt. Aber was ist, wenn wir Strings zusammenfügen wollen , um einen Satz zu erstellen? Zum Beispiel kann ich ausdrucken add hallo and world. Und offensichtlich funktioniert das nicht. Aber natürlich könnte ich Add 55 ausdrucken und das würde funktionieren. In der Regel können Sie normalerweise nur eine Methode mit demselben Namen haben, ähnlich wie Variablen, aber wir können etwas tun als Methodenüberladung bekannt ist. Dies bedeutet im Grunde genommen, mehrere Methoden mit demselben Namen, aber unterschiedlichen Parametern und unterschiedlichen Rückgabetypen zu haben mehrere Methoden mit demselben Namen, . Zum Beispiel kann ich eine öffentliche statische Zeichenfolge mit einem Großbuchstaben S, String s1 und S2 sagen statische Zeichenfolge mit einem Großbuchstaben S, . Jetzt kann ich hier s1 plus ein Leerzeichen plus S2 zurückgeben. Grundsätzlich setzen Sie die beiden Wörter zusammen. Jetzt haben wir zwei Methoden , die denselben Namen haben, aber wir haben sie überlastet, wo Java jetzt weiß, welche aufgerufen werden soll abhängig von den übergebenen Parametern. Online sind fünf Passieren und Strings. Also wie wird hier eine Methode aufrufen? Linien bleiben für die Weitergabe einer Ganzzahl haften. Also wie nennt man die Methode hier? Ich kann weitermachen und dieses Holster die Ausgabe ausführen. Hier sehen wir HelloWorld und zehn. Überladen von Methoden ist oft in Situationen wie diesen nützlich, denen Sie ähnliche Funktionalitäten haben, in denen Sie ähnliche Funktionalitäten haben, aber verschiedene Arten von Variablen übergeben möchten. Sie können diese Methoden überladen, sie grundsätzlich verkeuern und unterschiedliche Parameter und möglicherweise einen anderen Rückgabetyp haben unterschiedliche Parameter und möglicherweise einen anderen Rückgabetyp , wenn dies für Sie sinnvoll ist. 19. Umfang: Jedes Mal, wenn wir eine öffnende geschweifte Klammer erstellen, wie diese hier, schafft es etwas, das als Scope bekannt ist. Und der Umfang wird einschränken, was bestimmte Variablen verwenden kann und was nicht. Zum Beispiel kann ich sagen, dass int counter gleich 0 ist. Und dann erstelle ich eine While-Schleife , um diesen Zähler zu erhöhen. Während der Zähler weniger als zehn ist. Ich kann dann Counter Plus Plus sagen. Jetzt können wir als Zähler vollkommen in Ordnung zugreifen, also kann ich ihn hier ausdrucken und alles funktioniert wie erwartet. Aber was passiert, wenn ich eine zweite Variable darin erstelle? Zum Beispiel sage ich, dass int example gleich 15 ist. Und ich sollte das aus irgendeinem Grund ausdrucken. Offensichtlich ergibt es nicht zu viel Sinn, aber das ist nur ein Beispiel. Bisher funktioniert alles. Aber was passiert, wenn ich versuche, außerhalb des While-Loop-Bereichs auf ein Beispiel zuzugreifen ? Also könnte ich versuchen, das auszudrucken. Ich kann ein Beispiel hinzufügen und wir erhalten hier einen Fehler. Wenn ich den Mauszeiger darüber fahre, heißt es, das Symbolbeispiel kann nicht aufgelöst werden und es hat sogar eine Lösung hier. Oder ich kann klicken, um das int-Beispiel in den aktuellen Bereich zu bringen . Beachten Sie, dass hier ein Beispiel online 14 erstellt wird. Aber wenn ich auf die Lösung klicke, erstellen wir jetzt die Variable in Zeile neun, die sich innerhalb des Hauptfunktionsbereichs befindet. Dies bedeutet, dass alles innerhalb der Hauptfunktion es verwenden kann, einschließlich des While-Loops-eigenen Bereichs, da ich mich auch innerhalb der Hauptfunktion befinde. Es hat also unseren Code geändert, um einfach ein Beispiel mit dem Wert 15 neu zuzuweisen. Aber wir erstellen es außerhalb der While-Schleife. Nun, trotz all dem gesagt, ist es keine gute Idee, alle Ihre Variablen einfach blind an den Anfang Ihrer Funktion zu stellen . Nehmen wir zum Beispiel an, dass ich diese Variable hier in Zeile 20 nicht ausdrucke. In diesem Fall muss die Beispielvariable nicht im Hauptbereich definiert werden. Stattdessen könnte es einfach im While-Loop-Bereich definiert werden. Ich könnte int example sagen. Und dann kann ich die Variablenerstellung genau hier loswerden . In der Regel sollten Sie Ihre Variablen, sofern Sie keinen guten Grund dazu haben , immer so lokal wie möglich definieren . Damit meine ich, genau hier ist dies lokal wie möglich, ist dies lokal wie möglich weil wir die Variable online 16 verwenden. Also geht es an Ihren lokalen Bereich genau hier. Es ist nicht notwendig, es außerhalb des Hauptbereichs zu definieren, denn im Moment verwenden wir mit diesem Code kein Anti, den Hauptbereich. Wir verwenden es nur innerhalb des While-Loop-Bereichs. 20. Ternärer Operator: Manchmal möchten Sie vielleicht eine if-Anweisung schreiben, aber auf eine verdichteter Weise ist dies oft der Fall, wenn Sie einen einzelnen Wert haben möchten oder einer Variablen abhängig von einem wahre oder falsche Aussage, wir können erreichen, dass dies etwas war als ternärer Operator bekannt ist. Dies wird im Grunde eine Art von Bedingung sein , gefolgt von einem Fragezeichen, dann einem wahren Wert, Doppelpunkt und dann einem falschen Wert. Jetzt mag das verwirrend erscheinen. Werfen wir also einen Blick auf ein echtes Beispiel. Ich werde ein boolesches Element namens is member erstellen , bis dies dem Wert true entspricht. Dies kann sein, wenn Sie irgendwo für eine Mitgliedschaft bezahlen und diese eine einmalige einmalige Zahlung anbieten, erhalten Sie möglicherweise einen Rabatt auf diesen Kauf. So kann ich zum Beispiel hier sagen, dass int price equals Mitglied ist. Auch hier ist dies unser Zustand. Eine Bedingung ist nur ein boolescher Ausdruck. Eine einfache boolesche Aussage wird also einwandfrei funktionieren. Also Fragezeichen, und dann haben wir unseren wahren Wert. In diesem Fall könnte der Preis 10 USD betragen. Aber was sagt, dass wir Menschen, die noch nicht Mitglieder sind , einen höheren Preis verlangen wollen . Also kann ich jeden Doppelpunkt hinzufügen und dann könnte der Preis hier bei 40 Dollar liegen. Jetzt kann ich den Preis hier ausdrucken. Und ich kann das mit Shift und FTN ausführen. Hier sehen wir zehn in der Konsole. Aber wenn ich das Mitglied zu false ändere und ich das ausführe, werden wir 40 in der Konsole sehen. Der Grund dafür ist, dass diese Bedingung hier falsch ist. Also, was wird hier diesen Code verwenden , der teilweise falsch war, alles, was nach dem Doppelpunkt verwendet wird. Wenn die Bedingung falsch ist, wird alles vor dem Doppelpunkt verwendet, wenn es wahr ist. Jetzt könnten wir offensichtlich etwas Ähnliches tun. Wenn ich sage, dass int price gleich 0 ist, dann kann ich sagen, ob es ist, denken Sie daran, ich kann jetzt sagen, dass der Kurs zehn ist, sonst ist der Kurs 40. Und das wird genauso funktionieren. Aber ein ternärer Operator glänzt hier wirklich , wenn Sie sehr einfache if-Anweisungen verwenden , bei denen Sie dies in einer einzigen Codezeile haben möchten. Weil es offensichtlich viel einfacher ist, diese eine Codezeile zu schreiben, als all dies zu schreiben. 21. Arrays: Sprechen wir jetzt über Arrays, die im Grunde nur eine Sammlung von Variablen sind. Nehmen wir zum Beispiel an, ich habe eine Reihe verschiedener Testergebnisse für Schüler. Ich kann sagen, dass der Student eins gleich 96 ist, int Schüler zwei gleich 49, Schüler drei gleich 76 und so weiter und so weiter. Wenn ich nicht ein paar davon habe, möchte ich nicht unbedingt eine Reihe verschiedener Variablen erstellen. Stattdessen kann ich eine Variable erstellen , die als Array bezeichnet wird. Dies wird im Grunde eine Sammlung oder eine Liste verschiedener Variablen sein . Ich muss zuerst die Variable angeben , die das Array halten wird. Jedes Array kann nur einen einzigen Typ enthalten . Man kann sie nicht mischen und abgleichen. Beispielsweise können Sie keine Ganzzahl mit einer Zeichenfolge haben, die alle genau denselben Typ haben müssen. Also kann ich int sagen, eckige Klammern öffnen und schließen. Dies stellt ein Array dar. Ich konnte nicht sagen, dass die Ergebnisse der Schüler einer neuen int Breite entsprechen, auch die eckigen Klammern. Dies wird unser eigenes Array erstellen. Aber wenn wir ein Array ohne Anfangswerte erstellen , wofür ich Ihnen hier in Kürze ein Beispiel zeige, müssen wir angeben wie viele verschiedene Arten von für wie viele verschiedene Arten von Elementen wir Platz schaffen möchten. In diesem Fall wollte ich Platz für drei schaffen. Und so habe ich jetzt ein Array erstellt, das bis zu den drei Ganzzahlen halten kann , um einen bestimmten Wert zuzuweisen. Ich kann sagen, dass Schüler Punkte, eckige Klammern. Und hier geben wir etwas an, das als Index bekannt ist . Dies ist im Grunde nur ein Zähler , für den genau Slot wir von den drei verwenden werden, die wir erhalten. Dies beginnt bei 0 zu zählen. Ich kann also sagen, dass Schüler den Index von 0 gleich 96. Die Schüler bewerten den Index von eins gleich 49. Die Schüler bewerten den Index von zwei gleich 76. Jetzt werde ich diese drei Ganzzahlen hier oben los . Und jetzt möchte ich jede davon auf die Konsole ausdrucken . Um dies zu tun, können wir eine sehr ähnliche Syntax verwenden. So kann ich den Punkteindex der Schüler von 0 ausdrucken. Ich werde das mit Control C und Control V oder Befehl C, Befehl V auf einem Mac kopieren und einfügen mit Control C und Control V oder Befehl C, Befehl V auf einem Mac kopieren und . Und jetzt kann ich diese Indizes auf 12 ändern. Jetzt kann ich das mit Shift und FTN ausführen. Hier sehen wir alle drei Zahlen. Aber was passiert, wenn ich versuche , auf Index drei zuzugreifen , der eigentlich nicht existiert. In der Tat bekommen wir diese kleine Warnung genau hier. Wenn ich den Mauszeiger darüber fahre, heißt es, Array-Index ist aus dem Gleichgewicht. Wenn ich das ausführe, erhalten wir tatsächlich einen Fehler in unserer Konsole. Und das ist als Ausnahme bekannt. Eine Ausnahme ist, dass etwas in Zukunft einen weiteren Blick werfen wird. Aber im Moment betrachte es einfach als einen Fehler. Der Grund, warum wir das bekommen haben, ist, dass wir versuchen , auf etwas zuzugreifen, für das das Array keinen Platz hat. Wir haben in diesem Array nur Platz für drei Ganzzahlen zugewiesen, und wir haben alle drei verwendet. Denken Sie noch einmal daran, es beginnt bei 0 zu zählen. Also die drei Spots, die wir haben unsere 012. Daher kann Index drei nicht existieren. Und es heißt, auf etwas außerhalb der Grenzen dieses Arrays zuzugreifen . Ein weiteres Beispiel, das ich Ihnen zeigen möchte, ist, wie Sie eine Ganzzahl erstellen , indem Sie beim Erstellen bestimmte Werte festlegen. Anstatt also drei anzugeben, können wir dies löschen. Und dann werden wir nach den eckigen Klammern unsere eigenen geschweiften Klammern erstellen. Hier drin. Wir können eine beliebige Anzahl von Elementen hinzufügen. Wir wollen Beispiel sechsundneunzig, neunundvierzig und sechsundsiebzig. Und jetzt haben wir diese Warnungen hier. Wenn ich den Mauszeiger darüber fahre, heißt es, diesem Wert bereits eine Variable zugewiesen ist. Im Wesentlichen sind diese drei Codezeilen hier nicht notwendigerweise überhaupt. Wenn Sie sie löschen und das Programm erneut ausführen, erhalten wir genau die gleiche Ausgabe wie Sie hier sehen. Jetzt können wir Arrays für jede Art von Variablen haben. Zum Beispiel können wir ein Array von Strings oder ein Array von Booleans erstellen , aber dies ist ein sehr einfaches Beispiel mit Ganzzahlen. Und eine letzte Sache, die ich Ihnen zeigen wollte, ist, wie Sie auf die Länge oder die Anzahl der Elemente innerhalb eines Arrays zugreifen können. Und eine letzte Sache, die ich Ihnen zeigen wollte, ist wie viele Elemente es gibt, wie viele Elemente befinden sich in einem Array? Ich kann das ausdrucken. Ich werde hier auf die Punktepunkte der Schüler zugreifen. Wir können auf die Länge zugreifen. Dies wird eine ganze Zahl sein, und es wird sagen, wie viele Elemente sich in diesem Array befinden. Also kann ich weitermachen und das machen. Hier sehen wir die Nummer drei , weil es drei Elemente gibt. Wenn ich hier ein zusätzliches hinzugefügt habe, kann ich das noch einmal ausführen und wir sollten vier sehen , wie wir es hier tun. Jetzt sehen wir natürlich nicht, dass die 100 auf der Konsole gedruckt werden, da wir keinen Index drei drucken , der jetzt dank dieser 100 genau hier existiert. Aber wir drucken nur die ersten Nullen oder die 100 sind auf der Konsole ausgestellt. 22. Für jede Schleife: Im vorherigen Video haben wir uns angeschaut, wie Arrays erstellt werden und wie man auf jedes einzelne Element zugreifen kann. Aber was wäre, wenn wir eine größere Anzahl von Ganzzahlen hätten und nicht hauptsächlich jede einzelne ausdrucken wollen. Wir können eine Standardschleife oder etwas, das als für jede Schleife bekannt ist als für jede Schleife , um jedes Element zu durchlaufen. Hier zeige ich Ihnen zwei Beispiele. Hier haben wir einen Standard for-Schleife. Ich zeige Ihnen auch ein neues Konzept , das eine für jede Schleife ist. Aber zuerst haben wir einen Standard für die Schleife, wie ich schon sagte, für Klammern, geschweifte Klammern. Und drinnen erstelle ich zuerst meinen eigenen Integer Int-Counter gleich 0. Während der Zähler kleiner ist als die Schüler Punktlänge. Wir können dann den Zähler erhöhen. Und dann hier drin kann ich sicherlich den Zählerindex der Schüler ausdrucken . Wir können hier Variablen als Index übergeben. Und dies wird auf Index 0, dann 12 usw. zugreifen , bis wir jedes einzelne Element dieses Arrays durchlaufen. Um dies zu beweisen, kann ich das mit Shift und F11 ausführen. Hier sehen wir alle vier Zahlen in unserer Konsole. Jetzt ist das Durchlaufen von Arrays so üblich, dass sie eine kürzere Syntax erstellt haben. Ich werde diese drei Zeilen auskommentieren. Hier. Ich werde etwas benutzen, das als for-each-Schleife bekannt ist. Ich kann für int number, colon, dann den Namen unseres Arrays sagen . In diesem Fall punktet ein Schüler. In hier wird die Anzahl der Variablen jedes einzelne Element enthalten , während es durch sie läuft. Bei der ersten Iteration dieser Schleife wird die Zahlenvariable den Wert 96 enthalten. es das nächste Mal durchläuft, hält es 49 und so weiter. Um dies zu beweisen, kann ich die Nummer ausdrucken und ich kann diese mit Shift und FTN ausführen. Und hier sehen wir die gleiche exakte Ausgabe. In der Regel funktioniert eine foreach-Schleife, aber in einigen Anwendungsfällen benötigen Sie möglicherweise Zugriff auf den Index , den Sie verwenden. Zum Beispiel diese Zählervariable genau hier. In diesen Situationen können Sie einfach eine Standard-for-Schleife verwenden. Aber in den meisten Situationen wird die für jede Schleife in Ordnung sein. 23. Mehrdimensionale Arrays: In früheren Videos haben wir uns einfache Arrays angeschaut, aber jetzt schauen wir uns mehrdimensionale Arrays an. Grundsätzlich hat eine Raisa Arrays als Werte. Hier erstelle ich ein Array mit einer Reihe von Scores. Zum Beispiel kann ich hier in zwei Klammern sagen, Punktzahl gleich geschweifte Klammern. Und hier wird ein weiteres Array von Werten erwartet. Aber um diese Arrays zu definieren, verwenden wir nur die geschweiften Klammern. Zum Beispiel haben wir unsere geschweiften Klammern mit neunzig, sechs, vierzig, fünf und achtzig. Um dies jetzt einfacher zu verstehen, um dies jetzt zu verstehen, um dies einfacher zu verstehen was das für Test1 sein wird . Wir haben dann test2, der unterschiedliche Punktzahlen hat, sagen wir 8666 und dann 90. Wie wollen wir jedes einzelne Element durchlaufen? Wir müssen zuerst jedes einzelne Array durchlaufen, wobei der Wert dann zu jedem einzelnen Array wird. So können wir sowohl eine Standard-For-Loop als auch eine für jede Schleife verwenden. Ich zeige dir ein Beispiel für beides. Für den Standard for-loop denke ich, dass es für int-Zähler 0 ist, während der Zähler kleiner ist als die Punktlänge der Punktwerte, kann ich dann den Zähler erhöhen. Jetzt brauchen wir hier etwas, das als verschachtelte for-Schleife bekannt ist. Wo ist, wo haben wir eine Schleife innerhalb einer Schleife? Ich kann sagen, dass der Int-Zähler gleich 0 ist, während Zähler zwei kleiner als die Punktzahl ist, der Index der Zählerpunktlänge plus einem Gegenwert gegenüber dem, was hier passiert. Grundsätzlich machen wir eine Standard-for-Schleife, die Sie sicher schon verstehen. Aber dann haben wir eine verschachtelte for-Schleife. Ich erstelle eine zweite Zählervariable und verwende sie überall außer hier. Was im Grunde passieren wird, ist, dass wir jedes einzelne Array durchlaufen. Und darauf werden wir auf der ersten for-Schleife Zugriff haben . Index 0 der ersten for-Schleife wird dieser gesamte Array-Index sein , oder die zweite Iteration, die erneut durchläuft, wird dieses gesamte Array sein. Aber jetzt werden wir auf jedes einzelne Element innerhalb Scoreindizes des Zählers zugreifen, wird zunächst auf dieses Array zugreifen. Wir greifen vom ersten Array aus auf die length -Eigenschaft zu. Und dann, wenn die anfängliche For-Loop-Schleife wieder läuft, erhalten wir Zugriff auf das zweite Array, da der Zähler mit einem gleichen Array ist. noch einmal daran, dass dies Index 0 ist. Index eins. Die Indizes beginnen bei 0 zu zählen. Um auf jeden einzelnen Wert zuzugreifen, kann ich ausdrucken. Zuerst werde ich Test plus ausdrucken, ich füge Klammern hinzu und ich kann Zähler plus eins sagen. Der Grund dafür ist , dass der Zähler bei 0 beginnt und wir test1, test2 und nicht 0 testen wollen , testen Sie eins. Wir fügen einfach einen zum Zähler hinzu. Aber dies wird die Gegenvariable überhaupt nicht ändern , da wir im Wesentlichen den Wert des Zählers nehmen und dann einen hinzufügen. Aber das weisen wir nicht der Gegenvariablen zu. Danach werden wir jeden einzelnen Punktestand hinzufügen. Zum Beispiel Scores Index des Zählers und dann eine zweite Klammer, Index des Zählers, der gestoppt werden soll. Ich führe das mit Shift und F2 aus. Wir sehen jetzt, dass Test1 9825 ist und Test zwei sechsundachtzig, sechsundsechzig und neunzig ist . Nur um die Dinge ein wenig zu vereinfachen, wenn ich diese Klammern loswerde und das führe, bekommen wir im Grunde genau das Gleiche, außer dass dieser Zähler bekommen wir im Grunde genau das Gleiche, außer dass dieser Zähler hier Index 0 zeigt , während wir durchlaufen das allererste Array und index1, während wir das zweite Array durchlaufen. Der einzige Grund, warum ich hier plus eins hinzugefügt habe , ist, es menschenlesbarer zu machen. Wie Sie sehen können, ist dieser Code etwas verwirrend. Und normalerweise werden Sie nicht oft mit mehrdimensionalen Arrays arbeiten . Idealerweise gibt es bessere Lösungen für den Umgang mit Ihren Daten, insbesondere wenn Ihre Daten drei oder mehr Dimensionen benötigen Arrays, es wird normalerweise immer eine bessere Lösung geben , als so viele verschachtelte Arrays zu verwenden. Aber um hier vollständig zu sein, werde ich Ihnen zeigen, wie Sie ein verschachteltes Array oder ein mehrdimensionales Array durchlaufen verschachteltes Array oder ein können, mit einem, für jede Schleife, sage ich für int Array, ich kann nenne dieses Array einen Doppelpunktwert. Dies wird jedes einzelne Array durchlaufen. Jetzt haben wir hier Zugriff auf jedes Array. Für die erste Iteration wir für jede Schleife Zugriff auf diesen Wert. Und dann werden wir bei der nächsten Iteration Zugriff auf diesen Wert erhalten. Wir können für jede Schleife in diesem Array einen Standard verwenden. Für Nummer, Doppelpunkt-Array eins. Jetzt können wir hier die Nummer ausdrucken. Jetzt kann ich das mit Shift und F2 ausführen. Und hier sehen wir alle sechs Einzelnummern. Dies ist ein gutes Beispiel, wie ich im letzten Video erwähnt habe, dass für jede Loops keinen Zugriff auf den Index haben. Hier sagen wir diese Testnummer weil wir den Index im Wesentlichen genau hier verwenden. Beides für jede Loops. Darauf haben wir nicht unbedingt Zugriff. Wenn Sie auf den Index zugreifen möchten , um die Testnummer auszudrucken, müssten Sie einen Standard-For-Loop verwenden. 24. Varargs: Jetzt, da wir Arrays besser verstehen, können wir ein Konzept, das als Varargs bekannt ist , angehen . Dies ist eine andere Möglichkeit, so viele verschiedene Parameter, wie Sie möchten, in eine Funktion zu übergeben . Also werde ich eine sehr einfache Add-Funktion erstellen. Ich kann öffentlich sagen, static int add. Und hier kann ich int num1, int num2 hier drin haben. Es ist sehr einfach. Wir geben einfach num1 plus num2 zurück. Um sicherzustellen, dass alles funktioniert, kann ich 1015 hinzufügen, und ich kann dies mit Shift und F11 ausführen. Hier sehen wir die Summe als 25, also scheint alles zu funktionieren. Aber was ist, wenn ich hier eine andere Nummer oder mehrere verschiedene Zahlen hinzufügen möchte, so viele ich möchte. Das Problem hier ist, dass ich jetzt einen individuellen Parameter hinzufügen für jeden einzelnen Eingang und sich möglicherweise eine Reihe von Eingaben ändern könnte. Nun, das Konzept der Varargs löst das. Wir können im Wesentlichen eine beliebige Anzahl von Ganzzahlen in unsere Parameter übergeben . Zum Beispiel kann ich int drei Punkte und dann Nymphen oder Zahlen sagen , welche Sie bevorzugen. Zahlen werden im Wesentlichen ein Array sein. Trotzdem haben wir keinen Zugriff mehr auf num1, num2. Stattdessen müssen wir jetzt jedes einzelne Element dieses Arrays durchlaufen , wie ich schon sagte, int sum ist 0. Und dann kann ich welche zurückgeben. Aber bevor wir zurückkehren, müssen wir tatsächlich jede einzelne Zahl zur Summe hinzufügen . Ich kann eine Standard-for-Loop verwenden oder es kann eine für jede Schleife verwenden. Also für int-Zahl Doppelpunktzahlen. Und dann kann ich sagen, dass Summe plus gleich Zahl ist. Jetzt kann ich das machen und wir sollten die Summe all dieser Zahlen genau hier sehen , die bei 53 Uhr. Wir können dies sogar auf so viele oder so wenige Argumente senken , wie wir wollen. Zum Beispiel kann ich einfach Zinn haben und es wird zehn ausdrucken. Eine Sache, die man beachten sollte, ist, dass Varargs das allerletzte Argument sein müssen. Denn wenn wir hier zusätzliche Dinge hätten, aus welchem Grund auch immer wir, haben wir hier eine Ganzzahl der Schüler. Es weiß nicht, wo der Anfang ist und wo sie aufhören. Wenn wir zusätzliche Argumente haben, müssen wir sie vor den Varargs hinzufügen. Varargs sollten immer ganz am Ende sein. Es weiß also, wo sie anfangen, und es weiß, dass auf jeden weiteren übergebenen Parameter als diese Varargs zugegriffen werden wird. Zum Beispiel werden zehn hier Studenten sein, und es identifiziert das genau hier, aber alle zusätzlichen Zahlen hier. Also werden jetzt nur 515 Teil des varargs-Parameters sein. 25. Konstanten und Casting: Manchmal möchten Sie möglicherweise nicht, dass Ihre Variablen die Werte ändern, und manchmal auch möchten Sie den Typ der Variablen ändern , um die Ihre Variablen handelt. Lassen Sie uns zunächst einen Blick auf etwas werfen , das als Konstanten bekannt ist. Und das bedeutet im Grunde, dass sich ein variabler Wert nicht ändern kann. Wenn ich sage, dass der String-Name Alex entspricht, kann ich dies auf die Konsole ausdrucken. Und bevor ich das tue, kann ich das natürlich in meinen vollständigen Namen ändern , nämlich Alexander. Aber sagen wir hypothetisch, ich möchte nicht, dass sich dieser Wert ändert. Ich kann das endgültige Keyword hinzufügen bevor wir unsere Variable erstellen. Und jetzt bekomme ich genau hier einen Fehler. Wenn ich den Mauszeiger darüber fahre, heißt es , dass Sie einer endgültigen Variablen keinen Wert zuweisen können . Der Name fragt sich vielleicht, warum würdest du das tun wollen? Warum ändern Sie nicht einfach nicht den Wert der Variablen? Dies könnte die offensichtliche Lösung sein, wenn es um einfache Programme wie dieses geht. Aber in echten Programmen , in denen Sie Hunderte von Dateien auf Hunderttausenden von Codezeilen haben, möglicherweise sogar andere Mitarbeiter. Sie erinnern sich vielleicht nicht an alles, was Ihr Code tut. Und Sie erinnern sich vielleicht auch nicht daran , dass bestimmte Variablen Nebenwirkungen haben könnten, wenn Sie die Werte ändern. Wenn Sie eine Variable haben deren Werte sich nicht ändern sollten, sollten Sie sie hier zu einer endgültigen Variablen mit diesem Schlüsselwort machen . Als nächstes zeige ich Ihnen etwas, das als Casting bekannt ist. Im Grunde genommen können Sie eine Variable nehmen und sie einer anderen Variablen eines anderen Typs zuweisen. Zum Beispiel könnte ich sagen, dass int amount gleich zehn ist. Und ich kann dann ein Double erstellen , das einen Dezimalwert enthält. Deshalb können wir nicht ganze Zahlen haben. Und ich kann sagen, dass der neue Betrag gleich ist. Wenn ich jetzt weitermache und einen neuen Betrag ausdrucke und diesen mit Shift und FTN ausführe. Wir sehen jetzt zehn Punkte 0. Und in diesem Fall müssen wir eigentlich nichts werfen, da alle Doubles technisch gesehen immer noch ganze Zahlen sein können. Aber sobald wir ein Double erstellt haben, wird es die Dezimalzahl von 0 hinzufügen, aber nehmen wir an, dass dies rückgängig gemacht werden würde. Ich kann sagen, dass der doppelte Betrag 10,5 entspricht. Ich könnte dann sagen, dass int new amount gleich Betrag ist. Und wir bekommen hier einen Fehler. Wenn ich den Mauszeiger darüber fahre, heißt es, dass der erforderliche Typ eine Ganzzahl ist, aber der Typ als Double angegeben ist. Nun, wir können etwas tun, das als Gießen dieser Ganzzahl bekannt ist außer dem doppelten Wert als ganzzahliger Wert. Und dazu können wir Klammern und den Variablentyp hinzufügen , in diesem Fall int direkt vor dem Namen der Zielvariablen , der in diesem Fall Betrag ist. Wenn ich das jetzt ausführe, sagen wir jetzt zehn in der Konsole und nicht 10.5, weil ganze Zahlen nur ganze Zahlen sein können. Alles, was nicht akzeptabel ist, zum Beispiel dieser 0.5 wird einfach ignoriert. Die ganze Zahl, die in diesem Fall übrig ist, wird Tin in unsere neue Betragsvariable genau hier zugeordnet . So wirft man primitive Werte aus. Und ich werde den Unterschied zwischen primitiven und Referenzarten von Werten in einem zukünftigen Video diskutieren primitiven und Referenzarten . Nehmen wir ein kurzes Beispiel dafür, wie eine Ganzzahl in eine Zeichenfolge konvertiert wird. So haben wir zum Beispiel eine ganze Zahl zehn, aber wir wollen die Zeichenfolge zehn, ungefähr so. Nun, ich kann sagen, dass die Int-Zahl gleich zehn ist. Dann kann ich sagen, string, string ist gleich string mit einem großen S-Punktwert von. Hier sehen wir alle verschiedenen möglichen Parameter, die wir übergeben können. Wir können eine ganze Zahl, ein Zeichen über Wasser und so viele andere übergeben . In diesem Fall wollen wir nur eine Nummer weitergeben. Und dann kann ich die Zeichenfolge auf die Konsole ausdrucken. Und wenn ich das durchführe, werden wir zehn als String sehen. Wenn ich jetzt das Gegenteil machen wollte, kann ich String sagen, String ist zehn in Anführungszeichen. Ich könnte dann Int-Nummer sagen. Ich könnte dann Integer mit einem Kapital sagen I dot parse int. Und hier sehen wir, dass wir eine Schnur einreichen können. Und diese Top-Funktion wird auch eine ganze Zahl zurückgeben. Ich kann die String-Argumente übergeben. Dann kann ich die Nummer auf die Konsole ausdrucken. Wenn ich das durchführe, sollten wir immer noch zehn sehen. Aber jetzt ist dies ein tatsächlicher numerischer Wert. Also wollte ich, dass ich das um eins erhöhen könnte , bevor ich es ausdrucke. Mit C11 haben wir vorher eine Zahl in eine Zeichenfolge konvertiert, sodass wir diese nicht erhöhen konnten, sobald sie bereits in String-Form war. 26. Häufige String: An dieser Stelle solltest du bereits wissen, wie ein Basic ist, wenn Stephen funktioniert. Wenn Sie jedoch jemals versucht haben Strings mit einer if-Anweisung zu vergleichen, Sie möglicherweise fest, dass sie nicht richtig funktioniert. Lassen Sie uns zum Beispiel damit beginnen, den Benutzer nach einer Eingabe zu fragen. Ich könnte sagen, gib deinen Namen ein. Dann erstelle ich danach einen Scanner. Ich nenne diesen Input. Ich werde das gleich einem neuen Scanner machen , der in System dot n passiert. Dies ist alles ziemlich ähnliche Dinge, die wir zuvor gesehen haben. Ich könnte sagen Stream, Benutzername entspricht dem Eingabepunkt in der nächsten Zeile. Dadurch wird die gesamte Zeile abgerufen , die der Benutzer eingegeben hat. Sagen wir jetzt, wenn ich meinen Namen als Alex eintrage, wird es dann Hallo Alex sagen. Natürlich könnten wir in einem echten Programm einfach den Variablenwert verwenden. Aber ich möchte dies konkret in einer if-Aussage tun , um etwas zu demonstrieren. Ich kann sagen, wenn der Benutzername genau Alex entspricht, konnte ich Hello Alex nicht ausdrucken. Ich kann das mit Shift ausführen und ihn verlassen. Ich könnte dann meinen Namen eingeben und gebe die genaue Zeichenfolge ein, nach der wir suchen, in der if-Anweisung. Also Alex, mit einem Kapital a, wenn ich das eingebe und dann die Eingabetaste drücke, sehen wir nichts auf der Konsole gedruckt. liegt daran, dass Stärken nicht mit einem Doppelgleichheitszeichen verglichen werden können . Wenn ich den Mauszeiger darüber fahre, heißt es, dass String-Werte mit Double Equals verglichen werden und nicht gleich als Methode. Um Strings zu vergleichen. Anstatt Teig gleich zu verwenden, können wir die Saite nehmen, wir können Punkt drücken. Und hier haben wir Zugriff auf eine Reihe verschiedener Funktionen. Wir werden uns ein paar davon gegen Ende dieses Videos ansehen. Aber derjenige, den ich Ihnen zeigen möchte, heißt Gleich und ist gleich Ignorieren Fall. Also fangen wir mit Gleichen an. Hier können wir eine andere Zeichenfolge übergeben , zum Beispiel Alex und ich können das ausführen. Und ich kann jetzt Alex mit einem Kapital A betreten und es wird dann Hallo Alex sagen. Wenn ich das noch einmal durchführe, kann ich Alex mit einem Kleinbuchstaben eintragen und nichts, was wir gedruckt haben. Wenn ich die Großschreibung einer der beiden Strings ignorieren wollte , dann kann ich sagen, dass der Fall ignoriert wird und Alex weitergeben. Wenn ich das ausführe, kann ich Alex jetzt mit einem Kleinbuchstaben eintragen. Und es wird Hello Alex ausdrucken, weil es sich nicht um die Großschreibung einer der beiden Strings kümmern wird. So vergleichen wir zwei Strings innerhalb einer if-Anweisung. Aber jetzt schauen wir uns ein paar andere Beispiele für häufig verwendete String-Methoden an. Ich werde diesen ganzen Code löschen. Und ich werde einfach sagen, dass String Name gleich Alex ist. Und dann werde ich hier kein Thema drucken, in Kleinbuchstaben übernehmen. Ich konnte das nicht ausführen und wir werden Alex sehen, der ein Kapital hat. Jetzt zeigen wir sie alle Kleinbuchstaben in der Konsole an. In ähnlicher Weise müssen wir auch in Großbuchstaben sein. Und wenn ich das durchführe, sehen wir natürlich Alex in Großbuchstaben und in der Konsole. Es gibt ein paar andere Funktionen, die wir haben, wie zum Beispiel die Länge. Wenn ich das ausführe, werden wir sehen wie viele einzelne Zeichen sich innerhalb der Zeichenfolge befinden. In diesem Fall ist es für. Und wir können tatsächlich einfach eine Periode am Ende des Namens drücken und wir sehen eine Reihe anderer Methoden, die wir verwenden können. Zum Beispiel können wir hier ein Zeichen mit einem bestimmten Index erhalten . Hier bekomme ich den Index eins , der ein Kleinbuchstaben sein sollte. Wenn ich das ausführe, können wir das in unserer Konsole bestätigen. Hier sehen wir einen Kleinbuchstaben, in dem ich zurückgegangen bin. Wir haben eine Reihe anderer Möglichkeiten. Zum Beispiel können wir konkat, was bedeutet, verketten, im Grunde einen zusätzlichen Teil einer Zeichenfolge hinzuzufügen. Also kann ich meinen ganzen Nachnamen hier hinzufügen. Und wenn ich das durchführe, sehen wir jetzt Alex Flores. Und der Platz, der in der Konsole hinzugefügt wurde , liegt an dem Speicherplatz, den ich hier hinzugefügt habe. Standardmäßig werden keine Leerzeichen hinzugefügt. Es wird nur genau das tun , was du ihm sagst. Fühlen Sie sich frei, hier mit einigen anderen String-Funktionen herumzuspielen , hier mit einigen anderen String-Funktionen . Es gibt eine Reihe nützlicher , die Sie tatsächlich verwenden können, um die Zeichenfolge zu ändern oder die Zeichenfolge auf verschiedene Arten zu verwenden. 27. Fluchtsequenzen: Lassen Sie uns nun in ein anderes String-Konzept eintauchen als Escape-Sequenzen bekannt Dies werden im Grunde einzelne Zeichen sein , die innerhalb von Beschränkungen eine bestimmte Bedeutung haben . Zum Beispiel kann ich String sagen, string ist gleich hallo space, world. Ich drucke das auf die Konsole aus. Und natürlich würde das einfach Hello World ausdrucken. Aber was ist, wenn ich wollte, dass Hallo und Welt auf verschiedenen Zeilen stehen? Nun, ich kann einen Schrägstrich n. Jetzt wird dies eine orange Farbe. liegt daran, dass dies als Escape-Sequenz für Slash n bekannt ist, wird ein Zeilenumbruch sein. Um dies zu beweisen, kann ich es Swift Shift und FTN ausführen. Hier sehen wir Hello World in der nächsten Zeile. Ein anderer ist Forward Slash n , der ein Tab sein wird. Nachdem ich zum Beispiel eine neue Zeile hinzugefügt habe, kann ich jetzt eine neue Registerkarte hinzufügen. Und ich kann das nochmal machen. Hier sehen wir Hello world, aber die Welt wird jetzt einmal von einem Tab-Zeichen eingerückt. Wir können auch zwei Schrägstriche machen, die nur zu einem einzigen Schrägstrich werden. Aufgrund von Stunden fügen wir einen einzigen Schrägstrich hinzu. Es wird davon ausgegangen, dass dies ein Escape-Charakter oder eine Escape-Sequenz sein würde. Aber wenn ich einen tatsächlichen Schrägstrich und die Zeichenfolge wollte, musste ich diesem Schrägstrich nicht entkommen , indem ich im Grunde nur 200 Wörter Office hinzufügte. Ich kann das dann ausführen. Hier. Wir sehen jetzt einen Schrägstrich in der Zeichenfolge. Während es vorher davon ausgehen wird, dass wir versuchen werden, mit einem Kapital W zu fliehen, was eigentlich nichts bedeutet. Also wird es uns jetzt einen Fehler geben. Wir können auch doppelten Anführungszeichen entkommen. Dies wird also nur ein normales doppeltes Zitat. Und der Grund dafür ist, dass doppelte Anführungszeichen den Anfang oder das Ende einer Zeichenfolge darstellen. Wenn ich hier einfach ein doppeltes Zitat hinzufügen würde, wird es nicht wissen, dass dies Teil der Zeichenfolge sein wird. Vielmehr denkt man, dass wir versuchen, die aktuelle Zeichenfolge als Variable einzufügen. Wenn ich auf die Welt gegangen bin, um in Anführungszeichen zu sein, kann ich die doppelten Anführungszeichen hinzufügen, aber ich muss ihnen entkommen indem ich vorher eine Voraussicht hinzufüge. Jetzt sieht das etwas verwirrend aus. Also werde ich alle vorherigen Escape-Sequenzen durch nur ein einfaches Leerzeichen ersetzen alle vorherigen Escape-Sequenzen . Jetzt kann ich das ausführen und wir sollten Hello World sehen, aber die Welt ist in doppelte Anführungszeichen eingeschlossen. Jetzt gibt es eine Reihe anderer Escape-Sequenzzeichen , die Sie verwenden können, aber diese sind bei weitem die häufigsten. Du wirst es sehen. 28. Der Mathematikkurs und zufällige Zahlen: Werfen wir einen Blick auf den Mathematikunterricht. Und das hat ein paar verschiedene Dinge, die wir tun können , wenn es um grundlegende mathematische Operationen geht. Das erste Beispiel ist , den absoluten Wert einer Zahl zu erhalten , der im Grunde nur eine negative Zahl in eine positive Zahl umwandelt . Aber technischer gesehen wird dies die Entfernung von dieser Zahl zu 0 zählen. Ich werde Mathematik mit einem großen M-Punkt-Abs ausdrucken, was für absoluten Wert steht. Und hier können wir sehen, dass wir eine Reihe verschiedener numerischer Werte übergeben können . In diesem Fall können wir positive zehn übergehen. Ich bin gegangen, um das zu kopieren und einzufügen und negative Zehn zu übergeben. Und dann kann ich das mit Shift und FTN ausführen. Und hier sehen wir in beiden Fällen Zinn. Grundsätzlich wird dies nur eine negative Zahl in eine positive Zahl umwandeln . Ich gehe weiter und kommentiere das aus. Zukunft kann ich mindestens mathematische Punkte ausdrucken. Und dies wird bei zwei Zahlen desselben Typs annehmen , und dies wird den Mindestwert zwischen ihnen zurückgeben. Zum Beispiel kann ich 107 übergeben auch math.max ausdrucken, was ein ähnliches Konzept ist, aber wir werden den Maximalwert zwischen ihnen zurückgeben. Ich kann auch hier 107 zurückgeben. Wenn ich das zum ersten Mal durchführe, werden wir sieben bekommen , weil das der Mindestwert ist. Aber das zweite Mal werden wir zehn bekommen , weil das der maximale Wert ist . Wenn wir nun Mathe-Punkt sagen und all dies durchgehen würden, gibt es eine Reihe verschiedener mathematischer Operationen. Sie sind also vielleicht vertraut , je nachdem, wie erfahren Sie mit Mathematik in der Schule sind. Aber einige grundlegendere Beispiele werden Floor sein, der im Grunde nur die Zahl abgerundet wird. Und es versiegelt auch, was eine Nummer hochlaufen wird. Zum Beispiel kann ich 0.2 bestehen. Ich kann das hier rausdrucken. Dann kann ich auch Math.Floor ausdrucken und ich kann 0,9 passieren. Wenn ich das jetzt in unserer Konsole ausführe, werden wir eins und auch 0 sehen. Das wird sich zusammenrunden, egal was passiert, es spielt keine Rolle, ob es niedriger als fünf ist. Und es wird abrunden, egal was passiert, es spielt keine Rolle, ob es höher oder gleich fünf ist. Eine weitere Sache, die ich dir zeigen wollte, ist, wie man eine Zufallszahl generiert. Es gibt zwei Möglichkeiten, dies zu tun. Es gibt einen älteren Weg, den Sie höchstwahrscheinlich hinter einer Zeit in der Arbeit mit anderem Code sehen einer Zeit in der Arbeit mit werden, indem Sie anderen Tutorials folgen. Und es gibt einen neueren Weg. Der ältere Weg, kann ich sagen, int random ist gleich neuem Zufall mit einem großen R Klammern hier beim Drücken von Alt und Enter, um dies zu importieren, könnte ich dann NextInt sagen. Ich kann dann zufällig auf die Konsole ausdrucken. Wenn ich das ausführe, kriegen wir eine Zufallszahl. Offensichtlich wird dies eine beliebige Zufallszahl erzeugen, aber das wollen wir nicht unbedingt. Oft wollen wir, dass etwas zwischen 010 nur 0100 ist, solche Dinge. Also können wir hier eine ganze Zahl übergeben. Zum Beispiel, zehn, führe uns aus. Es wird jetzt eine Zufallszahl zwischen 09 erzeugen. Aber wenn wir eins bis zehn wollten, können wir einfach eins zum Ende hinzufügen. Wenn ich das nochmal mache, sehen wir hier zwei. Ich weiß nicht, ob ich das weiter führe, wir werden deine Zufallszahl zwischen 110 bekommen . Dies ist die alte Art, dies zu tun. Es gibt einen neuen Weg. Also wusste die Zufallszahl, ich könnte sagen, int random gleich thread, lokaler zufälliger Punkt, aktueller Punkt nächstes int. Und das funktioniert genau wie zuvor. Und auch mit der alten und der neuen Art dieses Wochenendes generieren Sie andere Zufallswerte, zum Beispiel Booleans. Wenn wir einen zufälligen Wahr- oder Falschwert wollten , der von Zeit zu Zeit auftauchen wird. Sie können den nächsten Booleschen Wert verwenden. Als nächstes kannst du Ram bekommen, Doubles und andere Dinge wie diese. Aber zum Beispiel können wir hier ein int passieren und dann wird die Grenze zehn sein, und wir fügen einen am Ende hinzu. Und ich kann dann zufällig auf die Konsole ausdrucken. Dies sind also die zwei verschiedenen Möglichkeiten, Zufallszahlen in Ihrem Java-Programm zu generieren . 29. Primitive vs. Primitive: Dieses Video wird etwas fortgeschrittener sein als frühere Videos. Wir werden etwas über primitive und Referenztypvariablen erfahren und wie bestimmte Variablen im Speicher gespeichert werden. Also werde ich mein Projekt genau hier minimieren. Wir haben also mehr Platz für diese Diagramme. Hier haben wir den Stack und hier haben wir den Haufen. Dies sind zwei verschiedene Orte, an denen Informationen im Speicher Ihres Computers gespeichert werden können. Wir sprechen zunächst über primitive Typwerte. Zum Beispiel könnte ich sagen, dass int number gleich zehn ist. Dies wird als primitiver Typ Evalue der Regel grundlegende Informationen speichern. Alle primitiven Typwerte werden direkt auf dem Stack gespeichert, und dies geht von unten nach oben. Andere Beispiele wären Boolean. Ich kann sagen, ist Programmierung gleich wahr? Ich kann dann Char Letter gleich a haben. Ich kann ein Double haben, ich kann das Pi nennen. Und das entspricht 3,14159. Und dies sind die wichtigsten primitiven Typwerte, die Sie sehen werden. Lass mich zurückgehen. Lassen Sie mich ein paar davon löschen und gehen wir zurück zu unserer Nummer. Aber was passiert, wenn ich eine Zahl zuweisen würde , die dem Wert von Nummer eins entspricht. Zum Beispiel wird Nummer zwei gleich der kühnsten Zahl tatsächlich noch einen völlig neuen Wert auf dem Stapel erzeugen. Jetzt entspricht Nummer zwei dem Wert der Zahl. Was würde passieren, wenn ich den Wert der Nummer eins ändern würde , der sich auf Nummer zwei auswirkt, werde ich die Nummer ausgeben. Und dann drucke ich in der nächsten Zeile Nummer zwei aus. Zuvor sage ich, dass Zahl gleich 15 ist. Was hier passieren wird, ist, weil es sich um zwei separate Werte handelt. Nummer zwei wird überhaupt nicht betroffen sein. Das wird also 15 und dann zehn drucken. Um dies zu beweisen, kann ich es mit Shift und FTN ausführen. Hier sehen wir 1510. Primitive Typen haben also ihren eigenen individuellen Wert auf dem Stack, auch wenn wir ihn einer vorhandenen Variablen zuweisen. Dadurch wird einfach eine andere Variable im Speicher Ihres Computers erstellt und diesen Wert zugewiesen. Dies bedeutet, dass Zeile acht eine separate Ganzzahl erstellt , die überhaupt keine Korrelation mit dieser Zeilennummer sieben hat , abgesehen von der Tatsache, dass sie den gleichen Wert haben. Das ist nett, aber was ist ein Referenztyp? Und während der Haufen benutzt wurde. Also lasse ich diesen ganzen Code hier und erstelle ein ganzzahliges Array. Ich kann sagen, dass int-Zahlen gleich 51015 sind. Und das wird sowohl auf dem Stack als auch auf dem Heap etwas erzeugen . Die Werte 51015 werden jedoch auf dem Heap gespeichert. Und die variablen Zahlen werden auf dem Stack gespeichert. Aber dies wird nur etwas speichern, das als Zeiger bekannt ist. Nicht die genauen Details darüber, wie Zeiger hinter den Kulissen funktionieren , sind bei der Arbeit mit Java nicht allzu wichtig, da Java viel davon für uns erledigt. Aber das wird im Grunde genommen nur auf den tatsächlichen Wert hinweisen , der auf dem Heap gespeichert ist. Zum Beispiel kann ich hier ein anderes Array erstellen. Ich kann dieses Beispiel nennen. Ich kann das auf Zahlen setzen. Was hier passiert, sind unsere Array-Werte 51015. Es existiert immer noch nur einmal im Speicher unseres Computers. Und diese drei Werte werden im Heap als Array gespeichert . Die Variablen, Zahlen und Beispiele werden jedoch auf dem Stack gespeichert, aber sie sind jetzt Zeiger , die auf das Array von Ganzzahlen verweisen. Das heißt, wenn wir 510 oder 15 ändern, werden wir diese Änderung tatsächlich sehen, unabhängig davon, auf welche Variable wir zugreifen möchten, ob es sich um Zahlen oder Beispiel handelt. Um dies zu beweisen, kann ich Zahlen sagen, Index eins, der hier die Zehn sein wird, gleich 11 ist. Ich kann dann Zahlen ausdrucken index1. Und dann kann ich Beispielindex eins ausdrucken. Ich kann das mit Shift und FTN ausführen. Hier sehen wir 11 in beiden Fällen. liegt daran, dass diese drei Werte hier nur einmal auf dem Heap gespeichert werden. Und dann zeigen das Zahlen-Array und das Beispiel von Ray nur auf diesen Wert. heißt, wir haben zwei separate Variablen , die wir hier sehen, wenn Sie Ihren Code ausführen, aber die Werte werden nur einmal im Heap gespeichert. Und das ist ein Unterschied zwischen primitiven und Referenztypen. Referenztypen haben ihre Werte nur einmal im Heap mit einem Zeiger auf den Stapel. Aber primitive Typen sind so einfach, dass wir die Werte einfach auf dem Stack speichern können. Also kann ich sagen, int num1 ist gleich fünf, int num2 ist zehn. Und dann rufe ich eine Add-Funktion auf, die hier in einer Sekunde erstellt wird, und ich werde 510 übergeben. außerhalb unserer Hauptfunktion gehe, kann ich sagen public, static int add, int num1, int num2. Hier kann ich num1 plus num2 zurückgeben. Was hier passieren wird ist, wenn wir 510 übergeben, werden tatsächlich zwei weitere Variablen auf dem Stack namens num1 erstellt und num2 die gleichen genauen Werte zuweisen wie die Argumente, die wir sind geht genau hier rein. Um dies zu beweisen, drucke ich nach unserer Add-Funktion Nummer eins mit einem Komma und dann num2 aus . Aber innerhalb unserer Add-Funktion werde ich sagen, dass Num1 gleich zehn ist. Wenn ich das jetzt durchführe, sehen wir jetzt 510. Aber wir haben tatsächlich Num eins gleich zehn geändert. Und tatsächlich die Summe der Add-Funktion. Wenn ich dies in eine Print-Erklärung einfügen würde, wird dies 20 ausdrucken. Wenn ich also diese wärmere Zeit mit den 20 in der Konsole und dann 510 laufe , brechen Sie dies nur Zeile für Zeile auf, falls es für Sie verwirrend ist. Wurden zuerst zwei Variablen erstellt, die auf dem Stack gespeichert sind , 510. Wir denken, die Summe auszudrucken und 510 zu übergehen. Beachten Sie, dass wir zu keinem Zeitpunkt Nummer 1, Num2 ändern . Das ist wichtig zu beachten, wenn wir Zeile zehn erreichen, als wir Num1 und Num2 an die Konsole weitergegeben haben. Diese beiden Variablen ändern sich überhaupt nicht. Sobald wir die Add-Funktion tatsächlich aufrufen, übergeben wir 510, wodurch zwei weitere Variablen erstellt werden , die auf einem Stack gespeichert sind. Und wir ändern einfach die erste Zahl oder das erste Argument genau hier auf den Wert von zehn. Im Wesentlichen bedeutet , dass wir zehn hinzufügen , was auch immer das zweite Argument ist, was in diesem Fall zehn ist, und deshalb bekommen wir 20 genau hier. Nun ist der wichtige Teil dabei, dass wir das allererste Argument ändern, das übergeben wurde, aber dies hat eine brandneue Ganzzahl. Primitive Typen werden gerade ihren Wert übergeben. Und es wird im Grunde nur eine Kopie dieses Wertes sein. Alle Änderungen an diesen innerhalb der Funktion wirken sich nicht auf die Funktion aus, die sie ursprünglich aufgerufen hat. Grundsätzlich ändern wir hier unser erstes Argument. Aber es ändert eigentlich nichts von unserer Hauptfunktion. liegt daran, dass es sich um primitive Typen handelt und nur der Wert übergeben wird. Aber was passiert, wenn wir ein Array von Ganzzahlen übergeben ? Zum Beispiel haben wir ein Array mit nur zwei Werten. Anstelle von num1 und num2 kann ich sagen, dass int-Zahlen gleich 510 sind. Ich könnte dann Zahlen einreichen. Und dann protokolliere ich Nummernindex 0 und Zahlen Index eins. Jetzt haben wir ein Problem mit unserer Funktion, da sie Kürzungen zwei verschiedene Ganzzahlen erwarteten. Stattdessen möchte ich nur zwei Zahlen aus einem Zahlenarray zusammenfügen , wie ich sage int, Klammern, Zahlen. Dann kann ich Zahlen, Index 0 plus Zahlen und X1 zurückgeben . ******* führe das mit Shift und F11 aus. Hier sollten wir sowohl die ausgedruckten als auch jede einzelne Nummer sehen , wie wir genau hier sehen. Aber was würde passieren, wenn ich den Zahlenindex 0 auf zehn ändere, was ursprünglich fünf in diesem Array ist, denken Sie daran, dass dieses Array überhaupt nicht geändert wird. Und wir geben das erste Element des Arrays genau hier in dieses Konsolenprotokoll weiter. Wenn ich das ausführe, sagen wir jetzt, dass 20 als Summe ausgedruckt werden Kf den ersten Index mit Index 0 , der fünf ist, auf den Wert von tan genau hier ändern den ersten Index mit Index 0 , . Das heißt, wir drucken im Grunde zehn plus zehn aus. Aber dann wird nun der Zahlenindex 0 geändert, der auf die Konsole gedruckt wird. liegt daran, dass der Verweis oder der Zeiger auf dieses Array als Argument übergeben wird, nicht als tatsächliche Werte selbst. Wenn wir also zum Zahlenindex 0 ändern gehen, ändert es tatsächlich dasselbe Array , das online erstellt haben fünf, weil wir nur den Zeiger übergeben, weil wir nur den Zeiger übergeben der sich auf einem Stapel befindet, der sich auf einem Stapel ändert es tatsächlich dasselbe Array , das wir online erstellt haben fünf, weil wir nur den Zeiger übergeben, der sich auf einem Stapel befindet, der sich auf einem Stapel befindet zeigt nur auf die tatsächlichen Werte , die auf dem Heap gespeichert sind. Und dies ist ein wichtiger Unterschied zwischen primitiven und Referenztypen wenn Sie mit Funktionen arbeiten. Es ist wichtig zu wissen, dass wenn Sie etwas als Argument ändern, zum Beispiel Int-Zahlen genau hier, dass es das mit dem Rest Ihres Programms ändern könnte oder nicht , je nachdem, ob es einen Primitiv- oder Referenztyp handelt. Jetzt sind viele dieser Konzepte neu und ich weiß, dass dies wahrscheinlich eines der verwirrenderen Konzepte ist wahrscheinlich eines der verwirrenderen Konzepte wenn es um die Programmierung geht. Wenn Sie neu in der Programmierung sind. Wenn Sie also Probleme haben, schlage ich vor, sich diese Lektion noch einmal anzusehen und zu versuchen, sich auf den Stapel und den Heap bei visuellen Darstellungen zu konzentrieren auf den Stapel und den Heap bei , um alles zu erklären. 30. Grundlagen der Objektorientierung: Wir werden jetzt in ein Konzept eintauchen, das als objektorientierte Programmierung bekannt ist . Und eine kurze Art, dies zu sagen, ist Hoop oder OOP. Und hier wird Java definitiv viel interessanter und wir können damit tatsächlich einige reale Programme erstellen. Aber lasst uns zuerst darüber sprechen, was objektorientierte Programmierung ist? Nun, das ist ein Konzept, das nicht exklusiv für Java ist. Andere Programmiersprachen haben diese Konstante ebenfalls. Dies ist im Grunde der Ort, an dem wir reale Objekte in unserem Code darstellen können . Und in diesen kommenden Videos werde ich erklären, was weitere Keywords bedeuten, wie Klasse und Statik, und andere Keywords, die ich erwähnt habe, die ich später erklären werde. Werfen wir schnell einen Blick darauf, was eine Klasse im Vergleich zu einem Objekt ist. Klasse wird im Grunde der tatsächliche Code sein , der den Blueprint einer bestimmten Art von Funktionalität oder eines bestimmten Objekttyps darstellt der den Blueprint einer bestimmten Art von . Wenn ich jetzt Blueprint sage, möchte ich, dass du dir einen Hausesentwurf überlegst. Wenn Sie beispielsweise jemals einen Haufen Häuser sehen, die einander ähnlich aussehen, gibt es nur einen, einen einzigen Entwurf, den sie im Grunde kopieren und eingefügt haben. Und jedes Haus wird sein eigenes Objekt sein. Ein Haus wird ein Objekt sein oder die Blaupause wird die Klasse sein. So können wir eine Mini-Instanzen jeder einzelnen Klasse haben und diese werden als Objekte bezeichnet. Was dieses Hausbeispiel tatsächlich in einem echten Programmierbeispiel in unserem Hauptpaket verwendet einem echten Programmierbeispiel hat, kann ich mit der rechten Maustaste klicken. Ich kann hier zu New und dann zur Java-Klasse gehen. Ich werde dieses Haus nennen, aber ich werde eine Pascal-Fallnotation verwenden, was im Grunde bedeutet, dass wir den allerersten Buchstaben jedes Wortes großschreiben . Wenn ich Hausbeispiel hätte, würden sowohl das H als auch das E groß geschrieben. Aber in diesem Fall möchte ich nur Kreditklasse namens House machen. Fahren Sie fort und drücken Sie die Eingabetaste und es sollte sich automatisch öffnen. Und jetzt können wir innerhalb dieser Klasse oder innerhalb dieses Blueprints verschiedene Eigenschaften hinzufügen. Was ist jetzt eine Immobilie? Dies sind im Grunde Variablen und Methoden, die in dieser Hausklasse spezifisch definiert sind . Und es hilft uns, auf verschiedene Werte zuzugreifen oder mit unterschiedlichen Funktionen im Kontext eines Hauses zu arbeiten . Eintauchen in viel mehr Details darüber, was in den nächsten Videos tatsächlich in einen Hauskurs gehen würde . Aber lassen Sie uns zunächst einen kurzen Blick darauf werfen, wie diese Hausklasse tatsächlich in unserer Hauptklasse genutzt werden kann . Ich lösche einige dieser Kommentare. Ich kann jetzt Haus mit einem Kapital H. sagen und hier sehen wir, dass es versuchen wird, aus unserem lokalen Dateisystem zu importieren. Ich kann fortfahren und die Eingabetaste drücken, und hier können wir unsere Variable benennen. In diesem Fall sage ich Haus mit einem Kleinbuchstaben h, ich werde uns gleich einem neuen Haus zuweisen. Jetzt ist das neue Keyword Teil der objektorientierten Programmierung und Klassen, aber die Details dazu werden später erklärt. Moment können wir uns vorstellen, im Grunde nur ein neues Haus haben, eine Hausklasse hier. Dies wird die Blaupause sein, aber jetzt haben wir tatsächlich eine echte Instanz unseres Hauses geschaffen . Nehmen wir ein sehr einfaches Beispiel indem wir das Haus helloworld drucken lassen. Ich kann sagen „öffentlich nichtig“. Und beachte, dass wir hier keine Statik haben. Ich erkläre den Unterschied zwischen statischen und nicht statischen Methoden in ein paar Videos. Aber füge vorerst nicht statisch in dieses Beispiel ein. Also öffentlich, nichtig, drucken. Und dann habe ich keine Parameter. Ich drucke einfach Hello World auf die Konsole aus. Wenn ich jetzt den Mauszeiger darüber fahre, sehen wir, dass die Methodendrucke niemals verwendet werden. Lass uns weitermachen und versuchen es zu benutzen. Wenn wir hier wieder in unsere Hauptklasse gehen, haben wir Zugang zu diesem Haus. Ich kann sagen, dass House eine Periode drückt. Dies wird ein Dropdown-Menü mit allen verfügbaren Eigenschaften und Methoden haben , auf die wir zugreifen können. In diesem Fall haben wir Zugriff auf unsere Druckfunktion. Ich kann fortfahren und die Eingabetaste drücken, und ich führe das aus. Und hier sehen wir Hello World in der Konsole. Ich benenne diese Variable um. Ich kann irgendwo innerhalb des Variablennamens klicken, und ich kann die Umschalttaste gedrückt halten und gleichzeitig F6 drücken. Jetzt können wir weitermachen und dies ändern. Ich werde diesen Namen in mein Haus mit einem Großbuchstaben H und Kleinbuchstaben ändern . Jetzt erstelle ich eine brandneue Variable. Wie ich schon sagte, House. Dein Haus ist gleich einem neuen Haus. Und diese beiden Variablen haben nichts gemeinsam, abgesehen von der Tatsache, dass sie mit derselben Klasse erstellt wurden. Im Grunde sind sie Nachbarn zueinander, aber sie sind nicht dasselbe Haus. Wenn dein Nachbar ein ähnliches Haus wie dein hat, heißt das nicht, dass es dein Haus ist. Wenn nur ein ähnliches Haus auf derselben Blaupause basiert . Zum Beispiel kann ich deinen House Dot Print sagen. Und ich kann weitermachen und das machen. Und jetzt werden wir zwei Instanzen von HelloWorld und unserer Konsole sehen , wie wir genau hier sehen. Dies ist die Grundlagen von Klassen und wie man Objekte um diese Klassen herum erstellt. Und in den nächsten Videos werden wir viel weiter in die objektorientierte Programmierung eintauchen , wo wir ein funktionales Hausobjekt erstellen können , das wirklich ein tatsächliches Haus in unseren Programmen. 31. Konstrukteure: Wir werden jetzt über ein Konzept namens Konstruktoren sprechen , das im Grunde nur eine integrierte Methode in jede Klasse sein wird, die ausgeführt oder aufgerufen wird, wenn eine neue Instanz dieser Klasse erstellt. Es gibt tatsächlich einen Standardkonstruktor in jeder einzelnen Klasse. Ob wir selbst einen erstellen oder nicht, es wird automatisch einen haben. Also als Konstruktor, wir werden uns so etwas wie eine Methode ansehen, aber etwas anders, weil es keinen Rückgabetyp haben würde, wie zum Beispiel die Leere genau hier. Und auch der Konstruktorname muss der genaue Name der Klasse sein. Ich kann also sagen, öffentliches Haus mit einem Kapital H. Dies ist jetzt als unser Konstrukteur bekannt. Um dies zu beweisen, werde ich ausdrucken ein neues Haus geschaffen wurde. Und ich führe das in unserer Konsole aus. Hier sehen wir, dass ein neues Haus gebaut wurde, weil wir hier eine neue Instanz unserer Hausklasse als Variable mein Haus geschaffen haben hier eine neue Instanz unserer Hausklasse . Und so wurde der Konstruktor in unserer Printing Out Hello World ausgeführt. Aber dann schaffen wir ein anderes Haus, was bedeutet, dass der andere Konstruktor Rampe ist. Und dann drucken wir natürlich wieder Hello World aus. Jetzt kann ein Konstruktor nichts zurückgeben, aber er kann keine anderen Parameter aufnehmen. Zum Beispiel kann ich den Namen des String-Besitzers haben. Dann kann ich sagen, dass ein neues Haus geschaffen wurde. Der Besitzer ist wie ein Name des Inhabers hinzufügen. Jetzt haben wir hier zwei verwandte Probleme. Das liegt daran, dass wir in unserer Hauptklasse keine Argumente weitergeben . So kann es zum Beispiel hier einen Alex passieren. Natürlich kannst du deinen eigenen Namen hinzufügen . Und hier werde ich Bob einreichen. Natürlich kannst du jeden anderen Namen hinzufügen, den du willst. Wenn ich das mache, können wir uns jetzt unsere Konsole ansehen. Und hier sehen wir, dass ein neues Haus gebaut wurde. Der Besitzer ist Alex. Und das liegt daran, dass wir hier eine neue Instanz einer Hausklasse erstellt haben. Und wir haben einen ALEKS als String an unseren Konstruktor übergeben. Und wenn wir dann ein Bobs Haus bauen, sehen wir natürlich, dass der Besitzer Bob und die Konsole ist. Ähnlich wie Methoden können Konstruktoren jetzt außer Kraft gesetzt werden, sodass wir verschiedene Arten von Werten in die Parameter übergeben können . Wie ich schon sagte, öffentliches Haus. Ich konnte keine Fußböden sagen. Hier könnte ich ausdrucken neues Haus wurde gemacht. Es hat ich kann auf Böden hinzufügen und das kann auf den Stringböden hinzufügen. Und ich werde auch Klammern um das S stellen weil wir vielleicht in einem einstöckigen Haus vorbeikommen. Jetzt haben wir zwei verschiedene Konstruktoren, und diese werden zu verschiedenen Zeiten ausgeführt. Sichern Sie zum Beispiel Bobs Haus. Anstatt in Bob zu kommen, mache ich das zu einem zweistöckigen Haus. Möglicherweise stellen Sie fest, dass IntelliJ automatisch feststellen wird , dass dies jetzt der Parameter „Floors“ sein wird . Dies wird kein Eigentümer sein, so genannt wird, wie es hier heißt. daran, dass es versteht , dass wir den Konstruktor überschreiben , um zwei verschiedene Arten von Variablen zu übergeben . Und hier geben wir eine ganze Zahl weiter. Das bedeutet also, dass wir diesen Konstruktor genau hier verwenden werden . Wenn ich das jetzt betreibe und wenn wir in unsere Konsole schauen, sehen wir jetzt, dass die erste Instanz unseres Hauses ausdrucken wird. Der Besitzer ist Alex. Aber die zweite Instanz unseres Hauses wird ausdrucken und hat zwei Etagen. liegt daran, dass wir den verschiedenen Konstruktortyp verwenden , der nur ganze Zahlen weitergibt. In diesem Beispiel haben wir gerade etwas Text ausgedruckt, aber in echten Anwendungsfällen, die wir uns in ein paar Videos ansehen werden. Wir werden diese im Grunde als Setup-Funktionen verwenden , um sicherzustellen, dass alles andere eingerichtet ist und ordnungsgemäß funktioniert, damit unser Haus funktioniert. 32. Das „diese“ Keyword und die Eigenschaften: Wir werden uns nun das Schlüsselwort ansehen und wie verschiedene Eigenschaften erstellt werden , wie verschiedene Eigenschaften erstellt die im Grunde nur Variablen innerhalb unserer Klasse sein werden. Ich werde diese Kommentare hier los. Und ich werde diese Print-Anweisungen auch innerhalb unserer beiden Konstruktoren loswerden . Jetzt innerhalb unserer Klasse, aber außerhalb der Funktionen, erstelle ich ein paar verschiedene Variablen. Zum Beispiel könnte ich eine private Zeichenfolge mit einem Kapital S, Eigentümernamen, sagen . Ich konnte keine privaten Int-Floors sagen. Und der private Teil davon sowie die Öffentlichkeit über einige dieser Methoden werden in einem zukünftigen Video erklärt. Jetzt habe ich bereits demonstriert wie wir Konstruktoren überlasten können. In diesem Fall möchten wir jedoch nur einen einzigen Konstruktor bei dem beide Informationen weitergegeben werden. Hier kann ich Int Floors sagen. Und jetzt möchte ich den neuen Eigentümernamen und die neuen Stockwerke von den Parametern unseren lokalen Variablen zuweisen neuen Stockwerke von den Parametern . Da diese beiden Variablen hier verschiedene Variablen sind , dann sind unsere Parameter genau hier. Aber bevor ich das mache, haben wir zwei verwandte Probleme, denn wenn ich zurückgehe, verwenden wir jetzt eine falsche Syntax für einen Konstruktor. Nehmen wir an, mein Haus hat zwei Stockwerke, es sei denn, dass dies immer noch ein Bobs Haus ist, dem Sie natürlich jede gewünschte Zeichenfolge verwenden können, aber es sind auch zwei Stockwerke. Wenn wir also zurück in die Hausklasse gehen, haben wir keine Probleme mehr. Aber wie werden wir den Namen des Besitzers online so einstellen dass er dem Parameter entspricht, der übergeben wird. Weil sie natürlich genau den gleichen Namen haben. den Namen des Besitzers sagen, entspricht dem Namen des Besitzers, tut nichts wirklich. Es ändert die Zeile für überhaupt nicht, da dies auf die lokalste Variable im Bereich verweisen wird, die in diesem Fall nur der Parameter unter dem Namen ist. Technisch gesehen könnten wir die Namen dieser Variablen ändern, sodass sie nicht genau gleich sind, aber das ist nicht die richtige Lösung. Die korrekteste Lösung würde nur sagen, dass dieser Punktbesitzer gleich dem Namen des Besitzers entspricht und diese Punktböden gleich Kraft sind. Was passiert eigentlich hier? Nun, das repräsentiert das aktuelle Objekt. Wann immer dieser Konstrukteur für mein Haus geführt wird, das den Besitzernamen Alex und zwei Etagen trägt. Das, dieses Schlüsselwort hier bezieht sich genau hier auf das my house Objekt. Wenn wir Bobs Haus erstellen , wird dieses Objekt hier genau hier auf Ihr Hausobjekt verweisen. Das Schlüsselwort, dieses Schlüsselwort hier wird das aktuelle Objekt darstellen , das für diese Klasse verwendet wird. Um dies innerhalb unserer Druckfunktion zu beweisen, kann ich sagen, dass dieses Haus im Besitz ist. Ich könnte dann den Namen des Punktbesitzers ausdrucken. Und es hat plus diese Punktgeschosskraft. Natürlich lege ich Klammern um das S, nur für den Fall, dass du in einem einstöckigen Haus vorbeigehen willst. Jetzt verwenden wir diese Druckfunktion immer noch, wie Sie hier sehen können. Ich gehe weiter und führe dieses Programm aus. Und hier sehen wir, dass dieses Haus im Besitz von Alex ist und es zwei Etagen hat. Wir sehen auch, dass dieses Haus im Besitz von Bob war und es zwei Etagen hat. Die Namen und die Anzahl der Stockwerke werden lokal gespeichert. Genau hier. Wir greifen nicht auf die Parameter zu , die wir hier hinzugefügt haben, da diese Bounced sind, auf die nur innerhalb des Bereichs des Konstruktors zugegriffen wird . Im Grunde haben wir also unsere eigenen Parameter oder unsere eigenen Variablen innerhalb dieser Klasse. Wir weisen diese zu, wenn wir das Objekt aus dem Konstruktor erstellen. Und dann können wir überall in dieser Klasse auf diese Variablen zugreifen . Zum Beispiel, innerhalb dieser Druckfunktion, indem diesen Punkt-Besitzer-Namen sagen und das Zeug Kriege. Technisch gesehen ist dieses Schlüsselwort in diesem Anwendungsfall für die Druckfunktion optional, für die Druckfunktion optional, da es standardmäßig davon ausgeht, dass wir die aktuelle Instanz der Klasse verwenden werden davon ausgeht, dass wir die aktuelle Instanz der Klasse verwenden . Also kann ich weitermachen und diese löschen. Und wenn ich das noch einmal mache, wird es genau genauso funktionieren. Technisch gesehen ist dies keine gute Praxis, da es sehr deutlich macht, dass wir versuchen, auf in der Klasse gespeicherte Variablen zuzugreifen, aber technisch optional in diesem Fall der printf-Funktion. Aber unser Konstruktor muss diese benötigt werden, da sie genau dieselben Variablennamen wie unser Parameter haben . Um ganz klar zu sein, welchen Werten wir zuweisen, welche Variablen. Wir können diesen Punkt auf ihrem Namen sagen, um hier auf unsere lokale private Zeichenfolge zu verweisen. Und diese Punktbeläge die WHO referenziert hier unsere lokale private Ganzzahl. Und weisen Sie diese dann dem Namen des Besitzers am Umfang zu. Und der Fußboden-Parameter. 33. Verkapselung, Abstraktion, Getter und Setter: weiter in die objektorientierte Programmierung eintauchen, Wenn wir weiter in die objektorientierte Programmierung eintauchen, werden wir nun zwei weitere Konzepte vorstellen , die etwas verwirrender werden, aber hoffentlich kann ich sie gut genug erklären , damit Sie es voll und ganz verstehe. Diese beiden Konzepte werden sowohl als Verkapselung als auch als Obstraktion bezeichnet. Aber wir werfen auch einen Blick auf Getter und Setter, die ein Beispiel für Abstraktion sind. Verkapselung wird im Grunde ein Konzept der objektorientierten Programmierung sein bei dem wir möchten, dass alle unsere Funktionen an einem einzigen Ort eingekapselt werden . Und selbst eine Klasse selbst ist ein Beispiel für Verkapselung. Zum Beispiel haben wir hier eine Hausklasse. Also jede Funktionalität, die wir in Bezug auf ein Haus haben werden, z. B. wie viele Türen es hat, wie viele Stockwerke es hat, verschiedene Fenster und Räume und andere Dinge wie diese. Grundsätzlich sollte alles, was mit einem Haus zu tun innerhalb dieser Hausklasse eingeschlossen oder eingekapselt sein. Jetzt ist ein anderes Konzept so etwas wie ein Medikament oder eine Pille, bei der alle Funktionen einer einzigen Pille eingekapselt sind. Das bedeutet, dass die Benutzer dieser Klasse oder die Personen, die das Medikament einnehmen, nicht unbedingt das Innenleben wissen müssen , alles. Sie müssen nur das äußere Objekt sehen und wissen, dass alles innen eingekapselt ist. Das ist eher ein Konzept, das nicht wirklich klar demonstriert werden kann , aber es ist wichtig zu verstehen, dass Sie beim Schreiben Ihres eigenen Java-Codes möchten, dass alles in seiner eigenen Klasse gekapselt. Jetzt ist das nächste Konzept die Abstraktion, die der Verkapselung etwas ähnlich ist. Aber im Grunde bedeutet dies, dass Sie nur möchten, dass der Benutzer, der die Klasse verwendet, Zugriff auf Dinge erhält, die er tatsächlich benötigt. Zum Beispiel werde ich diese privaten Immobilien hier in öffentlich umstellen. Und ich erkläre in diesem Video, was privat gegen öffentlich ist. Aber im Moment folgen Sie einfach und ändern Sie diese in die Öffentlichkeit. Und jetzt innerhalb unserer Hauptdatei, nachdem ich das erste Haus erstellt habe, aber bevor ich es ausdrucke, kann ich meinen Hauspunkt sagen. Jetzt haben wir hier Zugriff auf alle Eigenschaften und Methoden innerhalb dieser Klasse. Und wir können den Namen des Besitzers und die Böden sehen. Ich kann den Namen des Besitzers in Bob ändern. Sagen wir, Bob entführt zum Beispiel einfach mein Haus. Und wenn ich das mache, sehen wir Bob jetzt zweimal im Kausal, wie wir genau hier sehen. Jetzt ist das technisch gesehen eine schlechte Praxis. Und ich werde diese Variablen wieder auf privat ändern , indem Control Z oder Command Z auf einem Mac verwende. Und jetzt sehen wir ein verwandtes Problem. Wenn ich den Mauszeiger hier darüber fahre, heißt es, der Name des Besitzers hat einen privaten Zugang innerhalb des Com-Punkt-abgenutzten Schlüssels Dot House. Also werde ich diese Codezeile hier entfernen. Und jetzt können wir nicht direkt darauf zugreifen, wem das Haus gehört , ohne tatsächlich im Haus zu sein. Zum Beispiel könnte ich sagen, dass dieser Punktname Bob entspricht, und das würde gut funktionieren. Und das liegt daran, dass das Privateigentum hier etwas ist , das als Zugriffsmodifikator bezeichnet wird. Dies wird den Zugriff beschränken, den bestimmte Dinge haben, wenn es um verschiedene Eigenschaften und Methoden geht . Eine private Methode oder Privateigentum bedeutet in diesem Fall, dass das einzige, was darauf zugreifen kann, Dinge innerhalb derselben exakten Klasse sind. Deshalb können wir sowohl hier als auch hier darauf zugreifen . Obwohl es privat ist, sind wir immer noch in der Klasse. Das ist auch der Grund, warum wir den Fehler genau hier hatten. Worauf ich versuche darauf zuzugreifen, weil wir nicht in der Hausklasse sind. Wir befinden uns in der Warnock Keys Kursklasse oder wie auch immer Sie Ihre Klasse genannt haben. Nun bedeutet öffentlich, wie Sie wahrscheinlich vermuten können, dass alles darauf zugreifen kann , indem er auf sein eigenes Objekt zugreift. Zum Beispiel haben wir einen öffentlichen nichtigen Druck. Diese Methode ist öffentlich, was bedeutet, dass wir dann auf die Druckmethode zugreifen können, wenn wir ein Objekt für diese Klasse haben, zum Beispiel mein Haus oder Ihr Haus . Jetzt fragen Sie sich vielleicht, warum Sie nicht einfach direkt auf alles zugreifen, was wir wollen. Warum beschränken Sie bestimmten Zugriff? Nun, das ist das ganze Konzept hinter Abstraktion wird im Grunde die gesamte innere Funktionalität und die Funktionsweise des Hauses nutzen und Ihnen nur Zugang zu dem geben, was das Haus notwendig ist führe seinen Job aus. Jetzt können Sie in einigen Situationen mit Gettern und Settern inneren Zugriff auf bestimmte Dinge gewähren , die wir uns hier in Kürze ansehen werden. In der Regel sollten Sie jedoch als gute Faustregel nur Zugriff auf das gewähren , was unbedingt erforderlich ist. Und Sie sollten niemals direkten Zugriff auf Variablen wie diese gewähren. Stattdessen sollten Sie immer Getter und Setter verwenden. Werfen wir einen kurzen Blick darauf, wie das funktioniert. Ich kann öffentlich sagen, String get. Jetzt wird es das Konzept des Besitzernamens bekommen automatisch ausfüllen , was ich hier verwenden werde. Der Grund, warum ich das wusste, ist , dass es eine Zeichenfolge zurückgeben wird. Und wenn ich Git tippe, wird davon ausgegangen, dass etwas erstellt wird, das als Getter-Methode bekannt ist. Im Grunde ist dies nur eine Methode, die eine private Eigenschaft zurückgibt. In diesem Fall kann ich den Namen des Besitzers zurückgeben. Jetzt kann ich tatsächlich auf den Eigentümernamen zugreifen , der von dieser Getter-Methode privat ist. Wir haben auch Setter-Methoden, was ein ähnliches Konzept ist, aber offensichtlich bekommen wir den Wert nicht. Stattdessen untersuchen wir den Wert, wie ich schon sagte, öffentlich nichtig, weil wir nichts zurückgeben. Legen Sie den Namen des Besitzers hier fest. Es wird einen Parameter haben. Ich kann den Namen des String-Besitzers sagen. Und dann kann ich sagen, dass dieser Punktbesitzer gleich dem Namen des Besitzers entspricht. Wenn ich wollte, kann ich tatsächlich zu mir nach Hause gehen, wie ich schon sagte, mein Haus-Punktset-Besitzer. Ich kann Joe überholen. Und wenn ich das mache, sehen wir Joe und Bob in der Konsole. Und tatsächlich sehen wir Bob zweimal wegen eines Fehlers, den ich hier in der Druckfunktion gemacht habe. Als Beispiel sagte ich, dass wir das hier benutzen können. Ich werde das löschen und dann das Programm noch einmal ausführen. Und jetzt sehen wir Joe und Bob in der Konsole. Dies ist ein Beispiel für eine Getter-Methode und eine Setter-Methode. Jetzt fragen Sie sich vielleicht, warum Sie sich mit einem dieser Getter und Setter beschäftigen . Warum entfernen Sie diese Funktionen nicht einfach komplett und machen Sie einfach unsere Immobilien öffentlich? Als ich zum ersten Mal objektorientierte Programmierung lernte, hatte ich genau die gleiche Frage und war sehr verwirrt. Warum funktioniert all diese zusätzliche Arbeit und nur für die gleichen genauen Ergebnisse. Aber als ich im Laufe der Jahre immer mehr Code schrieb, wurde mir klar, dass die Verwendung von Gettern und Settern viel bequemer ist und die Dinge viel organisierter macht. Stellen Sie sich zum Beispiel vor , wir haben ein sehr großes Projekt mit Dutzenden von Häusern. Oliver, unser Projekt, und wir möchten alle Namen der Eigentümer in, sagen wir in Großbuchstaben, ändern . Oder wir möchten alle Besitzernamen protokollieren wenn sie geändert werden oder ähnliches. Ich möchte eine Art von Funktionalität ausführen , wenn sich der Name des Besitzers geändert hat. Hier können wir beispielsweise sagen, dass dieser Name des Besitzers gleich dem Namen des Besitzers Punkt TupperCase entspricht. Und um die Dinge noch komfortabler zu machen, können wir eine Zeile zehn direkt hier ändern, in dem der Name des Besitzers gleich Name ist, um den Eigentümernamen festzulegen. Sie den Namen des Besitzers ein. Dies wird es zum Standardkonstruktor machen wird es auch in Großbuchstaben sein. Wenn ich das mache, sollten wir sowohl auf unseren Namen als auch in Großbuchstaben sehen . Und wenn wir alles ohne Getter oder Setter öffentlich gemacht hätten und wir Dutzende von Häusern in einem größeren Projekt hätten, müssten wir alle unsere Namen manuell in Großbuchstaben ändern. was sehr mühsam und sehr nervig klingt. Aber weil wir die richtigen Abstraktionsregeln verwenden und Getter und Setter mit privaten Eigenschaften verwenden. Wir haben jetzt die Möglichkeit, bestimmte Aspekte unseres Programms einfach bestimmte Aspekte unseres Programms von einer einzigen Änderung aus zu ändern. 34. Vererbung: Werfen wir einen Blick auf etwas, das als Erbschaft bekannt ist. Dies ist im Grunde genommen der Ort, an dem wir eine andere Klasse hinzufügen oder erweitern können , um ihr mehr Funktionalität zu geben. Zum Beispiel kann ich einen neuen Java-Kurs machen und rufe dieses Hotel an. Und ich werde das Haus verlängern. Wie ich schon sagte, erweitert Haus. Dies bedeutet, dass die gesamte Funktionalität innerhalb der Hausklasse erbt wird . Aber dann können wir mehr Funktionalität und Seite hinzufügen. Zum Beispiel können wir jetzt einen Lobbyisten angeben , oder die Anzahl der Mitarbeiter, Dinge wie diese, dass es ein Haus nicht hat, aber ein Haus wird immer noch einen Eigentümer haben und eine bestimmte Anzahl von Etagen , die ein Hotel auch hat. Anstatt eine Hotelklasse zu machen , in der diese Immobilien enthalten wären, werden wir nur ein Haus erweitern das bereits über diese Immobilien verfügt. Auf diese Weise müssen wir sie nicht wirklich noch einmal machen. Aber wir bekommen diesen Fehler hier. Wenn ich den Mauszeiger darüber fahre, heißt es, dass kein Standardkonstruktor verfügbar ist. Wenn wir zum Haus gehen, sehen wir, dass es keinen Standardkonstruktor gibt, was bedeutet, dass es keinen Konstruktor gab , der 0 Parameter hat. Also haben wir diese beiden Parameter genau hier, den Namen des Besitzers und die Etagen. Und das bedeutet, dass unser Hotel, das Haus erweitert, auch einen ähnlichen Konstrukteur haben muss. Ich kann also öffentlich, Hotel, String, Name des Besitzers und dann Int-Floors sagen . Jetzt bekommen wir einen weiteren Fehler. Wenn ich den Mauszeiger darüber fahre, heißt es, dass kein Standardkonstruktor verfügbar ist. Dies bedeutet, dass wir etwas verwenden müssen, das als Super-Methode bekannt ist. Wenn ich also Superhelden nenne, könnte ich dann den Namen und die Etagen des Besitzers übergeben. Und die Superfunktion wird nur innerhalb von Klassen verwendet , die eine andere Klasse erweitern. Dies wird im Grunde nur den Konstruktor der Klasse nennen , die wir in diesem Fall erweitern. Jetzt haben wir einen Hotelkonstruktor geschaffen. Dies wird einen Konstruktor des Hauskonstruktors nennen . Daher werden wir die privaten Eigenschaften des Eigentümernamens und der Etagen auf die Immobilien festlegen des Eigentümernamens und der Etagen , an denen wir weitergeben. In diesem Fall werden wir einfach diese und vom Hotelbauer weitergeben. Wenn das verwirrend erscheint, machen Sie sich keine Sorgen, machen wir eine neue Hotelinstanz, und danach wird es viel sinnvoller sein. Hier in unserer Hauptklasse sage ich das Hotel. Mein Hotel ist gleich einem neuen Hotel. Wir können dann den Besitzer weitergeben. Und dann die Anzahl der Etagen, sagen wir zehn. Ich kann jetzt meinen Hotelpunkt ausdrucken, bekommt den Namen des Besitzers. Aber innerhalb der Hotelklasse haben wir überhaupt keinen Namen des Besitzers. liegt daran, dass wir die Hausklasse immer noch erweitern alle vorherigen Funktionen innerhalb dieser Klasse erben . Holen Sie sich beispielsweise den Namen des Besitzers. Wenn ich das ausführen würde, druckt es natürlich einfach Alex auf die Konsole. Ich werde dich nicht mit diesem einfachen Konzept langweilen. Ich bin sicher, dass du das verstehst. Aber lassen Sie uns weiter darüber eingehen, wie diese Konstruktoren funktionieren und wie die Super-Methode funktioniert. Grundsätzlich gebe ich ALEKS und Zinn als Parameter an den Hotelkonstruktor weiter. Daher werden der Name und die Stockwerke des Besitzers Alex sein und zehn riefen dann super an, was den Konstruktor der erweiterten Klasse aufrufen wird . In diesem Fall ist das Haus. Im Wesentlichen werden wir diese Funktion genau hier aufrufen, wodurch diese auf private Immobilien gleich Alex und zehn festgelegt werden . Jetzt können wir innerhalb des Hotels darauf zugreifen, wenn sie öffentlich sind oder etwas, das als geschützt bezeichnet wird. Bisher haben wir privat und öffentlich gesehen. Es gab auch eine andere, die geschützt ist. Zum Beispiel innerhalb des Konstruktors. Ich kann diesen Namen des Besitzers nicht ausdrucken. Wir sehen im Dropdown-Menü hier, dass es keine Option gibt. Und auch wenn ich es einfach so lasse , werden wir einen Fehler bekommen. Wenn ich den Mauszeiger darüber fahre, heißt es, Name des Besitzers privaten Zugriff hat. liegt daran, dass der private Zugang bedeutet nur Dinge, die direkt in dieser Klasse darauf zugreifen können. Nicht unbedingt Dinge , die diese Klasse erweitern. Wenn wir möchten, dass die erweiterten Klassen darauf zugreifen, können wir privat wechseln, um sie zu schützen. Jetzt verschwindet der Fehler und schützt es im Grunde bedeutet, dass alles innerhalb der Klasse ihn verwenden kann, sowie alle Klassen, die diese Klasse erweitern, ihn verwenden können. 35. Polymorphismus: Sprechen wir jetzt über ein Konzept, das als Polymorphismus bekannt ist. Dies bedeutet im Grunde viele Formen weil Poly viele bedeutet und Morphismus Formen bedeutet. Um einen Blick auf das Problem zu werfen , das der Polymorphismus löst. Hier haben wir das mein Hotelobjekt sowie Ihr Hausobjekt und mein Hausobjekt. Diese beiden verwenden die Druckfunktion. Und weil das Hotel das Haus erweitert, haben wir jetzt Zugriff auf die Druckfunktion. Ich kann meinen Hotel-Punktdruck sagen. Wenn ich das jetzt führe, sehen wir, dass die Häuser jeder Person gehören und es so viele Stockwerke hat. Das Hotel sagt immer noch, dass die Häuser besaßen. Wir möchten grundsätzlich die exakte Funktionalität für die Druckfunktion innerhalb der Hotelklasse außer Kraft setzen die exakte Funktionalität für . wir dazu schnell einen Blick auf die Hausklasse. Unser Druck fungiert als öffentlicher ungültiger Druck. Unsere Hotelklasse muss genau dieselbe Funktion haben. Ich kann öffentlich sagen, nichtig, print. Und jetzt kopiere ich der Einfachheit halber einfach die vorherige Zeile und füge sie hier ein. Ich kann Control C unter Windows oder Command C auf Mac verwenden. Und dann kann ich weitermachen und Control V unter Windows oder Command V auf Mac verwenden . Jetzt erhalten wir eine Fehlermeldung, da diese beiden Eigenschaften privat sind und nicht geschützt sind. Also muss ich die entsprechenden Getter benutzen. Also könnte ich den Namen des Besitzers abrufen sagen. Wir haben noch kein Geschenk für seine Methode. Wenn ich also Git Floors sage, existiert es nicht wirklich. Und mach eins. Es sollte ziemlich einfach sein, ich denke ein öffentliches Int Get Flores hier drin, ich kann einfach falsch zurückgeben. Jetzt haben wir einen Getter , den wir benutzen können. Innerhalb des Hotels. Wir haben hier keinen Fehler mehr. Wir können uns ändern. Das Haus befindet sich im Besitz von zwei, das Hotel ist unvoreingenommen. Wenn ich das jetzt betreibe und wir uns unsere Konsole ansehen, sehen wir hier, dass das Hotel im Besitz von Alex ist und es zehn Stockwerke hat, oder die vorherigen Hausobjekte sagen immer noch Haus. Das ist der Polymorphismus, dass wir viele Formen derselben exakten Funktion haben. Also hier haben wir eine Druckfunktion in unserem Haus, und hier haben wir eine printf-Funktion in unserem Hotel. Wann immer wir versuchen, auf eine Druckfunktion zuzugreifen, verwenden wir immer die der genauen Klasse am nächsten. Zum Beispiel, da wir diese printf-Funktion haben , wird sie diese verwenden. Aber vorher hatte es es nicht. Es würde also auf die Hausklasse schauen , die wir erweitern. Und natürlich hatte House eine printf-Funktion. Also würde es das dann benutzen. Dies wird jetzt auch als Konzept des Überschreibens von Methoden bezeichnet. Jetzt ist dies nicht dazu gedacht, mit Methodenüberlastung zu verwechseln. Hier haben wir zwei Methoden mit demselben genauen Namen, aber vielleicht unterschiedlichen Parametern. Zum Beispiel kann ich öffentlich, void, print sagen , und als Argument kann ich int times sagen. Hier werde ich eine bestimmte Anzahl von Malen durchlaufen , je nachdem, wie oft passiert ist. Ich kann sagen, dass für int a gleich 0 ist, während a weniger als mal plus a. Jetzt hier drin könnte ich diese Zeile einfach hier kopieren und einfügen, oder ich kann einfach die Druckfunktion aufrufen. Wenn wir jetzt zu unserer Hauptklasse zurückkehren, drucken wir das einfach, aber wir können auch sagen, dass mein Hotel Dot Print und Pass in fünf Jahren ist. Und jetzt kann ich das ausführen. Und hier sehen wir, dass es fünf verschiedene Male ausgedruckt wird. Jetzt sehen wir natürlich fünfmal genau hier. Aber wir haben auch dieses sechste Mal an der Spitze. Und das liegt daran, dass wir genau hier meinen Hotel-Punktdruck ohne tatsächliche Argumente sagen . Daher wird es die normale printf-Funktion verwenden , die wir erstellt haben. Jetzt haben wir bereits die Methodenüberladung überarbeitet. Das ist keine wirkliche Auffrischung. Dies soll nur klarstellen, dass das Überschreiben der Methode anders ist als das Überladen von Methoden. Offensichtlich können sie verwirrt werden, weil es ähnliche Wörter gibt, aber es sind verschiedene Konzepte, wie Sie hier sehen können. 36. Das „statische“ Keyword: Bisher haben wir verschiedene Eigenschaften innerhalb unserer Klassen, zum Beispiel Eigentümernamen und Etagen. Und diese werden an jedes einzelne Objekt gebunden sein , das wir erstellen. Zum Beispiel mein Haus, dein Haus und mein Hotel. Ich werde kein neues Keyword einführen, nämlich das statische Schlüsselwort, das Sie hier vielleicht sehen. Dies wird die Eigenschaften im Grunde nicht an die einzelnen Objekte binden , sondern die Verbindungen von Eigenschaften an die Klasse selbst. Jetzt ist jedes einzelne Haus anders, daher fällt es mir schwer, ein statisches Beispiel zu beschreiben , wenn es um Häuser geht. Also werden wir stattdessen Vögel benutzen. Ich kann mit der rechten Maustaste auf neue Java-Klasse klicken Und ich nenne das einen Vogel. Sagen wir nun, dass jeder Vogel seinen eigenen Namen haben wird. Also kann ich einen privaten String-Typ sagen. Und dann kann ich hier public bird bei einem Konstruktor sagen, wir können hier eine Zeichenfolge namens type haben. Und dann können wir innerhalb des Konstruktors den lokalen Variablentyp gleich den vom Konstruktor übergebenen Parametern zuweisen den lokalen Variablentyp gleich den . Hier kann ich sagen, dass dieser Punkttyp gleich Typ ist. Bisher scheint alles ziemlich einfach zu sein, Lass uns in meine Hauptklasse gehen und ich werde diese kommentieren. Wir werden sie in zukünftigen Videos auskommentieren , wenn wir zum Hausbeispiel zurückkehren. Aber auch hier ist Statik viel einfacher zu verstehen und für mich zu erklären, ohne Häuser zu benutzen. Hier kann ich Vogel sagen, Vogel ist gleich einem neuen Vogel. Ich habe Zugang zu einem Vogel, aber jetzt habe ich den Pass in einem bestimmten Typ. Zum Beispiel kann ich eine Krähe einreichen, und jetzt haben wir Zugang zu einem Vogel. Bisher scheint alles ziemlich normal zu sein. Nun kommen statische Eigenschaften wie Variablen und Methoden auf, sobald Sie etwas auf die Klasse selbst abprallen möchten. Wie bereits erwähnt, hat das Haus den Namen des Eigentümers und die Etagen, die an jedes einzelne Objekt gebunden sind an jedes einzelne Objekt gebunden aus dieser Hausklasse erstellt wurde. Also in unserer Hauptakte hier haben wir mein Haus, das es auf den Eigenschaften des Besitzers und der Etagen haben wird. Und dann wird Ihr Haus verschiedene Eigenschaften haben, auch als älterer Name und Etagen bezeichnet werden. Und mein Hotel hatte das Gleiche , weil dies die Hausklasse verlängert. Aber wenn ich hier in Bird gehe, kann ich etwas erstellen, das als statische Variable bekannt ist. Wie ich schon sagte, öffentlich, statisch, int wings ist gleich zwei. Wenn ich jetzt wieder in meine Hauptdatei gehe, wenn ich auf Bird Wings zugreife, sehen wir, dass es nicht wirklich existiert. liegt daran, dass die statischen Variablen nicht an die Objekte Vogel selbst gebunden sind . Das Objekt ist dieses Objekt , das wir genau hier erstellt haben. Stattdessen sind sie an die eigentliche Klasse gebunden. Also Vogelflügel. Wenn ich das jetzt durchführe, werden wir die Anzahl der Flügel in diesem Vogelhaus sehen . In diesem Fall sind es zwei. Aber warum sollte man hier statisch verwenden anstatt nur eine normale Variable zu erstellen? Lasst uns, weil dies nur ein einziges Mal erstellt wird. Und ansonsten, zum Beispiel mit dem String-Typ, wird diese Variable hier jedes Mal erstellt, wenn wir eine neue Instanz unserer Bird-Klasse erstellen. Zurück zum Hausbeispiel haben wir drei verschiedene Instanzen von Eigentümernamen und Etagen, da wir nicht drei verschiedene Objekte haben , die sie verwenden werden. Aber wenn ich drei verschiedene Vögel hätte, hätten wir immer noch nur eine ganze Zahl namens wings. Statische Variablen wie diese hier werden also verwendet, wenn Sie eine Klasse haben, die über eine gemeinsame Information verfügt. So haben Vögel zum Beispiel hier zwei Flügel und das wird sich nie ändern. Es als lokale Variablen wie private int wings zu haben , ist gleich zwei. Es ergibt nicht allzu viel Sinn , weil sich das nie ändern wird. Daher brauchen wir nicht eine Flügelvariable, die an jedes einzelne Objekt gebunden ist, das wir erstellen. Stattdessen können wir es einfach direkt an die Klasse binden. Jetzt können wir auch statische Methoden haben. Ich kann sagen, public, static, int, get wings zum Beispiel. Hier können wir einfach Flügel zurückgeben. In der Regel werden statische Methoden nur dann verwendet, wenn Sie versuchen auf statische Variablen oder eine Art von Funktionalität zuzugreifen oder diese zu verwenden oder Dinge wie einen einfachen Getter genau hier zurückzugeben . Jetzt in meiner Hauptklasse kann ich keine Vogelpunkt-gekommene Flügel ausdrucken. Und natürlich wird dies das gleiche Ergebnis haben weil wir einfach dieselbe Variable zurückgeben, aber ähnlich dem variablen Vogelpunkt gibt es Get Wings nicht wirklich. Denn wiederum sind statische Eigenschaften und statische Methoden an die Klasse gebunden nicht an das aus der Klasse erstellte Objekt gebunden. 37. Abstrakte Kurse: Bisher haben wir uns normale Kurse wie unser Haus, unseren Vogel und unsere Hotelklassen angeschaut wie unser Haus, unseren . Aber jetzt werfen wir einen Blick auf etwas als abstrakte Klassen bekannt ist. Dies ist eine andere Art von Klasse , die wir nicht direkt verwenden können. Wenn ich zum Beispiel zu meiner Vogelklasse gehe und dies zu einer öffentlichen abstrakten Klasse mache, passiert hier nichts direkt. Alles sieht normal aus. Wenn wir jedoch zu unserer Hauptdatei zurückkehren, haben wir hier einen Fehler, da wir abstrakte Klassen nicht direkt verwenden können. Dies sind Klassen, die nur für Klassen verwendet werden sollen , die sie erweitern. Zum Beispiel kann ich hier eine neue Klasse machen und ich nenne das eine Krähe. Dies wird die Vogelklasse erweitern. Verlängert Vogel. Und jetzt müssen wir unseren eigenen Konstruktor erstellen da wir hier einen nicht standardmäßigen Konstruktor haben. Ich kann also sagen, dass öffentlich der Parameter genau derselbe ist wie Vogel. So können wir, wie wir hier sehen können, wenn wir in unsere CHRO-Klasse zurückgehen, diese Superfunktion als Typ übergeben aufrufen. Jetzt sollten alle Pfeile verschwinden. Wenn wir wieder in unsere Hauptklasse gehen. Und anstatt Vogel direkt zu benutzen, werde ich jetzt Cro sagen, gro ist gleich einem neuen CRO. Jetzt haben wir Zugriff darauf und das hatten wir immer noch in einer Zeichenfolge übergeben. In diesem Fall geben wir den Namen Crow weiter. Und das ist technisch gesehen ein Vogel , weil Cro Bird verlängert. Aber warum sollten Sie eine abstrakte Klasse haben wollen , die erweitert werden muss? Wir können dies nicht direkt verwenden. Nun, hier kommt das Konzept der abstrakten Funktionen ins Spiel. Also kann ich hier zum Beispiel öffentlich abstrakt sagen, nichtig. Ich kann das Singh nennen. Und ich werde keinen Funktionskörper einschließen. Wenn ich das machen würde, haben wir einen Fehler. Wenn ich den Mauszeiger darüber fahre und jetzt heißt es, dass abstrakte Methoden kein Töpfchen haben können. Also hier werde ich nur die Deklaration einer Funktion erstellen , aber es ist kein Körper daran gebunden. Jetzt hatte jede Klasse Ausdehnungen, die Vogelklasse ist gezwungen, diese Sink-Funktion zu erweitern. Wenn ich zurück zu einer Krähe gehe, haben wir hier einen Fehler. Wenn ich den Mauszeiger darüber fahre, heißt es, dass die Klasse Crow entweder als abstrakt deklariert werden muss oder die abstrakten Methoden implementieren muss. ich hier in Bert sehe, kann ich öffentlich sagen, nichtig, singen. Ich kann dann ein Geräusch ausdrucken , das eine Krähe machen könnte. Zum Beispiel das. Wenn ich jetzt wieder in meine Hauptdatei gehe, kann ich jetzt Crow Dot Sünde sagen. Und wenn ich das mache, werden wir sehen, dass wir dies auf die Konsole gedruckt haben. Sagen wir jetzt, ich habe eine andere Klasse hier. Ich nenne das einen Robin. Ich kann diesen Extend-Vogel haben. So können wir unseren eigenen Konstruktor erstellen. Also public Robin, String-Typ. Dann können wir diese beiden Super-Methode übergeben , die wir den Konstruktor von Bird nennen werden. Jetzt müssen wir die toString-Methode immer noch überschreiben . Öffentliche Leere, singe. Hier drucke ich Tweet aus, tweet. Und jetzt kann ich eine Robin-Instanz machen, indem ich sage Robin, Robin ist gleich neuem Robin und passiert Robin hier. Und dann kann ich jetzt Robin Dot Sünde sagen. Wenn ich das mache, werden wir die beiden verschiedenen Geräusche sehen , die Vögel machen werden. Und das ist nützlich, da die Vogelklasse eine abstrakte Klasse ist, was bedeutet, dass sie viel Setup hat, aber nicht direkt verwendet werden soll. Es soll mit anderen Klassen verwendet werden , die eine bestimmte Funktionalität haben werden. Zum Beispiel könnte jeder Vogel ein etwas anderes Geräusch machen. Und deshalb wollen wir jeden Vogeltyp zwingen , diese Funktionalität direkt zu implementieren. 38. Benutzeroberflächen: Werfen wir nun einen Blick auf Interfaces, die ähnliche Konzepte wie abstrakte Klassen haben, die sich nur ansehen müssten. Aber sie haben einige wichtige Unterschiede. Zum Beispiel haben wir hier eine abstrakte Vogelklasse. Und abstrakte Klassen haben normalerweise nur normale Dinge innerhalb von Klassen, zum Beispiel verschiedene Methoden und Variablen. Normalerweise haben wir jedoch auch eine abstrakte Funktion , die jede Klasse , die die Vogelklasse erweitert, implementieren muss. Wir haben uns das im letzten Video mit unserer CRO- und Robin-Klasse angeschaut , wo wir jetzt die Sing-Methode überschreiben müssen. Eine Sache, die Sie beachten sollten, ist, dass jede Klasse in Java nur eine andere Klasse erweitern kann, aber wir können so viele Schnittstellen verwenden, wie wir möchten. Zum Beispiel werde ich hier in meinem Projekt eine neue Java-Klasse erstellen. Und ich werde das genau hier in ein Interface umwandeln. Und ich nenne dieses Tier. Jetzt können wir innerhalb dieses Tieres keinen Konstruktor haben, zum Beispiel ein öffentliches Tier. Dies wird einen Fehler verursachen. Die einzigen Methoden, die wir hier haben können , sind abstrakte Methoden. Nehmen wir an, ich möchte, dass meine Robin- und Cro-Klasse diese Tierschnittstelle implementiert. Dies bedeutet auch, dass jedes Tier, das ich in Zukunft herstelle, sei es Kühe, Hunde, Schlangen, irgendetwas umsetzen muss. Dies sollte also nur Dinge enthalten, die für jedes einzelne Tier spezifisch sind , sagen wir öffentliche Int, durchschnittliche Lebensdauer. Und wieder werden dies abstrakte Methoden sein. Also kann ich hier keinen eigentlichen Funktionskörper schreiben , weil dies wiederum eine Schnittstelle ist. Wir können nur selbst Funktionen haben. Aber wenn ich zum Beispiel in die Mikroklasse gehe , kann ich diese Geräte tierisch machen. Jetzt bekommen wir einen Fehler. Wenn ich den Mauszeiger darüber fahre, heißt es, Klasse Crow muss entweder als abstrakt deklariert werden oder die durchschnittliche Lebensdauer der abstrakten Methode im Tier implementieren . Hier kann ich sagen, öffentliche Int durchschnittliche Lebensdauer. Und das wird acht zurückgeben. Jetzt bekommen wir nirgends einen Fehler mehr. Ich gehe zu meinem Robin, ich kann jetzt sagen „implements animal“. Wir müssten genau das Gleiche tun. Public int, durchschnittliche Lebensdauer. Hier kann ich zurückkehren. Jetzt kann ich in meine Hauptdatei zurückkehren und durchschnittliche Lebensdauer des Wachstumspunkts ausdrucken, und ich kann die durchschnittliche Lebensdauer von Robin Dot ausdrucken. wir das ausführen, werden wir jeweils 82 sehen. Und Sie denken vielleicht, dass wir genau das gleiche Konzept erreichen können genau das gleiche Konzept erreichen nur die Funktion hinzufügen, die eine abstrakte Methode zu unserer Bird-Klasse hat . Und das stimmt. Und danach sind Klassen in gewisser Weise den Schnittstellen ähnlich. Der Hauptunterschied besteht jedoch darin, dass Sie normalerweise eine Schnittstelle verwenden möchten wenn Sie nur abstrakte Funktionen haben und keine anderen Funktionen haben. Und ein wesentlicher Unterschied besteht hier, wie ich bereits erwähnt habe, darin, dass wir so viele verschiedene Schnittstellen implementieren können , wie wir wollen. Wenn ich zum Beispiel eine andere Schnittstelle namens animal to hätte, könnte ich sie hier implementieren. Diese sind durch Kommas getrennt, aber in Java können wir nur eine einzige Klasse erweitern. Das ist also ein Vorteil , den Schnittstellen haben, ist, dass Sie so viele von ihnen wie möglich verwenden können. In der Regel möchten Sie also Schnittstellen verwenden es sei denn, es ist sinnvoll, eine Klasse tatsächlich zu verwenden. Beispielsweise verfügen Sie über Standardfunktionalität , die von jeder einzelnen untergeordneten Klasse geerbt oder technisch erweitert werden sollte . Wenn Sie jedoch nur diese Funktionen hier haben, dass jede einzelne untergeordnete Klasse, wie Robin und Cro, sich selbst überschreiben und implementieren sollte, sollten Sie eine Schnittstelle verwenden. 39. Instanz: Was wäre, wenn Sie bestimmte Arten von Klassen mit anderen Klassen überprüfen wollten ? Zum Beispiel beginne ich mit dem Code, mit dem ich im letzten Video aufgehört habe, aber ich werde alle Print-Anweisungen hier loswerden . Wir haben gerade eine Krähe und ein Rotkehlchen. Ich kann keine if-Aussage haben, die besagt, wenn eine Krähe eine Instanz eines Vogels ist, kann ich Crow ist ein Vogel ausdrucken. Und hier bekommen wir diese Warnung. Wenn ich darüber schwebe, heißt es, dass konditionierte Wachstumsinzidenz von Vögeln immer wahr ist. liegt daran, dass diese Zeile hier nur eine Variable ist, die wir erstellt haben, aber wir ändern sie überhaupt nicht. Es weiß mit Sicherheit, dass dies ein Beispiel eines Vogels ist weil cro Bird erweitert, wie wir es hier sehen. Wenn ich das jetzt betreibe, ist es natürlich Co-Investment, sagen wir, dass eine Krähe ein Vogel ist, wie wir genau hier sehen. Dies kann aber auch mit Schnittstellen geschehen. Eine Krähe ist also ein Beispiel für ein Tier. Wenn ich das jetzt durchführe, erhalten wir genau die gleiche Antwort, wie wir hier sehen. Natürlich sollten wir den Satz technisch ändern, um zu sagen, dass eine Krähe ein Tier ist. Aber du verstehst die Idee. Instanz von kann nützlich sein, wenn wir prüfen möchten, ob ein bestimmtes Objekt eine Instanz einer anderen Klasse oder einer Schnittstelle ist . Und dies ist ein weiterer Anwendungsfall für Schnittstellen, da Sie technisch gesehen nicht unbedingt etwas in Ihrer Schnittstelle haben müssen und es immer noch funktioniert. Zum Beispiel implementiert ein Rotkehlchen immer noch Tier, und die CRO implementiert immer noch durchschnittliche Lebensdauer der Tiere jetzt wird gerade einer normalen Methode , die an die Krähenklasse gebunden ist und an die Robin-Klasse angehängt. Und hat nichts mit der Tierschnittstelle zu tun. Aber jetzt, da Robin und CRO beide Tiere sind , weil wir die Schnittstelle immer noch implementieren. Wir können sie immer noch benutzen und Schecks wie diese. 40. Enums: Wir werden uns jetzt von der objektorientierten Programmierung entfernen und in andere Aspekte von Java bewegen. In diesem Video werden wir beispielsweise etwas über Enums erfahren, was für Aufzählungen steht. Grundsätzlich sind dies bestimmte Arten von Werten, die wie Variablen sind, jedoch nicht ändern können und auf sehr spezifische Weise verwendet werden können. Also lasst uns weitermachen und hier eine neue Datei erstellen. So können wir die Java-Klasse auswählen. Dann können wir hier Enum auswählen. Ich rufe diese Wochentage an. Sie können Enums haben, um die gewünschten Werte zu haben. Aber normalerweise werden dies Dinge sein , die sich niemals ändern sollten. Sie sind also technisch nicht wie eine Variable, bei der Sie eine Eingabe von einem Benutzer oder einer Art Zufallszahl haben könnten . Dies sind Dinge, die konkret sein und immer genau auf die gleiche Weise verwendet werden. Ein gutes Beispiel dafür sind die Wochentage, die sich nicht ändern werden. Hier füge ich ein Sonntagskomma hinzu. Mir ist aufgefallen, wie ich in Großbuchstaben tippe. Dies ist eine übliche Konvention , wenn Sie tatsächlich Enums verwenden. Dann können wir Montag, Dienstag, Mittwoch, Donnerstag, Freitag und Samstag haben. Offensichtlich buchstabiert man richtig. Jetzt haben wir diese sieben verschiedenen Werte in unserer Aufzählung, aber wie verwenden wir sie tatsächlich und wie sind sie nützlich? also wieder in unsere Hauptakte gehe, kann ich Wochentage Punkte sagen. Und dann kann ich auf jeden einzelnen Wert zugreifen , wenn ich wollte. Oder ich bekomme sie alle als Array. Hier sehen wir, dass die Werte-Methode in Enums integriert ist und Wochentage als Array zurückgibt. Aber wenn ich zum Beispiel am Freitag Wochentage ausdrucken wollte , kann ich das dann ausführen. Hier sehen wir Freitag in der Konsole. Wir können diese auch mit einer if-Anweisung verwenden. Jetzt hat jeder einzelne Aufzählungswert auch eine Reihe verschiedener Methoden. Zum Beispiel können wir es mit einer anderen Instanz von Tagen pro Woche vergleichen . Wir können den Namen bekommen, wir können die Ordinalzahl bekommen , es sei denn, wir schauen uns diese beiden Dinge kurz an. Also wollte ich den Namen ausdrucken. Dann kopiere ich diese Zeile und füge sie ein. Und ich drucke die Ordinalzahl aus. Wenn ich das hier ausführe, sehen wir Freitag wieder, und dann wird 55 der eigentliche Index sein , dass dies verwendet wird. Zum Beispiel ist Sonntag 0. Jetzt müssen Sie diese Kommentare nicht hinzufügen, ich mache dies nur, um es uns einfacher zu machen , dies tatsächlich zu lesen. Also hier haben wir 012345, und natürlich wäre Samstag sechs, aber deshalb sehen wir fünf und unsere Konsole. Ich werde all das los. Und jetzt lasst uns diese Aufzählung erweitern. Nehmen wir zum Beispiel an, ich möchte nicht, dass Freitag ein Großbuchstaben ist , sondern ich möchte eine bestimmte Zeichenfolge als Namen dieses Tages umschreiben . Ähnlich wie Klassen können Enums tatsächlich einen eigenen Konstruktor haben. Ich werde ein Semikolon ganz am Ende aller meine Werte setzen ganz am Ende aller meine Werte in diesem Fall einen Samstag hatten. Und dann kann ich hier Wochentage sagen. Jetzt merken Sie vielleicht, dass ich hier weder öffentlich noch privat oder ähnliches habe. liegt daran, dass, wenn ich den Mauszeiger über diesen Fehler fahre, öffentliche Modifikator hier nicht erlaubt ist. Der Grund dafür ist, dass diese Konstruktorfunktion hier nur innerhalb der Enum selbst ausgeführt werden kann. Zum Beispiel innerhalb der Sonntagsklammer. Hier würden wir verschiedene Argumente in den Konstruktor übergeben . Wir können nicht außerhalb dieser eNode-Datei auf diesen Konstruktor zugreifen . Aber warum brauchen wir überhaupt einen Konstruktor? Nun, wir können tatsächlich für jeden einzelnen Aufzählungswert unterschiedliche Werte speichern . Ähnlich wie private Eigenschaften einer Klasse, sage ich den privaten String-Namen, ich denke, ein privater boolescher Wert, Workday. Und dann kann ich innerhalb des Konstruktors diese beiden Eigenschaften benötigen. Also String-Name, Boolean, Workday. Dann kann ich sagen, dass dieser Name gleich Name ist und dieser Punkt-Arbeitstag entspricht Arbeitstag. Jetzt bekommen wir einige Fehler bei jedem unserer Werte. Und das liegt daran, dass es standardmäßig einen Konstruktor ohne integrierte Argumente aufruft . Aber wenn ich den Mauszeiger darüber fahre, wird es natürlich eine Zeichenfolge und einen booleschen Wert erwarten. Hier. Ich kann am Sonntag vergehen und dann kann ich falsch sagen, da es ein Arbeitstag ist. Ich werde das Gleiche für all diese tun. Also zum Beispiel Montag und wahr, wie ich sage Dienstag und wahr, Mittwoch und ein wahrer. Ich kann dann am Donnerstag vergehen. Und stimmt. Hier haben wir einen Freitag und wahr, und dann schließlich Samstag und falsch. Jetzt haben wir keine Fehler mehr, wenn wir nicht versuchen, einen davon in unserer eigentlichen Datei hier zu verwenden . anstelle von Tagen pro Woche den Theta-Punktnamen Kann ich anstelle von Tagen pro Woche den Theta-Punktnamen auf die tatsächlichen Werte wie Wochentag zugreifen? Und das können wir nicht, wir müssen tatsächlich unsere eigenen öffentlichen Getter machen , um das zu tun. Hier kann ich public sagen, string getName. Ich kann jetzt den Namen zurückgeben. Dann kann ich sagen, dass public boolean Workday ist, und ich kann jetzt den Arbeitstag zurückgeben. Getname ist kein wirklich guter Name für die Methode. Der Grund dafür ist, dass dies leicht mit dem Namen verwechselt werden kann . Zum Beispiel haben wir name und getName. Es ist sehr unklar, welches wir wollen werden. Eine Sache, die wir tun können, ist, dass wir dies umbenennen können , um den Anzeigenamen zu erhalten. Jetzt wird ein Anzeigename als etwas angezeigt, das normalerweise Benutzern angezeigt wird. Also etwas mit einem Großbuchstaben F und Kleinbuchstaben, alles andere wäre ein besserer Anzeigename, dass alles ein Großbuchstaben ist, alles ist ein Großbuchstaben, es sieht für den Benutzer seltsam aus. Und so ein Kapital F mit allem Kleinbuchstaben, so würde man das sagen. Normalerweise wäre dies ein richtiger Anzeigename. anstelle von GetName zurückgehe, kann ich jetzt den Anzeigenamen für Kinder sagen. Dann sage ich hier natürlich , dass Friday Dot Arbeitstag ist. Ich glaube, mach weiter und führe das durch. Wir sollten sowohl den Anzeigenamen als auch sehen , ob es sich um einen Arbeitstag handelt , der in diesem Fall S Freitag hat und wahr ist. Jetzt können Sie Enums tatsächlich als Variablentypen verwenden. Zum Beispiel kann ich sagen Wochentage, Tag entspricht Wochentagen, Montag. Ich kann dann sagen, wenn Tag Arbeitstag ist, kann ich heute ausdrucken, um zur Arbeit zu gehen. Ansonsten kann ich ausdrucken, es ist ein Wochenende. Wenn ich das jetzt mache, werden wir heute zur Arbeit gehen , weil wir auf den Wert Day zugegriffen haben , der Montag entspricht. Aber wenn ich das auf Samstag ändere und das mache, sehen wir jetzt, dass es ein Wochenende ist. Jetzt gibt es nur noch eine Sache, die ich dir mit Enums zeigen wollte, und das ist die Fähigkeit, sie alle zu durchlaufen, wie ich schon sagte, vier Wochentage, Tag. Hier kann ich in Tagen pro Woche Punktwerte übergeben. Wenn ich den Mauszeiger darüber fahre, sehen wir, dass dies eine Reihe von Tagen pro Woche zurückgibt. Dies wird ein Array jedes einzelnen Wertes als eigenes Element sein. Hier kann ich den Tagespunkt ausdrucken, uns beim Namen holen, dann einen Doppelpunkt. Dann kann ich am Tag ist Workday hinzufügen. Wenn ich das mache, wird es jeden Tag durchlaufen. Es wird sowohl ihren Namen als auch einen booleschen Wert drucken, wenn es sich um einen Arbeitstag handelt oder nicht. Offensichtlich erhalten wir bei einer Enums keine externen Eingaben von anderen Teilen des Programms. Alles mit einer Enum oder selbst eingeschlossen, was bedeutet, dass die Argumente, die an den Konstruktor übergeben werden, oder nur statische Werte, die eigentlich keine Variablen sind. Wie Sie sehen können, übergebe ich ihm nur eine Zeichenfolge und eine Übergabe eines booleschen Wertes. Ich gebe keine Variablen weiter. Enums sind nützlich, wenn Sie so etwas wie die Wochentage haben , an denen sie konkret sind und sich niemals ändern werden. Nicht einmal die Variablen, die den Konstruktor übergeben , werden sich nicht ändern. Dies ist sehr nützlich, wenn Sie jemals Dinge haben , die sehr konkret sind, denn dann können Sie leicht darauf zugreifen und bestimmte Werte referenzieren , ohne sich Gedanken darüber machen zu müssen, dass sie sich ständig ändern. 41. Versuche endlich mal wieder: In einem früheren Video, als wir Scanner verwenden, haben wir gesehen, wie ein Fehler aussieht. Lasst uns weitermachen und das neu erstellen. Ich kann einen Scanner erstellen. Ich nenne es Input und ich sinus ist gleich dem Wert des neuen Scanners. Hier kann ich System.in passieren. Das sollte dir alles von früher im Kurs ziemlich vertraut sein . Jetzt drucke ich einfach den Eingabepunkt nächstes int aus . Und wenn ich das ausführe, wird erwartet, dass ich eine ganze Zahl eingebe. Wenn ich zum Beispiel fünf eingebe, funktioniert alles gut und der Prozess wurde mit einem erfolgreichen Exit-Code abgeschlossen , der 0 ist. Aber wenn ich das noch einmal ausführe und eine Zeichenfolge wie Test eingebe, erhalten wir jetzt eine Ausnahme. Dies ist im Grunde nur ein Fehler. Und auf den ersten Blick mag das sehr verwirrend aussehen, aber es ist eigentlich sehr einfach. Grundsätzlich haben wir eine Ausnahme im Thread main und es wird eine Liste geben, woher alle Fehler stammen. Dies wird als Stack-Trace bezeichnet. Und das verfolgt im Grunde genau, woher der Fehler stammt. Jetzt sind diese alle tatsächlich anklickbar, und tatsächlich sehen wir den Namen des Fehlers genau hier als Ausnahme für die Input-Nichtübereinstimmung. Das passiert, wenn wir etwas eingeben , das nicht der richtige Typ ist. Ich kann tatsächlich auf einen dieser klicken, zum Beispiel Scanner Dot Java. Und das wird die Haut oder die Klasse öffnen, die eine Menge Sachen enthält, um die wir uns eigentlich keine Sorgen machen müssen. Ich schließe das ab. Wichtiger ist jedoch, dass wir auf unseren eigenen Code klicken können. Wir können das tatsächlich in Blau sehen. Wenn ich alle meine Dateien schließe, kann ich dann genau hier darauf klicken, öffne es und setze mich genau in die gleiche Zeile, in der der Fehler liegt. Nett, aber wie reparieren wir das eigentlich? Wir können etwas benutzen, das als Try-Catch bekannt ist. Ich füge hier einen Kommentar hinzu. Wir haben Try-Catch und wir haben auch eine andere Option, die als endlich bekannt ist, die Syntax dafür wäre, geschweifte Klammern zu versuchen, und danach müssen Sie einen Fang hinzufügen. Dies wird eine Ausnahme haben. Ich nenne das hier eine Ausnahme. Und es gibt verschiedene Arten von Ausnahmen. In der Regel möchten Sie hier keine generische Ausnahme haben, sondern Sie möchten den genauen Ausnahmetyp verwenden den genauen Ausnahmetyp , den Sie erwarten. In diesem Fall handelt es sich um eine Ausnahme von Input-Nichtübereinstimmungen, wie wir dem Stack-Trace genau hier entnehmen können. Anstatt also nur eine Ausnahme zu sagen, werde ich sagen, dass die Ausnahme der Eingabe nicht übereinstimmt. Jetzt kann ich hier drin sagen e dot print Stack Trace. Und das wird im Grunde genau das Gleiche tun , was wir in unserer Konsole genau hier sehen. Um dies zu beweisen, kann ich diese Print-Line-Aussagen machen. Ich kann es in den Try-Fang stecken. Wenn ich das mache, werden wir genau die gleichen Ergebnisse erzielen. Wenn ich etwas eingebe, das keine ganze Zahl ist , zum Beispiel diese Zeichenfolge. Hier sehen wir den genauen Fehler. Was genau passiert hier? Nun, im Grunde werden wir diesen Code genau hier ausprobieren. Wenn etwas nicht funktioniert, wird ein Fehler ausgelöst. Wenn wir jetzt keinen Fehler feststellen, stürzt das Programm standardmäßig ab. Um dies zu beweisen, kann ich diese Zeile gleich hier zurückbringen. Und ich werde vorerst unseren Try-Fang kommentieren . Und um dies mit mehreren Zeilen zu tun, können Sie einfach alle auswählen und dann den Schrägstrich oder den Befehls-Schrägstrich auf einem Mac steuern . Jetzt hier drin werde ich ausgearbeitet ausdrucken. Dies ist, nachdem wir die nächste Int-Eingabe erhalten haben. Wenn ich das mache, werde ich nach einer Nummer gefragt. Ich werde fünf betreten und es hat funktioniert. Aber wenn ich das noch einmal durchführe und in den Test eingetreten bin, wird es nicht sagen, dass es funktioniert hat. Das liegt daran, dass das Programm tatsächlich abgestürzt ist. Und so wird alles, was daran hinausgeht, keine Rampe sein. Dies ist der Hauptgrund, warum Sie Try-Catch verwenden möchten. Denn wenn ich danach ausdrucke und das Programm hier ausführe, kann ich in den Test einsteigen. Und es wird immer noch den Fehler auslösen, weil wir ihn aufgrund der Zeile 14 drucken, bearbeiten, Stack-Trace drucken. Aber es wird das Programm nicht zum Absturz bringen. Und das sehen wir, weil wir das Ausdrucken direkt danach funktioniert haben. Wann immer Sie Code haben, eine Ausnahme auslösen könnte, wollten Sie sicherstellen, dass Sie diese Ausnahme abfangen und sie dann entsprechend behandeln. In einigen Fällen könnte dies ausgedruckt werden. Sie haben keine Zahl eingegeben und wir müssen nicht unbedingt einen Stack-Trace ausdrucken. Also werde ich das entfernen. Wenn ich das jetzt renne und in den Darm komme, werden wir den Fehler nicht sehen. Stattdessen werden wir es einfach sehen. Sie haben keine Zahl eingegeben. Jetzt habe ich das endlich erwähnt. Was genau ist das? Nun, das kommt immer danach. Versuch es zu fangen. Hier kann ich hinzufügen. Und schließlich ist dies etwas, das ausgeführt wird, egal was passiert. Versuchen Sie also, dass wir eine Zeile nach dem anderen laufen. Es wird also diese Linie und diese Linie und diese Linie laufen. Wenn es jemals eine Ausnahme gibt, wird es sofort aufhören, diesen Code hier auszuführen. Und es wird sofort zur Catch-Anweisung springen und im Grunde alles laufen, was sich in diesen geschweiften Klammern befindet. Und natürlich wird dieser hervorgehobene Code hier nur ausgeführt, wenn es eine Ausnahme gibt. Wenn alles innerhalb des Try-Blocks genau hier gut funktioniert, wird der Catch-Code niemals ausgeführt. Aber schließlich geht es durchlaufen, egal was passiert, egal ob alles einwandfrei funktioniert hat oder ob es eine Ausnahme gibt, kann ich ausdrucken. Endlich rannte. Und ich werde das hier drin führen. Ich kann eine Zahl eingeben, sagen wir zehn. Und hier sehen wir, dass es endlich gelaufen ist. Wenn ich das noch einmal ausführe, kann ich eine Zeichenfolge eingeben. Wir sehen, du hast keine Zahl eingegeben, aber wir sehen immer noch endlich RAN. Dies ist in vielen Anwendungsfällen nützlich, aber ein sehr spezifischer liegt außerhalb des Geltungsbereichs dieses gesamten Kurses. Das ist im Grunde genommen, wenn es um Datenbankverbindungen geht. Im Wesentlichen würden wir mit unserer try-Anweisung versuchen, eine Verbindung zur Datenbank herzustellen. Innerhalb eines Fangs würden wir alle Fehler behandeln und beispielsweise ungültige Anmeldedaten sind. Und dann wird endlich alle offenen Verbindungen schließen. In einigen Anwendungsfällen werden Sie Verbindungen wie diese sehen, und dies ist ein gutes Beispiel Theorie des Windes, das endlich verwendet werden kann. 42. Fehler werfen: Im letzten Video haben wir uns angeschaut, wie man mit verschiedenen Fehlern umgeht. Aber was auch immer wir wollen, um unsere eigenen Fehler zu erzeugen. Zum Beispiel werde ich all dies löschen und diesen Kommentar hier ändern, um einen Fehler auszulösen. Und so nennen wir es immer dann, wenn wir unseren eigenen Fehler erstellen möchten. Zum Beispiel kann ich hier eine Zeichenfolge sagen. nächste Zeichenfolge entspricht dem Eingabepunkt in der nächsten Zeile. Jetzt werde ich sagen, wenn nächste String-Punkt gleich dem Fallfehler ignoriert wird, wollte ich meinen eigenen Fehler nicht auslösen. Um dies zu tun, kann ich sagen, neue Ausnahme werfen und ich kann eine Zeichenfolge übergeben. Und dies wird die Nachricht sein , die auf die Konsole gedruckt wird. Zum Beispiel wurde vom Benutzer ein Fehler ausgegeben da der Benutzer die Zeichenfolge genau hier als Fehler eingibt . Aber wir bekommen gerade einen Fehler. Die Lösung besteht darin, die Ausnahme zur Signatur der Methode hinzuzufügen . Wenn ich darauf klicke, sagt unsere Hauptmethode jetzt, dass es eine Ausnahme auslöst. Dies wird Java im Grunde sagen, dass wir innerhalb dieser Funktion unsere eigene Ausnahme auslösen werden. Jetzt, außerhalb unserer if-Anweisung, kann ich die nächste Zeichenfolge vom Benutzer ausdrucken . Ich fahre weiter und führe das durch. Und hier gehe ich in HelloWorld ein und es sollte Hello World ausdrucken und alles funktioniert wie erwartet. Aber wenn ich das noch einmal ausführe, kann ich den Fehler nicht ausdrucken. Und dies wird dann diese wenn Aussage wahr machen. Wenn ich also die Eingabetaste drücke, erhalten wir jetzt unsere eigene Ausnahme. Hier haben wir die Saite. Es besagt, dass ein Fehler vom Benutzer ausgegeben wurde, und wir können darauf klicken, um zu sehen, wo die Ausnahme ausgelöst wurde. Jetzt fragst du dich vielleicht, warum sollten wir das jemals tun wollen? Warum sagen Sie dem Benutzer nicht einfach, dass er den String-Fehler nicht eingeben soll? Nun, ein Grund, warum Sie dies tun möchten, ist dass Programmierer, die Ihren Code oder sich selbst mit anderen Teilen Ihres Projekts verwenden , dann gezwungen sind , bestimmte Fehler zu erkennen und korrekt zu interagieren. Wenn Sie beispielsweise Ihr eigenes Programm erstellen, das andere Entwickler herunterladen und importieren. Sie können dann verschiedene Fehler , damit Entwickler dann gezwungen sind , sie zu fangen und damit umzugehen , je nachdem, wie sie möchten. Abhängig von der Art des Fehlers handelt es sich um. Das gleiche Konzept gilt für Ihre eigenen Projekte. Sie können bestimmte Fehler wenn bestimmte Dinge passieren. In anderen Teilen Ihres Programms können Sie das Try-Catch-System verwenden um dieses Problem tatsächlich zu lösen. 43. Listen und Array: Neu am Beginn des Kurses mussten wir uns Arrays ansehen, aber jetzt werden wir uns Listen und ArrayLists ansehen. Dies werden im Grunde fortgeschrittenere Methoden zur Verwendung von Arrays sein . Und in vielen Situationen , die benutzerfreundlicher und leistungsfähiger sein werden . Nehmen wir an, ich möchte ein Array von Ganzzahlen haben, wie ich sage, dass int numbers gleich Klammern sind. Und hier kann ich meine Zahlenliste hinzufügen , zum Beispiel 123. Nehmen wir an, ich möchte weitermachen und ein viertes Element hinzufügen. Nun, wenn ich sage, dass Zahlen Index drei gleich vier sind, werden wir jetzt einen Fehler haben. Wenn ich den Mauszeiger darüber fahre, heißt es Array-Index außerhalb der Grenzen. Im Grunde bedeutet das, dass bei jedem Array keine neuen Dinge hinzugefügt werden können. Sie müssten ein völlig anderes Array erstellen. Zum Beispiel könnte ich sagen, dass Zahlen einem neuen Integer-Array mit 1234 entsprechen . Und das wird funktionieren. Aber offensichtlich möchte ich das nicht tun müssen. Ich möchte die Möglichkeit haben, diesem Array einfach etwas hinzuzufügen. Standardmäßig verfügen Arrays jedoch nicht über diese Funktionalität. Deshalb haben wir Array-Listen. Dies sind viel einfachere Möglichkeiten, Arrays zu verwenden, bei denen wir Dinge leicht entfernen, Dinge hinzufügen, natürlich auf Dinge zugreifen können Dinge hinzufügen, natürlich , die dem vorhandenen Löschen ähneln. Ich gehe weiter und kommentiere diese Zeile hier draußen. Und ich werde eine neue ArrayList erstellen. Jetzt besteht der erste Schritt darin, eine generische Liste zu erstellen. Das wird von Java util sein. Dies wird eine Schnittstelle sein, wie wir auf dem grünen Icon hier sehen können. Jetzt müssen wir hier weitergeben, welche Art von Daten wir in einem Geschäft betrachten und wir können kein int übergeben da dies einen primitiven Typ hat, wir eine bestimmte Klasse übergeben müssen. Innerhalb von Java haben wir Zugriff auf Integer, die eine Klasse ist. Und dies wird es uns ermöglichen, Ganzzahlen in dieser Liste zu verwenden. Also nenne ich diese Listennummern. Wir können dies also einer neuen ArrayList zuweisen. Jetzt haben wir hier nur weniger als und größer als Zeichen. Und dann könnten diese Klammern, das Zeichen kleiner als und größer als, das Zeichen kleiner als und größer als, den gewünschten HEPA-Wert enthalten, z. B. eine ganze Zahl. Aber im modernen Java müssen wir das nicht tun. Es wird im Grunde nur darauf zugreifen, welche Art von Wert wir von der Ganzzahl benötigen, die wir genau hier übergeben haben. Was genau ist gerade passiert? Nun, wenn ich den Mauszeiger hier über die Liste fahre, sehen wir, dass dies eine Schnittstelle ist, wie wir genau hier sehen, eine öffentliche Schnittstelle. Und das gibt uns eine Reihe verschiedener integrierter Funktionalitäten, die die meisten verschiedenen Listen haben werden. Nachdem ich das gesagt habe, hätte ich erwähnen sollen, dass ArrayList nicht die einzige Art von Liste ist, sondern am einfachsten zu verstehen und am einfachsten zu demonstrieren ist. Wir werden es für dieses Tutorial verwenden. Jetzt ist ArrayList eine eigene Klasse, die die Listenschnittstelle implementieren wird. Es wird also alle Funktionen erhalten , die die Liste bietet, aber auch darauf aufbauen. Das ist cool und alles, aber wie verwende ich eigentlich die Zahlenliste? Nun, hier kann ich Zahlen Punkt sagen. Die erste Option besteht überhaupt darin, dass wir eine andere Sammlung, z. B. eine andere Liste, übergeben und alle Elemente hinzufügen können. Oder wir können einzelne Elemente wie eine Ganzzahl hinzufügen. Zum Beispiel eins. Wenn ich nun hier Zahlen Punkt hätte, können wir ein bestimmtes Element in einen bestimmten Index einfügen. Wir können die Liste auch löschen. Wir können sehen, ob es leer ist, Es gibt eine Reihe anderer Optionen wie das Entfernen bestimmter Elemente, Abrufen der aktuellen Größe oder der Anzahl der Elemente in der Liste und viele, viele mehr. Lasst uns fortfahren und alle drei Zahlen, die wir wollten, zu dieser Liste hinzufügen . Zahlen, füge keine zwei Zahlen hinzu, Punkt addiere drei. Jetzt sind die Zahlen ArrayList dem Zahlen-Array sehr ähnlich , das kommentiert wurde. In einem so einfachen Beispiel spielt es offensichtlich keine Rolle. Aber wenn wir wirklich zehn oder 100 Zahlen hinzufügen wollen , können wir diese Zahlen leicht durchlaufen und sie dann in die Add-Funktion hier übergeben. Oder wenn wir wollten, können wir hier ein Array in den neuen Array-Listen-Konstruktor übergeben . Jetzt können wir nicht einfach ein generisches Array übergeben . Wir müssen Arrays mit einem Kapital einen Punkt als Liste sagen. Jetzt werden wir hier drin einen Varargs mit einer beliebigen Anzahl von Ganzzahlen haben . Also kann ich 123 sagen. Wenn ich das jetzt lösche, werden wir immer noch das gleiche exakte Ergebnis haben. Wenn Sie also ein vorhandenes Array haben, können Sie es leicht weitergeben, ähnlich wie bei einer solchen Syntax. Aber normalerweise wirst du das nicht tun. Die meiste Zeit. Sie erstellen einfach eine ArrayList und fügen dann nach Bedarf Dinge hinzu. Also lasst uns weitermachen und alles hier ausdrucken. Ich kann Zahlen ausdrucken. Und wenn ich das durchführe, sehen wir jetzt 123. Versuchen wir, einige Elemente von hier aus zu bewegen. Ich kann sagen Zahlen entfernen. Hier können wir ein bestimmtes Objekt oder eine bestimmte Ganzzahl übergeben . Eine Ganzzahl wird dieses bestimmte Element nicht entfernen. Dies wird den Index tatsächlich entfernen. Ich verschiebe irgendwie Index eins, was der Wert zwei sein wird. Ich führe das aus, wir sehen jetzt nur 13 in unserem Array, wie wir es hier tun. Aber was passiert, wenn ich die Nummer zwei einfach entfernen möchte ? Nun, wie ich schon sagte, ganzzahliger Wert von und geht in. Wenn ich das jetzt mache, werden wir 13 sehen , wie wir es hier tun. Jetzt mag das etwas seltsam erscheinen. Warum müssen wir das eigentlich tun? Nun, wenn ich sage, Numbers dot remove hier, sehen wir, dass dies eine überladene Methode ist. Wir können einen Index oder einen Kondensator übergeben, ein Objekt, um nur die Zahl zwei oder die Nummer eins oder eine beliebige Art von grundlegender Ganzzahl zu übergeben . Es wird das als primitive Art von int behandeln. Es wird hier ein Themenbeispiel verwendet. Aber wenn wir eine bestimmte Klasse oder ein Objekt übergeben , das etwas repräsentiert, wird es die zweite Option genau hier verwenden. Genau das machen wir mit dieser Codezeile genau hier. Dies wird ein Objekt übergeben und nicht nur eine primitive Ganzzahl. Es wird dann die ArrayList durchlaufen und versuchen, alle Elemente zu entfernen, die diesem Wert entsprechen, was in diesem Fall, wie wir sehen, die Nummer zwei nicht sehen. Lasst uns nun herausdrucken, wie viele Elemente es im Surrealistischen gibt. Also könnte ich Zahlen sagen Punktgröße. Wenn ich das hier durchführe, sehen wir zwei in der Konsole. Und das können wir auch klären. Also lasst uns weitermachen und Zahlen sagen. Punkt klar. Wenn ich das jetzt mache, wird es das tatsächlich löschen nachdem wir die beiden Zahlen ausgedruckt haben, wie wir es hier sehen. Aber unsere Größe liegt jetzt bei 0, weil wir die ArrayList tatsächlich gelöscht haben. Jetzt ist ein ArrayList und Listengeneral als Sammlung bekannt. Es ist im Grunde eine benutzerdefinierte Klasse, die es uns ermöglicht , bestimmte Dinge hinzuzufügen und bestimmte Dinge zu entfernen. Und es gibt eine Reihe verschiedener Beispiele dafür. In diesem Video und im nächsten Video werden wir zwei Beispiele durchgehen. Aber ehrlich gesagt, jedes Beispiel zu behandeln, würde eigenen Kurs nur in diesem Fall rechtfertigen. Wir werden uns also nur an einige der einfacheren, am häufigsten verwendeten Sammlungen wie ArrayList und HashMaps halten einfacheren, am häufigsten verwendeten Sammlungen , die wir uns im nächsten Video ansehen werden. 44. Karten und Hash: Wir werfen jetzt einen Blick auf HashMaps, die eine Möglichkeit sind, etwas zu speichern, das als Schlüssel-Wert-Paar bekannt ist . Grundsätzlich bedeutet, dass es für jeden einzelnen Schlüssel einen entsprechenden Wert gibt. Werfen wir einen Blick auf einige Beispiele. Hier. Ich werde eine Map haben, und dies muss einen Schlüssel und einen Wert speichern , der zwei verschiedene Arten von Variablen sein kann. Zum Beispiel kann der Schlüssel eine Zeichenfolge sein und der Wert kann eine Ganzzahl sein. Ähnlich wie ArrayLists müssen dies die tatsächlichen Klassentypen sein. Also können wir hier nicht int sagen. Wir müssten eine ganze Zahl mit einem Kapital I angeben. Hier kann ich verschiedene Arten von Scores hinzufügen. Und ich werde eine gleiche einer neuen HashMap zuweisen. Ähnlich wie bei einer ArrayList können wir eine Zeichenfolge und eine Ganzzahl hinzufügen, wenn wir möchten. Aber im modernen Java ist es nicht notwendig, also werde ich es nicht tun. Was genau ist ein Schlüssel-Wert-Paar, ein Schlüssel-Wert-Paar bei diesen Ergebnissen aufgeführt ist, ist für ein bestimmtes Videospiel. Ich kann „Punkte“ sagen. Und hier können wir sehen, dass wir eine Zeichenfolge übergeben, was wir von dieser Zeichenfolge genau hier haben. Und wir geben hier auch eine ganze Zahl von dieser Ganzzahl aus. Dies ist ein Schlüssel-Wert-Paar. Nehmen wir zum Beispiel an, dass ich 77 Punkte in diesem Spiel habe. Ich kann sagen, Punkte-Punkt gesetzt. Bob hat PD-Punkte im Spiel und Punkte Punkte hier gesetzt, Joe hat 30 Punkte im Spiel. Lasst uns weitermachen und das auf der Konsole ausdrucken. Also kann ich Ergebnisse ausdrucken und ich kann das ausführen. Und hier sehen wir, dass Alex 77 entspricht, Joe ist 30 und Bob gleich 80. Aber welche anderen Möglichkeiten haben wir, wenn es darum geht? Ich kann hier „Punkte“ sagen. Ich kriege eine gewisse Sache. Und das war der Ort, an dem wir die Saite weitergeben würden. Zum Beispiel kann ich einen Alex passieren. Und ich werde diese ganze Zeile hier mit Control X oder Command X auf Mac schneiden . Und dann kann ich das ausdrucken. Ich kann es mit Control V oder Command V auf einem Mac einfügen. Und wenn ich das mache, werden wir die Ergebnisse für die Saite Alex bekommen , in diesem Fall sind es 77. Wenn ich Punkte sage, könnten wir es dann ähnlich wie eine ArrayList löschen. Dadurch werden einfach alle Einträge entfernt. Wir können einen Eintragssatz oder einen Schlüsselsatz bekommen. Wir können auch die Werte ermitteln und schauen uns gleich an, was diese drei Dinge hier machen. Wir können sehen, ob es leer ist. Wir können bestimmte Dinge ersetzen. Wir können die Größe bekommen. Hier können wir die Werte erhalten. Wir können auch sehen, ob es einen Schlüssel enthält, schrecklich einen Wert erreicht. Und es gibt eine Reihe anderer Optionen, z. B. sie zu entfernen. Die meisten davon sind selbsterklärend, andere müssen Sie möglicherweise mit der Dokumentation experimentieren oder nachschlagen. Lassen Sie uns weitermachen und versuchen, alle Schlüssel oder alle Werte oder beides zu durchlaufen . Ich werde diese Print-Statements hier los. Ich sage für String Key. Und dann werden wir hier eine for-each-Schleife benutzen. Also haben wir unseren Doppelpunkt hier. Ich kann jetzt sagen Punktschlüsselsatz. Und dies gibt ein Set zurück, das im Konzept einer Liste ähnelt , die wir im letzten Video gesehen haben. Jetzt hier drin kann ich einfach den Schlüssel ausdrucken. Wenn ich das mache, wird es Alex, Bob und Joe drucken , wie wir genau hier sehen. Aber was passiert jetzt, wenn wir Zugang zu den Werten erhalten wollten ? Ich kann sagen Punkte Punkt v, und hier haben wir Werte. Jetzt müssten wir das in einen int ändern, ich schätze ich int value. Und dann kann ich den Wert ausdrucken. Wenn ich das ausführe, können wir jetzt alle drei Werte aus dieser exakten Map sehen . Aber was ist, wenn ich Zugang zu beiden erhalten wollte? Nun, ich kann sagen, dass wir für den Eintritt mit einem Kapital E das von Java util Map verwenden werden. Hier müssen wir angeben, welche Arten von Variablen wir benötigen. In diesem Fall eine Zeichenfolge und eine Ganzzahl. Ich nenne diesen variablen Eintrag. Dann kann ich mit einem Doppelpunkt jetzt Punktepunkt-EntrySet sagen. Wenn ich jetzt den Mauszeiger über Eintragssätze fahre, wird dies einen Satz eines Eintrags zurückgeben , der ein K und V hat, was für Schlüssel und Wert steht. Im Wesentlichen kann ich sagen, dass der Einstiegspunkt fgetc key oder Entry Dot einen Wert erhält, um Zugriff darauf zu erhalten. Zum Beispiel ist der String-Schlüssel gleich Eintrag, Talk KCI und dann int value entspricht dem Wert des Eintrags Dot get value. Ich kann dann den Schlüssel ausdrucken , der den Benutzernamen hat, Pluswertpunkte hat. Wenn ich das jetzt durchführe, wird es herausgeben, was jeder Benutzer hat und welche entsprechenden Punkte wir genau hier sehen. 45. Erstellen einer Jar: Wir sind dabei, uns dem endgültigen Projekt für den Kurs zu nähern, der das Spiel Battleship in Java neu gestalten wird . Bevor wir das tun, müssen wir jedoch sicherstellen, dass wir verstehen wie wir unseren Java-Code tatsächlich in eine ausführbare Datei umwandeln können. Möglicherweise sind Sie mit Dot-EXE-Dateien vertraut , in denen Sie darauf doppelklicken können , und es öffnet ein Programm. In Java haben wir eine Dot-Jar-Dateien, die Sie wahrscheinlich schon einmal gesehen haben. Wie konvertieren wir unseren gesamten Quellcode genau in eine Dot-JAR-Datei, die wir tatsächlich ausführen können. Nun, der erste Schritt besteht darin, oben rechts auf das Zahnrad zu klicken und dann zur Projektstruktur zu wechseln. Oder Sie können diese verwirrende Abkürzung genau hier verwenden. Sobald Sie hier sind, möchten Sie nach links gehen und auf Artefakte klicken und dann auf den Pluszeiger über Jar klicken und dann von Modulen mit Abhängigkeiten aufrufen. Von dort aus müssen wir eine Hauptklasse angeben. Dies ist im Grunde die Klasse , in der unsere Hauptfunktion ist. Wenn ich auf einen geöffneten Ordner klicke, werden automatisch alle verschiedenen Dateien ausgewählt, die eine Hauptfunktion enthalten. Wir haben also nur einen. Wir können einfach auf Okay klicken und dann erneut auf Okay klicken. Jetzt kann ich von hier aus auf Okay klicken. Dann klicke ich auf Build, Build Artefakte. Und von hier aus können wir einfach die Eingabetaste drücken oder Sie können auch auf Build klicken. Wir sehen, dass es etwas in der Nähe des Bodens baut. Und jetzt, das ist erledigt, können wir unser OUT-Verzeichnis erweitern, in Artefakte gehen. Und hier sehen wir unser Workspace Dot Jar. Ich klicke mit der rechten Maustaste darauf. Ich könnte dann auf Pfadschrägstrich kopieren klicken. Und dann klicke ich von hier aus auf den absoluten Pfad. Wenn ich das einfüge, wird dies ein Dateipfad zu dieser exakten JAR-Datei sein . Um dies zu tun, können wir es nicht einfach öffnen. Wir müssen es tatsächlich durch ein Terminal laufen lassen. Der Grund dafür, wenn es sich um eine Konsolenanwendung handelt, was bedeutet, dass wir in unserer Konsole arbeiten , wie wir es während des gesamten Programms gesehen haben . Daher haben wir kein benutzerdefiniertes Fenster mit Schaltflächen und Bildern und all dem Zeug, das außerhalb des Geltungsbereichs dieses Kurses liegt . Davon haben wir in diesem Kurs nichts behandelt. Wie genau führen wir das aus? Wir müssen unser eigenes Terminal eröffnen. Wenn Sie unter Windows sind, können Sie eine Suche oder einen Befehl durchführen und dann die Eingabetaste drücken. Wenn Sie jetzt auf einem Mac sind, weil ich keinen Mac besitze, bin ich mir nicht sicher, wie das geht, aber Sie können einfach googeln, wie Sie das Terminal auf dem Mac öffnen und es sollte eine Reihe von Ergebnissen haben. Also helfe ich dir raus. Sobald Sie Ihre Eingabeaufforderung oder Ihr Terminal geöffnet haben, können Sie in jedem Eingabeaufforderung oder Ihr Terminal geöffnet haben, Fall Java-Space, Dash Jar-Speicherplatz eingeben und dann in Ihren Pfad einfügen. Aber seien Sie sich bewusst, wenn Sie Leerzeichen auf Ihrem Weg haben, müssen Sie schnell alles und doppelte Anführungszeichen machen. Ich füge hier doppelte Codes hinzu. Und dann kann ich mit der rechten Maustaste klicken , um den Pfad einzufügen. Hier sehen wir, dass der Warnock-Key-Ordner Leerzeichen enthält. Also muss ich auf beiden Seiten doppelte Anführungszeichen hinzufügen. Wenn ich die Eingabetaste drücke, sehen wir, dass tatsächlich nichts passiert. Das liegt daran, dass unser Code eigentlich nichts bewirkt. Lasst uns weitermachen und den Text ausdrucken, Hello World. Und dann gehe ich zu Build, baue Artefakte und drücke die Eingabetaste. Hier sehen wir, dass es sich noch einmal baut. zum Terminal zurückgehe, kann ich den Pfeil nach oben drücken, um zum vorherigen Befehl zu wechseln. Wenn ich die Eingabetaste drücke, heißt es jetzt helloworld. Der eigentliche Code wird jetzt durch diese JAR-Datei ausgeführt. 46. Einführung in das Schlachtschiff: Wir werden jetzt in das letzte Projekt für den Kurs eintauchen , der ein Einzelspieler-Schlachtschiff-Spiel machen wird . Hier sehen wir dieses Board und wir haben fünf verschiedene Arten von Schiffen, alle zufällig um das Board herum positioniert sind. Wir können dann eine Koordinate eingeben, zum Beispiel eine 0, die tatsächlich leer ist, wie wir hier sehen können. Und es wird dann „Miss“ sagen. Aber ich kann hier für diese Koordinate H auswählen. Und es wird dann „Hit“ sagen. Und das wird jetzt durch ein x ersetzt. Wenn ich es tue, dann wird j 0 dann sagen, benutze ihr Schlachtschiff sank und das ganze Schiff hier ist sinken. Im Gegensatz zu früheren Videos in dem Kurs, in dem wir Code geschrieben haben, werden wir während dieses Projekts gemeinsam an den Plänen für jedes einzelne Feature arbeiten . Und dann wollte ich versuchen , diese Funktion selbst zu erstellen. Sobald Sie diese Funktion abgeschlossen haben oder wenn Sie das Gefühl haben, so viel wie möglich getan zu haben, und benötigen immer noch zusätzliche Hilfe. Sie könnten dann zum nächsten Abschnitt des Videos gehen , in dem wir es tatsächlich zusammen erstellen werden. Ich empfehle Ihnen jedoch dringend, jeden einzelnen Teil dieses Projekts allein auszuprobieren , bevor sich das Schritt-für-Schritt-Tutorial ansehen. So arbeiten aktuelle Softwareentwickler. Es ist also eine großartige Angewohnheit , sich auf diese Weise zu begeben. Sie können mithilfe der Programmierung eine Fähigkeit zur Problemlösung aufbauen . 47. Dateien und Koordinaten: Um das Projekt zu starten, würde ich alle Dateien löschen, die Sie in Ihrem Projekt haben, als sicheres Zuhause. Die Datei, die Ihre Hauptfunktion hat in der ich war, erstellt hier diese fünf verschiedenen Dateien. Und bedenken Sie die Akte des Schlachtschiffs Maine. Dies enthält meine Hauptfunktion genau hier. Jetzt gibt es viele Teile in diesem Projekt, die aufeinander angewiesen sind. Wenn ich zum Beispiel den Mauszeiger über meine Hauptfunktion fahre, erstelle ich ein Spielerobjekt und erstelle ein Board-Objekt. Um die Dinge Schritt für Schritt zu machen, wollen wir mit dem kleinstmöglichen Stück beginnen , das von nichts anderem abhängen wird. Und es wird auch genutzt werden und verschiedene andere Orte in diesem Projekt werden hier eine Koordinate sein. Jetzt habe ich erwähnt, dass du alles selbst schreiben solltest , bevor du tatsächlich mitmachst. Aber diese Datei ist sehr einfach. Also werde ich diese Akte einfach schnell mit dir überfahren . Und in zukünftigen Videos mit diesem Projekt möchten Sie die Dinge selbst ausprobieren, bevor Sie Schritt für Schritt meinen eigenen Erklärungen folgen. Hier haben wir eine Akkordklasse , die für Koordinate steht. Dies wird einen X- und Y-Wert auf der Platine selbst darstellen . Es wird auch eine boolesche Eigenschaft haben, die darstellt, ob diese getroffen wurde. Das heißt also, wenn ein Schiff da ist und wir diese Koordinate tatsächlich erraten haben. Wenn wir jetzt eine Koordinate erstellen, geben wir einfach x und y durch den Konstruktor und weisen sie hier den lokalen Variablen zu. Wir haben dann einen Getter und Setter für alle drei privaten Immobilien, das x, das y und das ist Boolean getroffen. Im Wesentlichen sind wir in der Lage, das x zu erhalten, das y, C Wenn diese Koordinate getroffen wird, sowie diese einzelnen Werte. Jetzt haben wir hier eine ToString-Funktion. Immer wenn wir ein Objekt auf die Konsole drucken, wird die ToString-Funktion tatsächlich hinter den Kulissen ausgeführt . Wenn wir also eine Koordinate ausdrucken würden , wird sie im Wesentlichen x Komma ausdrucken. Nun, nur zur Klärung, falls Sie nicht wissen, was ein Viertel ist. Jede einzelne Zelle wird hier ihre eigene Koordinate sein. Zum Beispiel ist dies 0, das ist eins und so weiter. Irgendwann werden wir hier ein eigenes Board erstellen. Wir sind verschiedene Schiffe werden nach dem Zufallsprinzip platziert und die Plattenspalten werden von den Buchstaben a bis J dargestellt. Und die Plattenreihen werden von den Zahlen 0 bis neun dargestellt. Jetzt wird dieser X- und Y-Wert darstellen, wo sie von den Spalten und Zeilen abhängen. Und der Hüftwert wird darstellen, ob dies ein tatsächlicher Treffer war. Deshalb haben wir erraten, wo ein Schiff ist. Hier haben wir zum Beispiel einen C5 für diese Zelle genau hier. Wenn ich C5 sage, dann gehe ich zu einem x. Daher ändert sich diese Koordinate und mein Programm auf true. 48. Schiffe: Lasst uns jetzt unser eigenes Schiff erstellen. Und bevor Sie selbst einen Code schreiben, schlage ich dringend vor, dass wir uns den Plan für diese Klasse und genau die Tipps ansehen , die ich hier gegeben habe. Was genau ist ein Schiff? Nun, offensichtlich wird dies innerhalb unseres Programms hier, wenn ich es öffne, ein echtes Schiff darstellen, auf dem wir hier vier verschiedene Koordinaten haben. Und die Situation haben wir fünf verschiedene Koordinaten. Dieses ist ein kleineres Schiff, war insgesamt nur zwei davon, fünf verschiedene Chips. Wenn wir uns diese Klasse ansehen, sehen wir als erstes eine private Liste , die eine Reihe verschiedener Koordinaten enthält. Natürlich ist dies die Klasse, die wir im letzten Video geschrieben haben. Wie wir genau hier sehen, benötigt jedes Schiff eine eigene Koordinatenliste, damit wir genau wissen, wo es ist. Jetzt sehen wir auch alle möglichen Schiffsgrößen genau hier. Und denken Sie daran, dass jeder Kommentar, den ich hinzufüge wie diesen hier, dieser Kommentarblock hier soll Ihnen so weit wie möglich helfen und einige nützliche Informationen geben von dem, was sich in diesen Funktionen befindet. Aber hier haben wir eine statische Methode , die ein ganzzahliges Array zurückgibt. Dies wird im Grunde nur 54332 zurückgeben. Und wenn ich zu meinem Programm gehe und es wieder führe, sehen wir hier ein Schiff , das fünf lang ist. Hier sehen wir ein vierlanges Schiff, aber es ist nur eine Vertikale. Hier sehen wir eine zu lange Drei und dann noch drei. Wenn ich also ein sechs langes Schiff hinzufügen würde, führe ich dieses Programm erneut aus. Wir sehen es jetzt genau hier. Dies wird bestimmen, wie viele verschiedene Schiffe es in den Größen jedes Schiffes gibt. Denken Sie also daran, dass ich standardmäßig vorankomme , ich habe 54332. Als nächstes haben wir den Konstruktor. Und da dies nur eine Zeile lang hat, kann ich die Funktionalität nicht wirklich vor Ihnen verbergen, aber offensichtlich ist es sehr einfach. Wir erhalten gerade eine Liste von Koordinaten und weisen diese genau hier der lokalen Koordinatenliste zu. Dann haben wir auch einen Getter sowohl für die Koordinaten die Anzahl der Koordinaten, die wir haben. Grundsätzlich wird die Größe des Schiffes erhalten , wie es mit dem Namen beschrieben wird. Das bedeutet, dass diese drei hier drei Listen zurückgeben werden , um zwei zu stürzen und so weiter. Jetzt sind diese wahrscheinlich selbsterklärend, aber die nächsten paar sind es vielleicht nicht. Und wieder ermutige ich Sie dringend, sich die verschiedenen Kommentare anzusehen, die ich hinzugefügt habe. Dies ist beispielsweise der GET-Index gibt eine ganze Zahl zurück und es dauert ein Viertel darin. Und wenn Sie sich richtig erinnern, befindet sich ein Index, an dem sich ein bestimmtes Element in einem Array befindet oder eine Liste bei 0 beginnt. Hier lautet die Beschreibung, dies gibt den Index in der Koordinatenliste zurück , in der das Perineumkabel gefunden wurde. Dies ist die Perimeterkoordinate und wir beziehen uns auf die Koordinatenliste hier oben. jetzt weiter nach unten scrollen, sehen wir, dass dies den Index seines gegenwärtigen oder Ihrer Rückgabe negativ zurückgibt. Wenn es nicht anwesend ist. Wenn Sie den Index nicht finden können, möchten Sie einen negativen zurückgeben. Als Nächstes werden wir sehen, ob das bereits verwendet wird. Hier wird überprüft, ob sich eine Koordinate innerhalb des Schiffes befindet. Hier ist ein Tipp. Verwenden Sie die GET-Indexmethode. Im Wesentlichen sollte der get-Index negativ zurückgeben, wenn er nicht verwendet wird , oder er sollte etwas anderes zurückgeben, wenn es sich nicht um die USA handelt. Und dann haben wir hier eine kompliziertere Funktion , nämlich ob eine bestimmte Koordinate ein Treffer wäre. Jetzt kommt die Komplexität dieser Funktion von einem, das ein boolesches Array zurückgibt. Dieses Array wird zwei verschiedene Werte enthalten. Der erste wird ein boolescher Wert sein, wahr oder falsch, wenn es ein Treffer war. In der zweiten wird es ein boolescher Wert sein, wahr oder falsch, wenn es das Schiff versenkt hat. Wenn ich zum Beispiel etwas errate und es ein Fehlschlag ist, werden wir falsch und falsch haben. Hier sagen wir, dass mes gleich falsch und falsch ist. Wenn es ein Treffer ist, aber das Schiff nicht versenkt, wird es wahr und falsch sein. Wenn es das Schiff nicht versenkt, wird es wahr und wahr sein. Dies sind die möglichen Rückgabewerte , wenn es um die Funktionalität geht. Dies hat alle Funktionen , die ein Schiff hat. Also mach weiter und pausiere dieses Video und versuche so viel wie möglich hinzuzufügen, versuche so weit wie möglich zu kommen. Und sobald Sie alles erledigt haben oder Ihr Bestes versucht haben, brauchen Sie wirklich nur zusätzliche Hilfe. Dann mach weiter und setze den Rest dieses Videos fort und ich werde meine Lösung durchgehen, wie ich das Schiff gemacht habe. Okay, also beginnend oben, haben wir hier einen GET-Index. Dies ist die erste versteckte Methode , die ich noch nicht durchgegangen bin. Lassen Sie uns also überprüfen, was das zu tun versucht. Hier. Wir haben Koordinatenargumente und versuchen zu sehen wo genau dies in unserem Koordinatenarray liegt, das lokal in seiner Klasse oben rechts gespeichert ist. Im Wesentlichen wird der Index zurückgegeben oder es wird einen negativen zurückgeben, wenn er ihn nicht finden kann. Wir beginnen also damit, dass wir jede einzelne Koordinate in unserer Liste durchlaufen . Wir sagen, dass int a gleich 0 ist, während a kleiner als die Coronet-Listengröße ist, werden wir einen ziemlich Standard für die Schleife erhöhen. Hier drin. Wir kriegen unser Zielquartal darin ein. Und das ändert sich je nach jeder Iteration der for-Schleife. Während dann einfach nur überprüft wird, ob der x-Wert dem x-Zielwert entspricht und der Y-Wert einem Ziel-Y-Wert entspricht. Wenn beide zutreffen, bedeutet das, dass dies genau dieselbe Koordinate ist. Und wir wollten zum aktuellen Index zurückkehren im Grunde nur eine zurückgeben. Wenn diese Aussage niemals zutrifft, dann werden wir schließlich aus dieser gesamten Schleife ausbrechen. Und deshalb werden wir anfangen, einfach negative zurückzugeben, was bedeutet, dass wir es nicht finden konnten. Dies wäre die GET-Indexfunktion. Gehen wir nun zur End-Use-Funktion über, die im Grunde nur die Indexmethode verwendet. Hier. Wir erstellen einen booleschen Aufruf wird verwendet und die Zuweisung gleich Indexübergabe und Koordinaten sind nicht gleich negativer. Ein so negativer bedeutet , dass nichts gefunden wurde. Und wenn etwas gefunden wurde, bedeutet das, dass etwas zwischen 0 und der Gesamtzahl der Koordinaten zurückgegeben würde. Wenn der Index also nicht negativ ist, bedeutet das, dass es sich um Nachrichten handelt. Jetzt können wir diesen Code tatsächlich vereinfachen. Ich habe es in zwei getrennten Zeilen geschrieben nur damit ich dies minimieren kann, da Single-Line-Funktionen nicht so minimiert werden können , wie wir es hier sehen. Wenn ich diese Funktion minimiere, sehen wir den Code immer noch. also zurückgehe, um diesen Code zu vereinfachen, kann ich einfach zurückkehren, Index erhalten, übergeben und koordinieren ist nicht gleich dem negativen. Dies wird true oder false zurückgeben, je nachdem ob diese Koordinate nicht für das Schiff verwendet wird. Dann haben wir hier die kompliziertere Funktion , die getroffen wurde. Und wieder gibt dies ein boolesches Array zurück, bei dem der erste boolesche Wert sein wird , wenn es ein Treffer war, und ein zweiter boolescher Wert wird sein, wenn er dieses Schiff denkt. Wenn ich das hier erweitere, erhalten wir zuerst den Index von unserer GET-Indexmethode. Und wenn der Index negativ ist, bedeutet das, dass dies ein Fehler war. Daher sollte ein Fehler ein boolesches Array mit false und false zurückgeben , wie wir genau hier sehen. Hier sehen wir diesen negativen, der genau das Negative sein wird , das zurückgegeben wird, wenn wir nichts finden können. Nun, danach, sobald wir hier zu diesem Code gekommen sind, wissen wir, dass wir tatsächlich etwas getroffen haben. Was er sagt, sehen Sie, ob wir dieses Schiff tatsächlich versenkt haben oder ob es nur ein normaler Treffer ist. Zuerst werden wir die Koordinate bei diesem bestimmten Index abrufen und ihren hippen Wert auf „true“ setzen. Wenn Sie sich an die Koordinatenklasse erinnern haben wir diesen booleschen Treffer. Und so weisen wir das jetzt wahr zu, weil wir diesen Teil des Schiffes tatsächlich getroffen haben. Wenn ich jetzt zurück ins Schiff gehe, erstelle ich einen Booleschen namens sank und setze diesen Wert auf true. Im Wesentlichen bedeutet , dass wir standardmäßig davon ausgehen werden, dass das Schiff gesunken ist. Und dann werden wir hier jede einzelne Koordinate des Schiffes durchlaufen . Wenn es nicht getroffen wird, dann ist das, was zu sagen ist, das sank gleich falsch und wir werden aus dieser Schleife ausbrechen. Im Wesentlichen funktioniert dieser ganze Code genau hier. Es ist ein Sitz, wenn das Schiff noch Koordinaten hat , die nicht getroffen werden. Wenn jede einzelne Koordinate des Schiffes getroffen wird, sinkt das Schiff dann. Dann können wir endlich unser boolesches Array zurückgeben. An dieser Stelle des Codes genau hier wissen wir, dass es einen tatsächlichen Treffer gab. Der erste Boolesche Wert ist immer wahr, aber der zweite boolesche Wert wird wahr oder falsch sein je nachdem er tatsächlich den Besitz versenkt hat, abhängig von seiner Logik genau hier. Dies wird die Dead-Hit-Funktion sein. Und dies ist wahrscheinlich die komplizierteste Funktion in der Schiffsklasse. Aber hoffentlich war all diese Erklärung für Sie sinnvoll und hoffentlich haben Sie den größten Teil dieser Funktionen runtergebracht. Jetzt gibt es bei der Programmierung natürlich viele, viele verschiedene Möglichkeiten, denselben Codetyp zu schreiben . Wenn Ihr Code also etwas Ähnliches erreicht wie meiner , und wenn er funktioniert, dann machen Sie sich keine Sorgen, wenn er etwas anders aussieht, ist das vollkommen in Ordnung, solange er immer noch dasselbe tut. 49. Spieler: Werfen wir einen Blick auf die Spielerklasse. Dies wird im Grunde nur alle Schiffe für einen bestimmten Spieler abwickeln . Jetzt haben wir in diesem Projekt nur einen Spieler. Im Grunde genommen kümmern wir uns nur um alle Schiffe. Also zeige ich dir ein paar grundlegende Einrichtungscodes. Aber wenn es um die eigentliche Funktionalität geht wie alles funktioniert, ermutige ich Sie dringend, meine Beispiele hier zu verwenden meine Beispiele hier und die Funktionalität selbst zu schreiben und dann zu kommen zurück zum Video. Man hat dir meine eigenen Beispiele gezeigt. Zu Beginn haben wir hier eine Liste von Schiffen, die Schiffsklasse, das haben wir im vorherigen Video gemacht. Wir haben hier auch einen Konstruktor, der die Platinengröße erhalten wird. Wenn wir zu meiner Hauptdatei gehen, sehen wir hier, dass wir einen neuen Spieler erstellen und die Boardgröße übergeben. Jetzt können wir auch alle Schiffe zurückgeben, nur ein sehr einfacher Getter. Jetzt, wenn wir hier vorankommen, haben wir eine Zufallsfunktion. Ziel ist es, je nach Boardgröße und Bootsgröße zufällig einen Startpunkt für ein Schiff zuzuweisen. Es sollte auch sicherstellen , dass das Boot tatsächlich auf das Board passt. Zum Beispiel haben wir hier dieses fünf lange Boot. Und wenn dieser Ausgangspunkt war, sagen wir J4, wo hier tatsächlich endet. Dann gibt es vier Charaktere, da wird es außerhalb der Tafel sein. können wir nicht haben. Also wollen wir sicherstellen, dass wir das Boot tatsächlich auf dem Akron-Board können . Jetzt gibt dies eine Ganzzahl zurück und die Return-Anweisung gibt die Ausgangsposition in der das Schiff auf das Board passt. Wenn diese Ausgangsposition zum Beispiel genau hier wäre, wären dies sechs, weil G sechs entspricht Ich zeige hier nur Buchstaben an, so dass es leicht ist zu unterscheiden, ob seine Zeilen oder Spalten sind. Aber sagen wir, es fängt genau hier an. Das wären sechs und dies würde nicht auf das gesamte Board passen , da es sich um ein fünflanges Schiff handelt. Wir haben insgesamt zehn Spalten und zehn Zeilen. Sechs plus fünf sind gleich 11. Also würden wir um eins losgehen. Stattdessen wird es fünf zurückgeben. Im Grunde bedeutet, dass wir uns auf diese Änderung einstellen werden, um sicherzustellen, dass das Board auf das Boot passt. Jetzt gehen wir vorwärts, Hier haben wir eine Gitarrenkoordinate mit einer Startkoordinate und einer Endkoordinate. Dies wird eine Liste von Koordinaten von einem Startendpunkt aus erstellen . Ein Beispiel ist der Beginn von Nullen 0 und ein Ende von 03. Aber lasst uns 00010 zurückkehren, um das Ziel dies darin besteht, hier eine Startkoordinate und eine Endkoordinate zu übergeben . Und dann werden alle Koordinaten zurückgegeben benötigt werden, um das gesamte Schiff zu füllen. wir hier vorankommen, sind wir im Einsatz oder werden im Grunde genommen eine Koordinate überprüfen und sehen, ob Einsatz oder werden im Grunde genommen eine Koordinate überprüfen und sehen, ob Schiffe das tatsächlich verwenden werden. Dann haben wir hier Schiffe platziert, was eigentlich die komplizierteste Funktion innerhalb dieser Klasse ist. Wir werden das Schiff leiten, es bekommt Größen. Wenn ich hier rübergehe, wird dies ein neues Integer-Array zurückgeben. In meinem Fall habe ich fünf verschiedene Schiffsgrößen. Ich habe eine fünf lange, äh, lange. Zwei Instanzen eines dreistufigen Schiffes und schließlich A2 langes Schiff mit ihnen Spieler. Hier werde ich Schiffspunkte ausführen, um alle Schiffe zu erhalten und zufällig zuzuweisen, ob jedes Schiff vertikal sein soll oder nicht. Wenn ich hier in mein Board gehe, sehen wir, dass fünf horizontal sind. Aber diese drei hier sind vertikal. Aber diese drei hier sind waagerecht. Twitter weist jedem einzelnen Schiff, das wir erstellen werden, zufällig einen vertikalen Booleschen Wert zu. Wir weisen auch nach dem Zufallsprinzip eine Startkoordinate und fügen die Schiffsgröße hinzu, um die Endkoordinate zu erhalten. Zum Beispiel wird diese RNA-Koordinate fünf für sein, aber wir werden die Schiffsgröße hinzufügen um die Endkoordinate genau hier zu erhalten. Das werden 94. Sie daran, dass a im Grunde 0 ist, weshalb J neun ist. Als nächstes heißt es eine Mischung , dass alle Koordinaten es dem Schiff ermöglichen , auf das Brett zu passen und nicht von anderen Schiffen benutzt werden. können Sie frühere Methoden verwenden, die wir in dieser Klasse erstellt haben . Im Grunde stellen Sie sicher, dass dies eine einzigartige Koordinate ist , die tatsächlich funktioniert. Fügen Sie dann schließlich das resultierende Schiff zur Schiffsliste hinzu, die hier oben deklariert ist. Jetzt ist hier ein Tipp. Die X- und Y-Werte der Startkoordinaten sollten randomisiert werden. So wird zum Beispiel genau hier, diese 54-Koordinate, diese zufällig generiert. Aber die Endkoordinaten x- und y-Werte sind einfach die Schiffsgröße, einfach die Schiffsgröße die der Startkoordinate hinzugefügt wird. Zum Beispiel haben wir hier ein fünflanges Schiff. Also werden wir das nehmen und fünf hinzufügen. Offensichtlich wird das Starting eins als eins und nicht als 0 zählen. Also werden wir im Grunde nur mit einer Fünf-Lordschaft enden. Außerdem solltest du nur das x oder das y hinzufügen , je nachdem, ob es vertikal ist oder nicht. Nie beides. Im Grunde genommen hat dies ein horizontales Schiff, was bedeutet, dass wir nur das y hinzufügen. Wir sehen, dass das x vier ist. Die gesamte Zeit für dieses gesamte Schiff sind nur die Y-Werte, die sich ändern. Zum Beispiel, f bis j. Wenn wir beide hinzufügen würden, hätten wir hier ein Fünf-mal-Fünf-Gitter mit einer riesigen Plattform, aber wir wollen eine tatsächliche Darstellung eines Schiffes. Dies wird etwas komplizierter sein, insbesondere auf einem Ort, an dem Schiffe funktionieren als die letzte Klasse. Aber versuche so viele dieser Dinge wie möglich zu erledigen. Und wenn Sie das Gefühl haben, so weit wie möglich gegangen zu sein, oder sobald Sie alles abgeschlossen haben, spielen Sie den Rest dieses Videos ab, damit Sie sich ansehen können, was ich für die Lösungen getan habe. Beginnen wir ganz oben für die Zufallsfunktion. Wenn ich das hier erweitere, erstelle ich zunächst eine zufällige Ganzzahl. Mit einem Maximalwert der Platinengröße. In diesem Fall zwischen 09 , da die Platinengröße zehn ist. Dann sage ich, während die Zufallszahl plus die Bootsgröße größer als die Boardgröße ist, subtrahiere ich dann die Zufallszahl. Werfen wir einen Blick auf dieses fünf lange Schiff hier. Wenn unsere Zufallszahl genau hier angefangen hat, was sechs ist, wissen wir jetzt, dass sechs plus fünf, weil Zufälligkeit sechs Boote in diesem Fall fünf heisst, das ist größer als die Plattengröße von zehn. Wir werden es weiter subtrahieren, bis es tatsächlich passt. In diesem Fall subtrahieren wir nur einmal und geben uns diese Position. Und dann werden wir die neue Ausgangsposition zurückgeben. Dies ist eine Lösung, um nach dem Zufallsprinzip einen Startpunkt auszuwählen und sicherzustellen , dass der Ausgangspunkt tatsächlich funktioniert , wenn es um die Bootsgröße und die Platinengröße geht. Als nächstes haben wir alle Koordinaten bekommen. Zu Beginn erstellen wir eine Liste von Koordinaten, und wir werden diese Liste auch am Ende zurückgeben. Dann müssen wir diese Koordinatenliste tatsächlich mutieren oder ändern , um alle gewünschten Werte zu haben. Jetzt werden wir das x oder das y hinzufügen, je nachdem, ob es vertikal oder horizontal ist. Hier überprüfe ich zuerst, ob die x-Werte zwischen dem Start- und der Y-Koordinate identisch sind . Wenn wir uns zum Beispiel das Boot ansehen, genau hier, sind die X-Werte immer gleich. Sie sind immer vier. Daher hat dies ein horizontales Boot. Damit muss ich Y-Werte kontinuierlich erhöhen . Jetzt bekomme ich hier den minimalen und den maximalen Y-Wert. Und wir sehen genau hier, dass ich nur Git benutze. Warum? Denn auch hier sind die X-Werte immer gleich. Ich werde dann alle Y-Werte durchlaufen. Ich füge der Koordinatenliste, die wir hier erstellt haben , eine neue Koordinate hinzu. Ich werde immer denselben exakten x-Wert verwenden, aber ich werde den Y-Wert von einer for-Schleife übergeben. Auf diese Weise ist der Ausgang immer wie er für dieses Boot sein sollte, aber der Y-Wert ändert sich die Stimme. In dieser else-Anweisung ist dies genau das gleiche Konzept, aber anstelle des Y-Wertes ist der x-Wert. Nachdem diese entweder ausgeführt wurden, geben Sie dann die Koordinatenliste zurück. Zukunft haben wir jetzt die einfachste Funktion hier drin, die durchläuft eine Koordinate durchläuft und sehen wird, ob eines unserer Schiffe es benutzen wird. Im Grunde schlaufen wir also durch alle Schiffe. Wenn es unbenutzt ist, kehren wir wieder wahr zurück. Sonst werden wir falsch zurückgeben. Jetzt, wenn wir hier vorankommen , haben wir die komplizierteste Funktion, nämlich alle Schiffe zu platzieren. Wir werden damit beginnen, dass wir alle möglichen Schiffe durchlaufen , die wir wollen. Dann weisen wir nach dem Zufallsprinzip einen booleschen Wert zu, ob dieser vertikal sein soll oder nicht. Wir erstellen dann eine Liste von Koordinaten, aber wir werden ihr noch nichts zuweisen. Jetzt sehen Sie vielleicht ein Keyword oder hören, dass Sie nicht allzu vertraut sind. Was ist zum Beispiel dieser Hauptdarm oder vor dieser While-Schleife? Und was machen wir genau hier? Grundsätzlich weil wir unsere Hauptschleife haben und eine Schleife darin haben. Bei dieser for-Schleife muss ich sicherstellen, dass ich jede Schleife richtig beschrifte. Wenn das beispielsweise stimmt, möchte ich unsere While-Schleife fortsetzen . Aber weil ich in der for-Schleife bin, wird es davon ausgehen, dass ich die for-Schleife selbst fortsetze. Trotzdem muss ich der While-Schleife ein Label hinzufügen. Und dann kann ich mit dieser spezifischen While-Schleife fortfahren und nicht in der for-Schleife. Werfen wir einen Blick darauf, was die for-Schleife macht. Zuallererst ist dies eine Endlosschleife, was im Grunde bedeutet, dass wir diesen ganzen Code kontinuierlich ausführen werden, bis wir schließlich diese Break-Anweisung hier erreichen. Wenn ich anfange, bekomme ich diese Start-X- und Y-Werte. Ich verwende diese dann, um Startkoordinaten zu erstellen. Dann bekomme ich die Endkoordinaten, aber ich werde diese nicht randomisieren. Stattdessen werde ich sagen, dass Index und Ende y dem Start x oder y plus der Bootsgröße entsprechen. Wenn es sich um vertikale Boote handelt, nehmen wir das Start-X, und das ist alles. Aber wenn es kein vertikales Boot ist, nehmen wir das Start-X und fügen auf beiden Seiten hinzu. Dann ist es das Gegenteil für das Ende. Warum? Wenn es ein vertikales Boot ist, nehmen wir das Start-Y und fügen auf beiden Seiten hinzu. Andernfalls verwenden wir nur ein Start-Y. Und dann verwenden wir diese beiden Werte um eine Endkoordinate zu erstellen. Dann weisen wir dieser Koordinatenliste genau hier einen neuen Wert zu. Dieser Wert wird das Ergebnis der Gitarrenkoordinaten von Anfang und Ende sein. Dies nimmt die Start - und Endkoordinaten und alles dazwischen und fügt sie einer Liste hinzu. Und das ist die Funktion, die wir zuvor gemacht haben. Jetzt werde ich danach alle neuen Koordinaten durchlaufen , die wir gerade bekommen haben, und ich werde sicherstellen , dass sie nicht benutzt werden. Wenn sie nicht benutzt werden, springen wir zurück zum Anfang der While-Schleife und versuchen es im Grunde immer wieder und immer wieder, bis Sie eine Reihe von Booten finden, die vorher nicht benutzt wurden. Nun, wenn alle Boote wir exklusiv gefunden haben, was bedeutet, dass sie sich nicht überlappen. In dieser for-Schleife wird sich einfach durch sich selbst laufen und weiter in diese Break-Anweisung gehen. Jetzt wird diese Break-Anweisung aus dieser gesamten While-Schleife ausbrechen . Und dann erstellen wir hier ein neues Schiff, das in den gerade befindlichen Koordinaten übergeht und dann das gesamte Schiff hier in die Schiffsliste weitergeben . Dies ist also definitiv eine der komplizierteren Funktionen. Ich glaube nicht, dass wir diese Etiketten hier überhaupt abgedeckt haben, aber es gibt definitiv andere Lösungen , die diese Etiketten nicht erfordern , die er möglicherweise finden konnte. Aber wenn Sie nicht in der Lage waren, den Platz Schiffe oder irgendetwas anderes in der Spielerklasse zu bekommen . Keine Sorge, die Funktion von Schiffen war komplizierter als die meisten Dinge, die wir bisher behandelt haben. 50. Fertigstellung des Spiels: Dies wird das letzte Video zum Schlachtschiff-Projekt sein. In diesem Video werden wir unsere Board-Klasse und unseren Schlachtschiffkurs erstellen . Beginnen wir also mit der Support-Klasse, die wir innerhalb unserer Hauptfunktion ein Neuengland-Sub erstellen . Und hier geben wir sowohl die Boardgröße als auch den Spieler an, den wir bereits erstellt haben. Jetzt in der Board-Klasse werde ich einige grundlegende Funktionen durchgehen und dann werde ich hier die Konzepte hinter diesen verschiedenen Funktionen durchgehen . So kannst du weitermachen und versuchen, sie selbst herzustellen. Und sobald Sie stecken bleiben oder die Funktionalität abgeschlossen haben, können Sie sehen, wie meine Lösungen aussehen. Ab sofort haben wir eine Ganzzahl für die Boardgröße. Dies kommt einfach vom eigentlichen Parameter. Dann haben wir auch ein mehrdimensionales Zeichen-Array. Dies wird der eigentliche Vorstand selbst sein. Dies ist beispielsweise Index 0, Index eins, Index 10 usw. Dann haben wir eine Buchstabenliste, die alle verschiedenen Buchstaben für die Spaltenkennungen enthält. Also im Grunde alle Buchstaben, die wir hier oben sehen. Auf diese Weise haben wir keine 00 als Koordinate oder 10 als Koordinate, bei unklar ist, welche Spalten sind und welche die Zeilen sind, die Buchstaben verwenden, macht dies sehr deutlich. Welches sind die Spalten und Zeilen. Dann haben wir hier Zugang zu einem Spieler , den wir auch gerade von den Perimetern bekommen. Und deshalb weisen wir es einfach hier zu. Wir erstellen zuerst ein Spielbrett, das wir uns hier gleich ansehen werden. Und dann platzieren wir die Schiffe, um das Spielbrett zu erstellen. Dies wird jede Koordinate mit dem Board mit einem bestimmten Leerzeichen füllen . Zum Beispiel sind Board-Indexnullen, 0 gleich Platz. Jetzt sollten Sie natürlich nicht jede davon manuell zuweisen. Dies sollte durch eine for-Schleife geschehen. Jetzt in Zukunft haben wir hier Schiffe platziert. Dies wird durch Spieler Dot Get Ships durchlaufen. Und um das ganz schnell zu überprüfen, bekommt unter Schiffe genau hier. Dies gibt einfach eine Liste aller Schiffe zurück , die an diesen Spieler gebunden sind. Also holen wir alle Schiffe mit einem Spieler und dann bekommen wir die Schiffskoordinaten, um die X- und Y-Werte zu erhalten. Wenn wir in die Schiffsklasse gehen, sehen wir hier Abrufkoordinaten. Und das gibt einfach eine Liste aller Koordinaten zurück , die mit diesem Schiff verbunden sind. Wir weisen dann die Schiffsgröße als Charakter in Board X und Board zu. Warum? Zum Beispiel wird hier dieses fünf lange Zeichen, jeder einzelne Board-Index, zum Beispiel dieser, dieses und so weiter, fünf genannt , weil dies das fünf lange Schiff hier ist. Dies ist das vier lange Schiff. Hier haben wir das drei lange Schiff. Die Charaktere werden also sein , wie groß das Boot ist. Auf diese Weise ist klar, wo das Boot anfängt und anhält. Und hier ist ein Tipp. Eine Ganzzahl zählt als Zeichen, aber nicht so , wie Sie es möchten. Sie müssen die Größe des Schiffspunkts in eine Zeichenfolge mit dem Zeichenfolgenpunktwert von konvertieren und dann auf das erste Zeichen der Ergebnisse zugreifen. Der Grund dafür ist jedem einzelnen einzelnen Zeichen eine Zahl zugeordnet sein wird eine Zahl zugeordnet wenn es um seinen ascii-Wert geht, im Grunde nur eine Tabelle dessen sein wird jedes einzelne Zeichen auf Ihrer Tastatur steht in einem numerischen Wert. Sie können mit Google Ascii Value oder Ascii-Tabelle fortfahren , um ein besseres Verständnis dafür zu bekommen , wovon ich spreche. Aber damit müssen Sie sicherstellen, dass Sie die Schiffsgröße tatsächlich in die gewünschte reelle Zahl umwandeln , da sie standardmäßig nicht die reelle Zahl darstellt. Aber im Grunde bedeutet dies , dass die Größe des Versandpunkts eine Zahl zurückgibt , die Sie nicht erwarten. Und deshalb müssen Sie es zuerst in eine Zeichenfolge mit dem Zeichenfolgenpunktwert von konvertieren . Hier bekommen wir einen Buchstabenindex. Und Sie können diese Funktion hier tatsächlich sehen , weil sie nur eine Zeile lang ist. Aber lasst es uns ganz schnell durchgehen. Hier kehren wir für jeden Buchstaben im Buchstaben-Array in Amerika zurück. Also geben wir hier einen bestimmten Brief ein. Und das ist die Alphabetisierung könnte Index von sein, und wir werden den Index dieses Buchstabens aus dem Buchstaben-Array zurückgeben dieses Buchstabens aus dem Buchstaben-Array , das einen Betrug definieren würde. Zum Beispiel wäre a 0 und so weiter. Als nächstes werden wir versuchen, bestimmte Koordinaten zu treffen. Dies würde sehen, ob eine Koordinate ein Treffer wäre oder nicht. Wir werden den X- und Y-Wert der Koordinate übergeben Y-Wert der Koordinate und es wird eine Zeichenfolge zurückgeben. Wenn wir es verpasst haben, wird es genau hier Chaos zurückgeben. Wenn wir treffen, wird es gleich hier wieder getroffen. Wenn es ein Treffer ist, würde das ein Schiff versenken, es würde stattdessen zurückkehren, du hast sein Schlachtschiff versenkt. Jetzt haben wir endlich zwei Strings. Immer wenn wir ein Objekt auf die Konsole drucken, wird die IF-Funktion aufgerufen. Wir können diese Methode also überschreiben, um sie zu schaffen. Wenn wir also das Board auf die Konsole drucken , drucken wir genau das, was wir wollen, was die Vollpension sein wird, wie wir genau hier sehen. Dies wird gedruckt, weil unsere Kumpel-Schiffsklasse, wann immer wir die Spielschleife ausführen, das eigentliche Brett ausdrucken werden, aber das werden wir in einem Moment hier behandeln. Dies wird alle Boardkoordinaten durchlaufen und die richtigen Zeichen ausgeben , wo sie sein sollten. Und ein Tipp hier ist, zuerst die Spaltenetiketten zu drucken , also die Buchstaben, wie Sie hier sehen können. Drucken Sie dann jede Zeile nacheinander aus, beginnend mit der Zeilennummer und dann mit jeder Koordinate für diese Zeile, wir drucken einfach die Zeilennummer aus. Und dann werden wir durchgehen und jede einzelne Koordinaten hinzufügen . Denken Sie daran, dass diese Zeilen genau hier, auch als Pipes bezeichnet, auch als Pipes bezeichnet indem Sie die Umschalttaste gedrückt halten und den umgekehrten Schrägstrich drücken, der sich direkt über der Eingabetaste befindet. Dann habe ich einen Platz. Dann habe ich den eigentlichen Inhalt für die einzelne Koordinate, dann ein weiteres Leerzeichen gefolgt von mehr Zeilen. Diese Funktion hier wird also eine Zeichenfolge zurückgeben , die dieses gesamte Board genau hier repräsentiert. Dies wird die gesamte Board-Klasse sein. Versuchen Sie , so viele Fortschritte wie möglich zu machen , und kommen Sie dann zurück und sehen Sie sich meine Lösungen an. Und danach gehen wir auf die Konzepte hinter der Schlachtschiffklasse ein, die nur zwei Hauptfunktionen hat. Aber gehen Sie vorerst über die Board-Funktionalität und versuchen Sie so viel wie möglich zu machen. Okay, hoffentlich konnten Sie die Funktionalität für die Board-Klasse hinzufügen , oder Sie konnten so weit wie möglich kommen. Lassen Sie uns nun meine Lösung durchgehen wie ich diese Funktionalitäten implementiert habe. Also hier haben wir ein Gameboard erstellt. Wenn ich das erweitere, werden wir jedes einzelne Array des Boards durchlaufen . Jede einzelne Zeile wird also ein verschachteltes Array innerhalb des mehrdimensionalen Arrays sein. Ich fülle dann diese ganze Reihe mit einem Leerzeichen. Und wenn Sie eine verschachtelte Schleife erstellt haben, um dies zu tun, ist das auch vollkommen in Ordnung. Wie ich bereits erwähnt habe, gibt es mehrere verschiedene Möglichkeiten jedes Problem bei der Softwareentwicklung zu lösen. Wenn du diesen Code geschrieben hast, ist das in Ordnung. Wenn Sie ähnlichen Code geschrieben haben, funktioniert das immer noch. Das ist auch in Ordnung. Als nächstes schauen wir uns Platzschiffe an. Wenn ich das erweitere, durchlaufen wir jedes einzelne Schiff , das der Spieler hat. Dann werden wir jede Koordinate dieses Schiffes durchlaufen . Wir werden den X- und Y-Wert von diesen Koordinaten abrufen. Und wir können dann den Board-Index XX und XY gleich diesem Ausdruck genau hier zuweisen . Dies geht auf das zurück, was ich bei der Verwendung der Schiffsgröße erwähnt habe , die in den Zeichenfolgenpunktwert von Staub übergeben wird, da wir nach einem bestimmten Zeichen suchen und jedes einzelne Zeichen seinen eigenen ganzzahligen Wert hat. Da es sich um ein Zeichen-Array handelt, können wir ihm nicht einfach eine Ganzzahl zuweisen, da jedes einzelne Zeichen auf Ihrer Tastatur durch eine bestimmte Ganzzahl dargestellt wird. Und es wird davon ausgehen, dass dies tatsächlich der Fall sein wird. Zum Beispiel das Zeichen 0, das durch numerisch 48 dargestellt wird, das Zeichen eins, das durch numerisch 49 dargestellt wird, usw. Was wir tun wollen, ist sicherzustellen, dass wir tatsächlich die richtige Zeichenfolge verwenden. Wir nehmen die Schiffsgröße und geben sie in eine Schnur weiter. Aber das gibt uns natürlich eine String-Variable , wenn wir eine Zeichenvariable wünschen. Wir können also einfach auf das Zeichen bei Index 0 zugreifen, dem es nur einen Index gibt, da dieser nur einen einstelligen Wert hat. Im Grunde wird dies jedoch die Schiffsgröße von fünf in den Charakter fünf umwandeln und diese dann der richtigen Boardposition genau hier zuweisen . Dies wird also durch alle Schiffe gehen und im Grunde nur die Fünf's dort platzieren, wo sich das fünf lange Schiff befindet. Die Dreier sind, das drei lange Schiff ist und so weiter. Jetzt, um hier voranzukommen, haben wir einen Buchstabenindex , der früher in einer einzigen Codezeile von FSS abgedeckt wurde. wieder vorankommen, werden wir versuchen, bestimmte Koordinaten zu treffen. Also erstellen wir zuerst eine Koordinate mit dem X- und Y-Wert. Und dann werden wir jedes einzelne Schiff für genau diesen Spieler durchlaufen . Wenn Sie sich von der Schiffsklasse erinnern, haben wir eine getroffene Funktion, indem wir dazu übergehen. Hier wird ein boolesches Array zurückgegeben , bei dem der erste Wert sein wird, wenn es ein Treffer war , und der zweite Wert wird sein, wenn es das Schiff versenkt, false. Falsch bedeutet, dass es ein Durcheinander war. Wahr falsch bedeutet, dass es ein Treffer war, aber es hat dieses Schiff nicht versenkt. Und es stimmt, es bedeutet, dass es getroffen wurde und das Schiff versenkt hat. Wenn ich also zurück zu meinem Board gehe, bekomme ich Zugriff auf alle Trefferdaten. Und dann kann ich zwei separate Booleans erstellen. Oder hat getroffen ist Index 0 und Sink wird index1 sein, wobei Zink ging, um zu sehen, ob er wahr ist. Wenn ja, gehen wir zu X diese spezifische Koordinate heraus. Wenn ich das Programm beispielsweise hier ausführe, kann ich B1 auswählen, um dies genau hier darzustellen. Ich kann B1 eingeben und es ändert diese drei in ein x , weil das ein tatsächlicher Treffer war. Und es gibt auch die Zeichenfolge zurück, die genau hier getroffen wurde. Um das zu tun, werden wir hier zurückkehren, wenn eine Senke mit einem ternären Operator verwendet wird, wir werden uns zurückgeben, dass sie ein Schlachtschiff sind, aber sonst werden wir den Treffer zurückgeben. Und genau hier kommt die Stärke , die wir hier in unserer Konsole sehen. Nun, nach dieser for-Schleife, wenn nichts tatsächlich übereinstimmt, bedeutet das, dass es verpasst hat. Also werden wir einfach den String Miss zurückgeben. wir hier vorankommen, haben wir eine ToString-Funktion. Dies wird im Grunde nur das gesamte Board auf den Bildschirm drucken . Wir werden eine StringBuilder-Klasse verwenden. Und es ist nichts falsch daran, eine normale Zeichenfolge zu verwenden und sie einfach hinzuzufügen. Sie werden im Grunde dasselbe tun. Aber ich verwende einen StringBuilder , der es mir im Grunde erlaubt, der Zeichenfolge sauberer Weise mehr Dinge hinzuzufügen . Aber hinter den Kulissen wird es im Grunde nur zu einer Zeichenfolge hinzugefügt. Hier fange ich mit diesen zusätzlichen Leerzeichen an. Denn wenn ich zu meinem Programm gehe, sehen wir das genau hier bei uns hervorgehobenen Text. Dies sind die Startbereiche, um sicherzustellen, dass die Spaltenbeschriftungen mit jeder einzelnen Spalte ausgerichtet sind . Dann bin ich etwas, das als Trennzeichen bekannt ist, das man sich irgendwie als Trennzeichen vorstellen kann. Und dies wird ein Raum sein, gefolgt von einer Pfeife, gefolgt von einem anderen Leerzeichen. Und das sehen wir genau hier zwischen jedem einzelnen Charakter für die exakte Koordinate. Dann füge ich einen Kommentar hinzu. Ich werde sagen, dass dies die Spalten hinzufügen wird . Also werde ich die Plattengröße durchlaufen denn Boards sind immer ein perfektes Quadrat. Ich kann die Platinengröße zwei verschiedene Male durchlaufen. Eine zum Hinzufügen der Spalten, eine zum Hinzufügen der Zeilen und des einzelnen Inhalts. Hier füge ich die Buchstaben dot get a an, die bei 0 beginnen und die gesamte Platinengröße durchlaufen, weshalb wir das genau hier sehen. Ich kann jetzt das ganze Ding durchlaufen. Als Nächstes hängen wir das Trennzeichen an die tatsächliche Zeichenfolge an fügen im Grunde das Leerzeichen, die Pipe und den zusätzlichen Speicherplatz hinzu. Aber wir wollen dies nicht tun, wenn es um das allerletzte Element hier geht , wie wir sehen, hat j am Ende keine zusätzliche Zeile. Um dies zu überprüfen, können wir sagen, ob a kleiner als die Randgröße minus eins ist, wenn ich dies ändern würde, und ich werde dies noch einmal ausführen, werden wir eine zusätzliche Zeile am Rand von j sehen. Was ich nicht wirklich mag, aber das liegt an dir, wenn wir das haben wollen. Also werde ich das wieder in das ändern, was es war. Jetzt geht es voran. Nachdem wir alle Spalten hinzugefügt haben, fügen wir eine neue Zeile mit dem vier Schrägstrich n Escape-Zeichen hinzu. Von hier aus. Es wird dann gleich hier unten zur nächsten Zeile gehen. Jetzt fügen wir hier jede einzelne Zeile und den tatsächlichen Inhalt für das Board hinzu. Im Wesentlichen werden wir eine verschachtelte for-Schleife haben , die sie im Grunde zweimal durchläuft , einen für die x-Werte und einen für die Y-Werte. Innerhalb dieser verschachtelten for-Schleife. Wir werden dann a und B haben, die im Grunde x und Y darstellen können. Dinge einfacher zu machen, klicke ich in die Nähe von a, und ich drücke die Umschalttaste und F6 und benenne dies in x um. Dann mache ich das Gleiche wie Shift und F6 und ich kann das in y ändern. Jetzt macht uns das klarer, wenn wir auf die Board-Werte zugreifen, die im Grunde nur das gesamte x durchschleifen und y Koordinaten für die möglichen Werte. Eine Sache, die ich tun möchte, ist, wenn y 0 ist, das bedeutet, dass wir gleich hier am Anfang sind. Und deshalb möchten wir die Zeilennummer hinzufügen , zum Beispiel 012 und so weiter. Also werden wir das genau hier hinzufügen , und dann werden wir das Trennzeichen anhängen, das ist ein Leerzeichen , Rohrraum, den wir genau hier sehen. Jetzt werden wir danach jeden einzelnen Charakter hinzufügen . Wir werden das Board bei Index X und Index y hinzufügen. Hier ist 00, hier ist 01, ist 0, hier ist 10 und so weiter. Jetzt werden die meisten davon Räume sein, aber natürlich wurden sie, als die Schiffe erstellt wurden, bestimmte zufällige Zeichen platziert wo die Boote tatsächlich sein sollten. Danach hängen wir einfach das Trennzeichen so an, das Trennzeichen so nachdem wir diesen Bereich hier ausgedruckt haben, hätten wir ein anderes Leerzeichen mit einer Pipe und einem anderen Leerzeichen, um ein Leerzeichen zu erstellen macht es einfacher, alles zu lesen. Und danach fügen wir eine neue Zeile an. Dies geht zu dem, was diese Zeile genau hier nimmt und sie in die nächste Zeile umschließt. Am Ende der Funktion geben wir dann Ergebnisse bei ToString zurück im Grunde nur die gerade erstellte Zeichenfolge zurück. Das ist also alles , wenn es um das eigentliche Board und das Ausdrucken von Dingen geht. Wenn das für dich kompliziert war, mach dir keine Sorgen, das ist völlig normal. Dieses Projekt soll einige einfache Aspekte und einige herausfordernde Aspekte haben . Wenn er in diesen Teilen stecken bleibt, mach dir keine Sorgen, das ist ganz normal. Aber jetzt, da wir unsere Board-Klasse erstellt haben, gehen wir zu unserem Schlachtschiffkurs und schauen wir uns die letzten beiden Funktionen an, die wir benötigen, damit alles funktioniert. Bisher haben wir einen Spieler erstellt und ein Board erstellt. Und jetzt laufen wir, führen Game-Loop-Passing in unserem Board aus. Es gibt zwei Funktionen , die dem Rest dieses Projekts ähnlich sind. Ich erkläre die Konzepte dahinter und dann kannst du sehen was du mit diesen Konzepten machen kannst, und dann überprüfe dann meine Lösung im Vergleich zu deiner. Hier ist eine Beschreibung wie diese Spielschleife funktionieren wird. Wir werden eine Endlosschleife erstellen , die sechs verschiedene Dinge erledigt. Die erste besteht darin, das aktuelle Spielbrett zu zeichnen dieses Board-Objekt im Grunde nur auf den Bildschirm auszudrucken , da wir hier unten eine ToString-Funktion erstellt haben . Immer wenn wir ein Portobjekt drucken, wird diese Funktion ausgeführt. Als Nächstes drucken wir die letzte Aktion. Das war also entweder ein Miss, ein Hit oder ein Versenkung ihres Schlachtschiffs. Wir werden tatsächlich diese Zeichenfolge erstellen wollen, die hier vor unserer Wild Loop erwähnt wird. Dann fragen wir den Benutzer nach Koordinaten oder er kann die Zeichenfolge quit eingeben. Wie wir hier unten sehen können, geben Sie die Koordinate ein. Hier ist ein Beispiel oder höre auf zu spielen. Wenn ich quit eintrete, wird das Programm tatsächlich geschlossen. Im Grunde treffen wir uns, kehren wir von dieser Funktion zurück. Beachten Sie, dass vier das ist, was ich gerade beschrieben habe. Beende das Spiel. Wenn quit eingegeben wurde, diese fünf. Jetzt ist hier der größte Teil der Logik. Schritt 5 besteht darin, zu prüfen, ob die Koordinate gültig ist. Im Grunde bedeutet, dass es einzelne Charaktere haben muss. Der erste ist ein gültiger Buchstabe , der hier Teil dieses Arrays ist. Und die zweite ist eine gültige Zahl zwischen 09, wenn von ihnen falsch ist oder es sich nicht um eine lange Zeichenfolge handelt, wird sie weiterhin nach den richtigen Koordinaten gefragt . Wenn ich das zum Beispiel ausführe und einfach nur a eintrete , wird es mich noch einmal fragen, wenn ich Z 0 eingebe, wird es mich noch einmal fragen, wenn ich eine 0 eingebe, wird es tatsächlich funktionieren. Es muss eine gültige Koordinate sein. Und das werden wir in dieser nächsten Funktion genau hier tun. Aber ich beschreibe, dass wir, sobald wir dort sind, zuerst prüfen werden, ob eine Koordinate gültig war. Wenn ja, werden wir versuchen, diese Koordinaten zu treffen. Dann speichern wir die letzte Aktionszeichenfolge, um sie auszudrucken , nachdem das Board der nächsten Loop-Iteration angezeigt wurde. Darum habe ich genau hier erwähnt. Grundsätzlich werden wir vor einer While-Schleife eine Zeichenfolge haben , aber wir werden den Wert bewerten, sobald wir tatsächlich festgestellt haben, ob es sich um eine gültige Koordinate handelt. Und nachdem wir versucht haben, diese Koordinate zu erreichen , werden wir auf diese Weise das aktuelle Spielbrett zeichnen , wenn wir wieder zum Anfang laufen. Wir werden die letzte Aktion drucken. Auf diese Weise vertuscht das Spielbrett es nicht und dann werden wir danach weitermachen. Wenn die Koordinate nicht gültig ist , springen wir zurück zu Schritt drei, der genau hier ist. Bitten Sie den Benutzer nach einer Koordinateneingabe oder zur Eingabe von quit. Genau hier werden wir tun, um immer wieder zu schleifen, wenn sie keine gültige Koordinate eingeben. Und hier kommen alle Teile des Spiels zusammen. Nun wird diese Funktion hier diese nächste Funktion verwenden , die eine gültige Koordinate ist. Wir werden eine Zeichenfolge übergeben, die die tatsächliche Benutzereingabe sein wird. Wenn ich hier b5 eingebe, wird die Zeichenfolge B5 in diesen Parameter genau hier eingegeben. Wir werden auch ein Board haben. Und wenn wir uns die genaue Beschreibung hier ansehen, wird dies prüfen, ob die Benutzereingabe gültig ist. Jetzt gibt es zwei Anforderungen. Der erste ist, dass es sich um eine zweistellige lange Zeichenfolge handeln muss. Der nächste ist, dass es ein Buchstabe sein muss. Es ist nur bis J, gefolgt von einer Zahl , die nur 0 bis neun ist. Jetzt wird hier die Tip-Eingabe empfangen und Strings. Wenn Sie also einen int-Wert des zweiten Zeichens erhalten, das 0 bis neun sein sollte, wirkt sich nicht wie 0 bis neun aus. Stattdessen wird es sich so verhalten, als wären es Ascii-Diagrammwerte, die ich zuvor in diesem Video erwähnt habe. Dies bedeutet, dass das Zeichen 0 der Ganzzahl 48 entspricht und das Zeichen eins der Ganzzahl 49 entspricht, und so weiter, bis das Zeichen neun der Ganzzahl 57 entspricht. Um zu überprüfen, ob die Zeichenfolgeneingabe des zweiten Zeichens 0 bis neun ist. Sie haben tatsächlich überprüft, ob ganzzahlige Wert größer oder gleich 48 und kleiner oder gleich 57 ist , was im Grunde bedeutet, dass 0 489 gleich 57 ist. Wir wollen also genau hier innerhalb dieser beiden Werte sein. Machen Sie weiter und schreiben Sie die Funktionalität dafür. Ich würde vorschlagen, mit der gültigen Koordinatenfunktion zu beginnen, da sie für die Spielschleife erforderlich ist . Und wenn Sie das erledigt haben, versuchen Sie, die Spielschleife anzugehen. Und danach können Sie Ihre Lösungen mit meinen vergleichen. Beginnen wir mit der gültigen Koordinate. Wenn ich das erweitere, werde ich zuerst sehen, ob die Länge der Zeichenfolge nicht gleich zwei ist. Wenn das stimmt, geben wir false zurück da dies eine zweistellige lange Zeichenfolge sein muss. Wenn ich zum Beispiel B5 eingebe, das drei Zeichen lang ist, wird es mich dann noch einmal fragen, ob ich einen Test betreten habe, der nicht zwei Zeichen lang ist. Es wird mich noch einmal fragen, und es wird ihn noch einmal fragen bis ich gültige Koordinaten wie J neun eingebe. Jetzt ist das offensichtlich ein Durcheinander, aber es hat tatsächlich funktioniert. Jetzt erstelle ich danach ein Zeichen-Array, um die genauen Koordinaten in die einzelnen Zeichen zu trennen . Das erste, was mit diesen Informationen zu tun ist zu prüfen, ob der Brief tatsächlich existiert. Board app.get Letter Index, wie wir genau hier sehen, wird der Index aus allen unseren Buchstaben genau hier zurückgeben . Das heißt, wenn es nicht existiert, wird es negativ zurückgeben. Dies wird im Grunde sicherstellen , dass ein bis J verwendet wurde. Wenn dies nicht der Fall ist, werden wir einfach falsch zurückgeben. Aber wenn es verwendet wird, werden wir fortfahren und die nächsten Werte überprüfen, die 0 bis neun überprüfen. Hier erstellen wir eine Ganzzahl und eine Zeichenfolge ist gleich einem Zeichen. Denken Sie daran, dass Array ein Zeichen-Array ist, was bedeutet, dass es sich um einzelne Zeichen handelt , die Zahlen haben , die sie darstellen. Zum Beispiel das Zeichen 0, dargestellt durch Ganzzahl 48. Das erste Zeichen wird durch eine ganze Zahl 49 dargestellt und so weiter. Wir werden tatsächlich sicherstellen, dass dies neun ist, indem sehen, ob der Wert größer oder gleich 48 Anion ist. Wenn der Wert kleiner oder gleich 57 ist. Wenn diese Bedingung genau hier zutrifft, bedeutet das, dass alles korrekt ist wenn es um die gültige Benutzereingabe geht. Scrollen wir jetzt nach oben und machen wir die letzte Funktion für dieses gesamte Projekt, das läuft Spielschleife. Ich nehme alle Funktionen und stelle sie zusammen, um tatsächlich nutzbar zu sein. Wenn ich das erweitere, machen wir zunächst einen Scanner. Und wir werden eine Zeichenfolge erstellen, die als letzte Aktion bezeichnet wird. Und wir weisen dies gleich Null zu. Wir werden das später zuweisen. Dies wird entweder das Chaos oder der Treffer sein, oder die USA haben ihre Schlachtschiffsaite versenkt. Und wir werden das zuerst machen , weil wir das Board ausdrucken wollen. Und dann werden wir gleich danach die letzte Aktion ausdrucken. Auf diese Weise wird es nicht automatisch durch das Board ersetzt. Zum Beispiel, wenn ich das vorher ausdrucken würde , eine Stunde, um uns zu leiten. Wenn ich zum Beispiel eine 0 eintrage , verdeckt das Board es. Wenn ich hier oben scrolle, sehen wir das Chaos. Deshalb müssen wir eine Zeichenfolge außerhalb der While-Schleife erstellen . Es wird also nicht jedes Mal zurückgesetzt, und wir können es dann ausdrucken, wenn es tatsächlich existiert. Als Nächstes erstellen wir eine Zeichenfolge namens Koordinaten, die die Benutzereingabe erhält. Hier haben wir eine Do-While-Schleife, die, wenn Sie sich erinnern, im Grunde genommen diesen exakten Code mindestens einmal ausführen wird , egal was passiert. Danach wird dieser Code weiterhin ausgeführt, solange dieser Ausdruck genau hier zutrifft. Werfen wir einen Blick darauf, was dieser Code darin ist. Hier drucken wir innere Koordinaten aus, Beispiel eine 0 oder beenden, um die Wiedergabe zu beenden. Wir erhalten dann das nächste Wort, das der Benutzer eingibt. Und wir werden das in Großbuchstaben umwandeln . So würde alles wie Kleinbuchstaben eine 0 zu Großbuchstaben Israel werden. Und das macht es uns einfacher , Dinge zu vergleichen. Danach werden wir einfach sehen, ob die Eingabe beendet wurde. Wenn ja, kehren wir von der Hauptfunktion zurück, die wiederum hierher zurückkehren und dann einfach das Hauptprogramm beenden würde . Aber vorausgesetzt, dass sie nicht in quit eingetreten sind, werden wir sehen, ob es sich um eine gültige Koordinate handelt. Wir werden hier auch einen NOT-Operator verwenden. Grundsätzlich heißt, wenn dies keine gültige Koordinate mit der angegebenen Kabelendplatine ist, werden wir weiter durchleben bis der Benutzer eine gültige Koordinate eingibt. Aber wenn sie gültige Koordinaten eingeben, werden wir fortfahren und diesen ganzen Code genau hier ausführen, beginnend mit dem Abrufen eines Zeichen-Arrays. Und das ist ein ähnliches Konzept wie das, was wir zuvor mit der gültigen Koordinatenfunktion hatten das, was wir zuvor mit der gültigen Koordinatenfunktion Wir erhalten ein Zeichen-Array mit Index 0 wird der Buchstabe und wird der Buchstabe und Index sein die Zahl. also hier wieder nach oben scrollen, erhalten wir die Spalte , die Board Dot Letter Index, Array-Index 0 ist. Jetzt wird der Index davon im Grunde genommen ein bis J in eine 0 bis neun umwandeln. Der Benutzer sieht ein bis J, aber das Programm verwendet nicht tatsächlich ein bis J. Wir verwenden unterschiedliche Zahlen für die tatsächlichen Spalten. Also auf 0 bis neun. Und das ist eigentlich der Index jedes einzelnen Charakters. Wenn wir zu unserem Board gehen, hat dies Index 0, Index eins, bis zu Index neun. Wenn Sie den Index aus dieser Liste abrufen , erhalten Sie die richtige Y-Koordinate und geben uns daher die Spalte. Für die Zeile nehmen wir einfach genau diesen Charakter an und wir werden 48 aus genau den gleichen Gründen subtrahieren wie wir hier unten mit allen Ascii-Beispielen sehen. Grundsätzlich entspricht Zeichen 0 48. Wenn wir also 48 subtrahieren, bedeutet das, dass jede Zahl, die wir haben , eine gültige Ganzzahl sein wird. Es geht wieder hier hoch. Die letzte Aktion wird gleich Brett, um einen Treffer zu versuchen, indem die Zeile und die Spalte übergeben wird. Und das wird die Versuchshit-Funktion aufrufen, die dann durchlaufen würde und sehen würde, ob ein Schiff tatsächlich da war. Und dann gib eine Saite zurück, je nachdem, ob ich tatsächlich getroffen oder ob sie verpasst hat oder ob ein Heiliger dieses Schiff ist. Und so funktioniert das gesamte Programm. Wenn ich das noch einmal laufe, da wir jetzt sehen, wie alles funktioniert, kann ich jetzt zum Beispiel B3 eingeben. Und es wird zu viel aussteigen. Wenn ich b2 eingebe, was darüber liegt, wird es Miss sagen. Und ich kann weiter B4, B5 eingeben . Endlich sei sechs. Und jetzt heißt es, glaubst du, dass sie ein Schlachtschiff sind? Weil alle Koordinaten jetzt x out für dieses Schiff sind. Und jetzt haben wir ein komplett funktionierendes Einzelspieler-Schlachtschiff-Spiel, das wir zusammen mit Java aufgebaut haben. 51. Schlussbemerkung: Dies schließt meinen gesamten Java-Kurs für Anfänger ab. Ich möchte mich bei dir dafür bedanken, dass du den Kurs belegst. Und wenn wir in meinen Tutorials mehr über Softwareentwicklung erfahren möchten , dann checken Sie meinen YouTube-Kanal mit abgenutzten Schlüsseln aus.