JavaRush /Blog Jawa /Random-JV /Ngopi #116. Carane nggunakake penunjuk fungsi ing Jawa. i...

Ngopi #116. Carane nggunakake penunjuk fungsi ing Jawa. indexOf ing Jawa - Carane nemokake indeks string ing Jawa

Diterbitake ing grup

Carane nggunakake penunjuk fungsi ing Jawa

Sumber: Dev.to Pointers minangka obyek sing nyimpen alamat memori lan bisa nyimpen memori kanthi langsung ngarahake menyang obyek target, array, utawa alamat variabel tinimbang ngliwati nilai. Sayange, ora ana konsep "nyata" pitunjuk ing Jawa. Nanging untunge kanggo kita, ana solusi nggunakake referensi metode sing cedhak karo sing nyata. Ngopi #116.  Carane nggunakake penunjuk fungsi ing Jawa.  indexOf ing Jawa - Carane nemokake indeks string ing Jawa - 1

Pitunjuk fungsi

Pointer fungsi minangka pointer sing nuduhake alamat fungsi. Sawetara kasus panggunaan kalebu nggawe rutin callback kanthi nggawe fungsi sing nelpon fungsi liyane adhedhasar eksekusi, utawa nyimpen macem-macem penunjuk fungsi kanggo metode sing diarani kanthi dinamis (contone, nyimpen instruksi prosesor kanggo emulator).

Simulasi pointer fungsi

Ana papat jinis referensi metode . Kita nggunakake jinis sing nuduhake cara conto saka obyek tartamtu. Ayo miwiti kanthi nemtokake antarmuka sing nemtokake tandha-tandha saka metode sing sampeyan tuju.
// Wrapping interface
private interface FunctionPointer {
  // Method signatures of pointed method
  void methodSignature(int a);
}
Banjur kita bakal nggawe metode kanthi teken metode target.
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);
}
Langkah sabanjure kanggo nggawe variabel antarmuka pambungkus lan nemtokake cara kanggo wong-wong mau. Variabel bakal tumindak minangka penunjuk kanggo fungsi sing bakal disimpen utawa dieksekusi.
// 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);
Disebut method1 kanthi integer 3 Disebut method2 kanthi integer 2 Disebut method3 kanthi integer 5

Nggunakake Ekspresi Lambda

Referensi metode bisa ditugasake nggunakake ekspresi lambda.
// 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 penunjuk fungsi

Fungsi saka macem-macem referensi metode bisa ditiru kanthi nggawe array antarmuka wrapper.
// 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);

Fungsi pointer vs panggilan langsung

Yen sampeyan mbandhingake opsi kasebut, nelpon cara langsung meh 5 kaping luwih cepet tinimbang nggunakake referensi metode. Iki kabeh amarga langkah ekstra nelpon ekspresi lambda dibandhingake karo cara sing disimpen. Nanging sampeyan mbokmenawa ora bakal weruh mundhut kinerja ing setahun, mula aja kuwatir.

Kesimpulan

Pointer minangka variabel sing ngarah langsung menyang alamat obyek tinimbang nilai. Pointer fungsi langsung nuding alamat fungsi, sing bisa nyuda konsumsi memori. Jawa ora duwe pitunjuk, nanging bisa niru prilaku nggunakake referensi metode utawa ekspresi lambda. Nggunakake referensi metode luwih alon tinimbang nelpon cara langsung, nanging iki ora nyegah panggunaane.

indexOf ing Jawa - Carane nemokake indeks string ing Jawa

Sumber: FreeCodeCamp String yaiku sakumpulan karakter sing dilampirake ing tanda kutip ganda. Cara indexOf ngasilake posisi indeks karakter utawa substring sing ditemtokake ing senar. Ing artikel iki, kita bakal sinau babagan sintaks saka macem-macem metode indexOf . Kita uga bakal ndeleng conto sing bakal mbantu sampeyan ngerti lan nggunakake kanthi efektif nggoleki indeks karakter utawa substring ing kode Jawa. Ngopi #116.  Carane nggunakake penunjuk fungsi ing Jawa.  indexOf ing Jawa - Carane nemokake indeks string ing Jawa - 2

Sintaks metode indexOf

Metode indexOf nduweni metode ing ngisor iki:
public int indexOf(int char)
public int indexOf(int char, int fromIndex)
public int indexOf(String str)
public int indexOf(String str, int fromIndex)
Ayo diterangake paramèter kasebut:
  • char nggantosi siji karakter saben baris.
  • fromIndex nemtokake posisi ing ngendi panelusuran kanggo indeks karakter utawa substring kudu diwiwiti. Iki penting nalika sampeyan duwe rong karakter / senar sing duwe nilai sing padha ing senar. Kanthi parameter iki, sampeyan bisa nemtokake cara indexOf ing ngendi arep miwiti.
  • str nggambarake substring ing senar.
Aja kuwatir yen sampeyan durung ngerti cara kerjane - contone bakal nggawe kabeh dadi jelas!

Cara nggunakake metode indexOf ing Jawa

Ing conto pisanan kita bakal nemokake indeks siji karakter ing senar. Iki bakal mbantu kita ngerti metode public int indexOf(int char) .

Contoh metode IndexOf(int Char).

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

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

    // 4
  }
}
Ing kode ing ndhuwur, kita entuk indeks karakter "o" bali menyang kita, yaiku 4. Kita duwe rong karakter "o", nanging mung indeks sing pisanan bali. Ing conto ing ngisor iki kita bakal weruh carane kita bisa bali indeks saka kaloro "o". Yen sampeyan kepingin weruh carane nomer urutan dijupuk, sampeyan bakal sok dong mirsani sing karakter pisanan ing senar duwe indeks saka nul, karakter kapindho duwe indeks siji, lan mratelakaken.

Tuladha metode indexOf(int Char, Int fromIndex).

Iki minangka conto sing nerangake metode int indexOf(int char, int fromIndex) :
public class Main {
  public static void main(String[] args) {
    String greetings = "Hello World";

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

    // 7
  }
}
Ing conto ing ndhuwur, kita ngandhani metode indexOf kanggo miwiti kerja ing indeks kaping lima. H => indeks 0 e => indeks 1 l => indeks 2 l => indeks 3 0 => indeks 4 Elinga yen indeks 5 dudu karakter "W". Indeks kaping lima yaiku spasi antarane "Hello" lan "World". Dadi, ing kode iki, kabeh karakter liyane sadurunge indeks kaping lima bakal diabaikan. 7 bali minangka indeks saka karakter kapindho "o".

Tuladha metode Int indexOf(String Str).

Ing conto ing ngisor iki, kita bakal ngerti carane public int indexOf(String str) cara dianggo , sing ngasilake indeks saka substring.
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
  }
}
Aku wonder carane kita entuk 11 bali? Sampeyan kudu mriksa bagean pungkasan kanggo mangerteni carane indeks diitung lan carane spasi antarane substrings uga dianggep indeks. Elinga yen substring dilewati minangka parameter, indeks bali minangka indeks karakter pisanan ing substring. 11 minangka indeks karakter "b".

Tuladha metode indexOf(String Str, Int fromIndex).

Cara pungkasan yaiku public int indexOf(String str, int fromIndex) - padha karo public int indexOf(int char, int fromIndex) method . Iki ngasilake indeks saka posisi sing ditemtokake.
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
  }
}
Ing conto iki, kita nemtokake cara kudu miwiti karya ing indeks kalima, kang rawuh sawise substring pisanan kanggo. 21 minangka indeks saka substring kapindho kanggo. Pungkasan, nalika kita ngliwati karakter utawa substring sing ora ana ing senar, metode indexOf bakal ngasilake -1. Iki contone:
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
  }
}

Kesimpulan

Ing artikel iki, kita sinau carane nggunakake papat cara indexOf , kanthi conto sing jelas. Kita uga weruh apa sintaks kanggo saben metode kasebut lan kepiye carane indeks kasebut bali. Kajaba iku, kita bisa ngerteni apa sing kedadeyan nalika karakter utawa substring sing ora ana dilewati minangka parameter.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION