JavaRush /Java Blog /Random-ID /Rehat kopi #116. Cara menggunakan penunjuk fungsi di Java...

Rehat kopi #116. Cara menggunakan penunjuk fungsi di Java. indexOf di Java - Cara menemukan indeks string di Java

Dipublikasikan di grup Random-ID

Cara menggunakan penunjuk fungsi di Java

Sumber: Dev.to Pointer adalah objek yang menyimpan alamat memori dan dapat menghemat memori dengan menunjuk langsung ke objek target, array, atau alamat variabel alih-alih meneruskan nilai. Sayangnya, tidak ada konsep pointer yang “nyata” di Java. Namun untungnya bagi kami, ada solusi menggunakan referensi metode yang mendekati aslinya. Rehat kopi #116.  Cara menggunakan penunjuk fungsi di Java.  indexOf di Java - Cara menemukan indeks string di Java - 1

Penunjuk fungsi

Penunjuk fungsi adalah penunjuk yang menunjuk ke alamat suatu fungsi. Beberapa kasus penggunaan mencakup pembuatan rutin callback dengan membuat fungsi yang memanggil fungsi lain berdasarkan eksekusinya, atau menyimpan array pointer fungsi untuk metode yang dipanggil secara dinamis (misalnya, menyimpan instruksi prosesor untuk emulator).

Simulasi penunjuk fungsi

Ada empat jenis referensi metode . Kami menggunakan tipe yang merujuk pada metode instan objek tertentu. Mari kita mulai dengan mendefinisikan antarmuka yang mendefinisikan tanda tangan dari metode yang Anda tunjuk.
// Wrapping interface
private interface FunctionPointer {
  // Method signatures of pointed method
  void methodSignature(int a);
}
Kemudian kita akan membuat metode dengan tanda tangan dari 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 selanjutnya adalah membuat variabel antarmuka wrapper dan menetapkan metode ke dalamnya. Variabel akan bertindak sebagai penunjuk ke fungsi yang akan disimpan atau dijalankan.
// 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 metode1 dengan bilangan bulat 3 Disebut metode2 dengan bilangan bulat 2 Disebut metode3 dengan bilangan bulat 5

Menggunakan Ekspresi Lambda

Referensi metode dapat ditetapkan menggunakan 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 pointer fungsi

Fungsionalitas array referensi metode dapat ditiru dengan membuat array antarmuka pembungkus.
// 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);

Penunjuk fungsi vs panggilan langsung

Jika Anda membandingkan kedua opsi, memanggil metode secara langsung hampir 5 kali lebih cepat dibandingkan menggunakan referensi metode. Ini semua karena langkah ekstra dalam memanggil ekspresi lambda dibandingkan dengan metode tersimpan. Namun Anda mungkin tidak akan melihat adanya penurunan kinerja dalam setahun, jadi jangan khawatir.

Kesimpulan

Pointer adalah variabel yang menunjuk langsung ke alamat suatu objek, bukan nilai. Penunjuk fungsi secara langsung menunjuk ke alamat fungsi, yang dapat mengurangi konsumsi memori. Java tidak memiliki pointer, namun dapat meniru perilaku menggunakan referensi metode atau ekspresi lambda. Menggunakan referensi metode lebih lambat daripada memanggil metode secara langsung, namun hal ini tidak menghalangi penggunaannya.

indexOf di Java - Cara menemukan indeks string di Java

Sumber: FreeCodeCamp String adalah sekumpulan karakter yang diapit tanda kutip ganda. Metode indexOf mengembalikan posisi indeks karakter atau substring tertentu dalam sebuah string. Pada artikel ini, kita akan mempelajari tentang sintaks berbagai metode indexOf . Kami juga akan melihat contoh yang akan membantu Anda memahami dan menggunakan pencarian indeks karakter atau substring dalam kode Java secara efektif. Rehat kopi #116.  Cara menggunakan penunjuk fungsi di Java.  indexOf di Java - Cara menemukan indeks string di Java - 2

Sintaks metode indexOf

Metode indexOf memiliki metode berikut:
public int indexOf(int char)
public int indexOf(int char, int fromIndex)
public int indexOf(String str)
public int indexOf(String str, int fromIndex)
Mari kita jelaskan parameter ini:
  • char mewakili satu karakter per baris.
  • fromIndex menentukan posisi di mana pencarian indeks karakter atau substring harus dimulai. Ini penting ketika Anda memiliki dua karakter/string yang memiliki nilai yang sama dalam sebuah string. Dengan parameter ini, Anda dapat memberi tahu metode indexOf di mana harus memulai.
  • str mewakili substring dalam sebuah string.
Jangan khawatir jika Anda belum memahami cara kerjanya—contoh-contoh ini akan memperjelas semuanya!

Cara menggunakan metode indexOf di Java

Pada contoh pertama kita akan menemukan indeks satu karakter dalam sebuah string. Ini akan membantu kita memahami metode int indexOf(int char) publik .

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
  }
}
Pada kode di atas, kita mendapatkan indeks karakter “o” yang dikembalikan kepada kita, yaitu 4. Kita memiliki dua karakter “o”, tetapi hanya indeks karakter pertama yang dikembalikan. Dalam contoh berikut kita akan melihat bagaimana kita dapat mengembalikan indeks "o" kedua. Jika Anda bertanya-tanya bagaimana nomor urut diperoleh, Anda akan melihat bahwa karakter pertama dalam sebuah string memiliki indeks nol, karakter kedua memiliki indeks satu, dan seterusnya.

Contoh metode indexOf(int Char, Int fromIndex).

Berikut adalah contoh penjelasan 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
  }
}
Pada contoh di atas, kami memberi tahu metode indexOf untuk mulai bekerja pada indeks kelima. H => indeks 0 e => indeks 1 l => indeks 2 l => indeks 3 0 => indeks 4 Perhatikan bahwa indeks 5 bukan karakter “W”. Indeks kelima adalah spasi antara “Halo” dan “Dunia”. Jadi, dalam kode ini, semua karakter lain sebelum indeks kelima akan diabaikan. 7 dikembalikan sebagai indeks karakter kedua “o”.

Contoh metode Int indexOf(String Str).

Dalam contoh berikut, kita akan memahami cara kerja metode public int indexOf(String str) yang mengembalikan indeks 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
  }
}
Saya bertanya-tanya bagaimana kami mendapatkan 11 kembali? Anda harus meninjau bagian terakhir untuk memahami bagaimana indeks dihitung dan bagaimana spasi antar substring juga dianggap sebagai indeks. Perhatikan bahwa ketika substring dilewatkan sebagai parameter, indeks yang dikembalikan adalah indeks karakter pertama dalam substring. 11 adalah indeks dari karakter “b”.

Contoh metode indexOf(String Str, Int fromIndex).

Metode terakhir adalah public int indexOf(String str, int fromIndex) - sama dengan metode public int indexOf(int char, int fromIndex) . Ini mengembalikan indeks dari posisi yang ditentukan.
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
  }
}
Dalam contoh ini, kami menetapkan bahwa metode harus mulai bekerja pada indeks kelima, yang muncul setelah substring pertama untuk. 21 adalah indeks substring kedua dari for. Terakhir, ketika kita meneruskan karakter atau substring yang tidak ada dalam string, metode indexOf akan mengembalikan -1. Berikut ini contohnya:
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

Dalam artikel ini, kita mempelajari cara menggunakan empat metode indexOf , dengan contoh yang jelas. Kita juga melihat seperti apa sintaksis untuk masing-masing metode ini dan bagaimana metode tersebut memerintahkan indeks untuk kembali. Selain itu, kami dapat mengetahui apa yang terjadi jika karakter atau substring yang tidak ada dilewatkan sebagai parameter.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION