JavaRush /Java-Blog /Random-DE /Kaffeepause Nr. 116. So verwenden Sie Funktionszeiger in ...

Kaffeepause Nr. 116. So verwenden Sie Funktionszeiger in Java. indexOf in Java – So finden Sie den Index einer Zeichenfolge in Java

Veröffentlicht in der Gruppe Random-DE

So verwenden Sie Funktionszeiger in Java

Quelle: Dev.to Zeiger sind Objekte, die eine Speicheradresse speichern und Speicher sparen können, indem sie direkt auf ein Zielobjekt, Array oder eine Variablenadresse zeigen, anstatt einen Wert zu übergeben. Leider gibt es in Java kein „richtiges“ Konzept für Zeiger. Aber zum Glück gibt es für uns einen Workaround mit Methodenreferenzen, der der Realität nahe kommt. Kaffeepause Nr. 116.  So verwenden Sie Funktionszeiger in Java.  indexOf in Java – So finden Sie den Index einer Zeichenfolge in Java – 1

Funktionszeiger

Ein Funktionszeiger ist ein Zeiger, der auf die Adresse einer Funktion zeigt. Einige Anwendungsfälle umfassen das Erstellen einer Rückrufroutine durch Erstellen einer Funktion, die basierend auf ihrer Ausführung eine andere Funktion aufruft, oder das Speichern eines Arrays von Funktionszeigern für dynamisch aufgerufene Methoden (z. B. Speichern von Prozessoranweisungen für einen Emulator).

Funktionszeigersimulation

Es gibt vier Arten von Methodenreferenzen . Wir verwenden einen Typ, der auf eine Instanzmethode eines bestimmten Objekts verweist. Beginnen wir mit der Definition einer Schnittstelle, die die Signaturen der Methoden definiert, auf die Sie verweisen.
// Wrapping interface
private interface FunctionPointer {
  // Method signatures of pointed method
  void methodSignature(int a);
}
Anschließend erstellen wir Methoden mit der Signatur der Zielmethode.
public void method1(int b) {
  System.out.println("Called method1 with integer " + b);
}

public void method2(int v) {
  System.out.println("Called method2 with integer " + v);
}

public void method3(int a) {
  System.out.println("Called method3 with integer " + a);
}
Der nächste Schritt besteht darin, Wrapper-Schnittstellenvariablen zu erstellen und ihnen Methoden zuzuweisen. Variablen fungieren als Zeiger auf die Funktion, die gespeichert oder ausgeführt werden soll.
// Create a variable of the interface and assign
// the method references
FunctionPointer pointer1 = this::method1;
FunctionPointer pointer2 = this::method2;

// Call both methods using their "pointer"
pointer1.methodSignature(3);
pointer2.methodSignature(2);

// Reassign and call pointer 1
pointer1 = this::method3;

pointer1.methodSignature(5);
Methode 1 mit Ganzzahl 3 aufgerufen. Methode 2 mit Ganzzahl 2 aufgerufen. Methode 3 mit Ganzzahl 5 aufgerufen

Verwenden von Lambda-Ausdrücken

Methodenreferenzen können mithilfe von Lambda-Ausdrücken zugewiesen werden.
// Create a method reference and assign a methods using a lambda.
FunctionPointer pointer1 =
  (a) -> System.out.println("Called pointer1 with int " + a);

FunctionPointer pointer2 =
  (b) -> System.out.println("Called pointer2 with int " + b);

Array von Funktionszeigern

Die Funktionalität eines Arrays von Methodenreferenzen kann durch Erstellen eines Wrapper-Schnittstellen-Arrays emuliert werden.
// Create an array of "pointers"
FunctionPointer[] functionPointersArray = new FunctionPointer[3];

// Assign methods
functionPointersArray[0] = this::method1;
functionPointersArray[1] = this::method2;
functionPointersArray[2] = this::method3;

// Call methods
functionPointersArray[0].methodSignature(3);
functionPointersArray[1].methodSignature(4);
functionPointersArray[2].methodSignature(5);

Funktionszeiger vs. Direktaufruf

Wenn man beide Optionen vergleicht, ist der direkte Aufruf einer Methode fast fünfmal schneller als die Verwendung einer Methodenreferenz. Dies liegt an dem zusätzlichen Schritt des Aufrufs eines Lambda-Ausdrucks im Vergleich zu einer gespeicherten Methode. Aber wahrscheinlich werden Sie in einem Jahr keinen Leistungsverlust bemerken, also machen Sie sich darüber keine Sorgen.

Abschluss

Zeiger sind Variablen, die direkt auf die Adresse eines Objekts und nicht auf einen Wert zeigen. Der Funktionszeiger zeigt direkt auf die Funktionsadresse, wodurch der Speicherverbrauch reduziert werden kann. Java verfügt über keine Zeiger, kann aber Verhalten mithilfe von Methodenreferenzen oder Lambda-Ausdrücken emulieren. Die Verwendung einer Methodenreferenz ist langsamer als der direkte Aufruf einer Methode, was ihre Verwendung jedoch nicht verhindert.

indexOf in Java – So finden Sie den Index einer Zeichenfolge in Java

Quelle: FreeCodeCamp Eine Zeichenfolge ist eine Reihe von Zeichen, die in doppelte Anführungszeichen eingeschlossen sind. Die Methode indexOf gibt die Indexposition des angegebenen Zeichens oder Teilstrings in einem String zurück. In diesem Artikel lernen wir die Syntax verschiedener indexOf- Methoden kennen . Wir werden uns auch Beispiele ansehen, die Ihnen helfen, die Suche nach dem Index eines Zeichens oder einer Teilzeichenfolge in Java-Code zu verstehen und effektiv zu nutzen. Kaffeepause Nr. 116.  So verwenden Sie Funktionszeiger in Java.  indexOf in Java – So finden Sie den Index einer Zeichenfolge in Java – 2

Syntax der indexOf-Methode

Die indexOf- Methode verfügt über die folgenden Methoden:
public int indexOf(int char)
public int indexOf(int char, int fromIndex)
public int indexOf(String str)
public int indexOf(String str, int fromIndex)
Lassen Sie uns diese Parameter erklären:
  • char repräsentiert ein Zeichen pro Zeile.
  • fromIndex gibt die Position an, an der die Suche nach dem Index eines Zeichens oder einer Teilzeichenfolge beginnen soll. Dies ist wichtig, wenn Sie zwei Zeichen/Strings haben, die in einer Zeichenfolge den gleichen Wert haben. Mit diesem Parameter können Sie der indexOf- Methode mitteilen , wo sie beginnen soll.
  • str repräsentiert einen Teilstring in einem String.
Machen Sie sich keine Sorgen, wenn Sie noch nicht verstehen, wie alles funktioniert – die Beispiele machen alles klar!

So verwenden Sie die indexOf-Methode in Java

Im ersten Beispiel finden wir den Index eines Zeichens in einer Zeichenfolge. Dies wird uns helfen, die Methode public int indexOf(int char) zu verstehen .

Beispiel für die IndexOf(int Char)-Methode

public class Main {
  public static void main(String[] args) {
    String greetings = "Hello World";

    System.out.println(greetings.indexOf("o"));

    // 4
  }
}
Im obigen Code haben wir den Index des Zeichens „o“ zurückgegeben, nämlich 4. Wir haben zwei Zeichen „o“, aber nur der Index des ersten wurde zurückgegeben. Im folgenden Beispiel werden wir sehen, wie wir den Index des zweiten „o“ zurückgeben können. Wenn Sie sich fragen, wie Sequenznummern ermittelt werden, werden Sie feststellen, dass das erste Zeichen in einer Zeichenfolge den Index Null hat, das zweite Zeichen den Index Eins und so weiter.

Beispiel für die Methode indexOf(int Char, Int fromIndex).

Hier ist ein Beispiel, das die Methode int indexOf(int char, int fromIndex) erklärt :
public class Main {
  public static void main(String[] args) {
    String greetings = "Hello World";

    System.out.println(greetings.indexOf("o", 5));

    // 7
  }
}
Im obigen Beispiel weisen wir die indexOf- Methode an , mit der Arbeit beim fünften Index zu beginnen. H => Index 0 e => Index 1 l => Index 2 l => Index 3 0 => Index 4 Beachten Sie, dass Index 5 kein „W“-Zeichen ist. Der fünfte Index ist der Raum zwischen „Hello“ und „World“. Daher werden in diesem Code alle anderen Zeichen vor dem fünften Index ignoriert. Als Index des zweiten Zeichens „o“ wird 7 zurückgegeben.

Beispiel für die Int indexOf(String Str)-Methode

Im folgenden Beispiel werden wir verstehen, wie die Methode public int indexOf(String str) funktioniert , die den Index eines Teilstrings zurückgibt.
public class Main {
  public static void main(String[] args) {
    String motivation = "Coding can be difficult but don't give up";

    System.out.println(motivation.indexOf("be"));

    // 11
  }
}
Ich frage mich, wie wir 11 zurückbekommen haben? Sie sollten den letzten Abschnitt lesen, um zu verstehen, wie Indizes gezählt werden und wie Leerzeichen zwischen Teilzeichenfolgen ebenfalls als Indizes betrachtet werden. Beachten Sie, dass bei der Übergabe einer Teilzeichenfolge als Parameter der zurückgegebene Index der Index des ersten Zeichens in der Teilzeichenfolge ist. 11 ist der Index des Zeichens „b“.

Beispiel für die Methode indexOf(String Str, Int fromIndex).

Die letzte Methode ist public int indexOf(String str, int fromIndex) – dieselbe wie die Methode public int indexOf(int char, int fromIndex) . Es gibt den Index ab der angegebenen Position zurück.
public class Main {
  public static void main(String[] args) {
    String motivation = "The for loop is used for the following";

    System.out.println(motivation.indexOf("for", 5));

    // 21
  }
}
In diesem Beispiel haben wir angegeben, dass die Methode ihre Arbeit beim fünften Index beginnen soll, der nach dem ersten Teilstring für steht. 21 ist der Index des zweiten Teilstrings von for. Wenn wir schließlich ein Zeichen oder eine Teilzeichenfolge übergeben, die nicht in der Zeichenfolge enthalten ist, gibt die Methode indexOf -1 zurück. Hier ist ein Beispiel:
public class Main {
  public static void main(String[] args) {
    String motivation = "The for loop is used for the following";

    System.out.println(motivation.indexOf("code"));

    // -1
  }
}

Abschluss

In diesem Artikel haben wir anhand anschaulicher Beispiele gelernt, wie man die vier indexOf- Methoden verwendet . Wir haben auch gesehen, wie die Syntax für jede dieser Methoden aussieht und wie sie den Index anweisen, zurückzukehren. Darüber hinaus konnten wir herausfinden, was passiert, wenn ein nicht vorhandenes Zeichen oder Teilstring als Parameter übergeben wird.
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION