CodeGym /Java Blog /Acak /Substring di Jawa
John Squirrels
Level 41
San Francisco

Substring di Jawa

Dipublikasikan di grup Acak
Tindakan paling populer pada String di Java adalah penggabungan, mendapatkan karakter berdasarkan indeks, dan mendapatkan substring. Pada artikel ini kami akan memberi tahu Anda tentang metode substring Java.

Apa itu Substring Java?

Substring Java secara umum adalah urutan karakter yang berdekatan di dalam String. Itu bisa menjadi bagian dari String atau seluruh String juga. Substring di Jawa - 2Apa itu substring di Jawa? Bahasa ini memiliki metode substring() , atau lebih tepatnya dua metode, berkat kelebihan metode Java. Anda dapat menggunakannya untuk mendapatkan substring dalam program Java. Metode substring Java pertama adalah String substring(firstIndex) dan yang kedua adalah String substring (firstIndex, lastIndex) .

Cara menggunakan substring di Java

Jawabannya sederhana: cukup gunakan substring. Metode Java substring() mengembalikan bagian dari string. Ada dua metode yang dapat Anda gunakan untuk ini:
Sintaks metode substring Substring string (Indeks pertama) Substring string (firstIndex, lastIndex)
Argumen firstIndex adalah angka dalam String Anda yang merupakan indeks pertama dari substring Anda. Inklusif. Angka terakhir dari Substring Anda adalah angka terakhir dari keseluruhan string firstIndex adalah angka dalam String Anda yang merupakan indeks pertama dari substring Anda. Inklusif.
lastIndex adalah nomor String Anda, pertama dan semua setelah itu dikecualikan dari substring Anda
Contoh cara menggunakan substring di Java

String s = "CodeGym";
System.out.println(s.substring(4));
//returns Gym

String s = "CodeGym"; 
System.out.println(s.substring(2,5));
//returns deG
Tugas yang sangat populer yang membantu Anda memahami
  • Cara mendapatkan substring di Java
  • Cara menemukan semua substring dari string yang diberikan
  • Cara menemukan substring umum terpanjang

Cara mendapatkan substring di Java (khusus)

Contoh substring Java pertama ini cukup mudah. Anda memiliki sebuah String dan Anda perlu menemukan substring "CodeGym" di dalamnya. Anda sudah tahu cara mendapatkan substring di Java. Jadi, inilah solusi dari masalah khusus ini:

import java.io.IOException;

public class Main {

   public static void main(String[] args) throws IOException {

       String s1 = "the best Java Core course is CourseCodeGym.  End of story";
       String myTarget = "CodeGym";
       int index1 = s1.indexOf(myTarget);
      
       int index2 = index1 + myTarget.length();
       System.out.println(s1.substring(index1, index2));

   }
}
Outputnya adalah: CodeGym Proses selesai dengan kode keluar 0 Cara menemukan semua substring dari string yang diberikan Di sini kita memiliki cara paling sederhana untuk menemukan semua substring dari String yang diberikan.

import java.io.IOException;
public class Main {
   public static void main(String[] args) throws IOException {
       String myTarget = "CodeGym";
       for (int i = 0; i < myTarget.length(); i++) {
           for (int j = i + 1; j <= myTarget.length(); j++) {
               System.out.println(myTarget.substring(i, j));
           }
       }    
   }
}
Outputnya adalah: C Co Cod Code CodeG CodeGy CodeGym o od ode odeG odeGy odeGym d de deG deGy deGym e eGy eGym G Gy Gym y ym m Proses selesai dengan kode keluar 0 Cara menemukan substring persekutuan terpanjang Masalah substring persekutuan terpanjang adalah salah satu tugas paling populer dalam ilmu komputer. Anda dapat menemukannya di wawancara Pengembang Junior Anda dengan probabilitas yang cukup tinggi. Bagaimanapun, cobalah untuk menyelesaikannya, ini adalah latihan yang sangat berguna untuk programmer pemula. Masalah substring umum terpanjang berarti menemukan string terpanjang (atau beberapa di antaranya) yang merupakan substring (atau merupakan substring) dari dua atau lebih string. Misalnya Anda memiliki dua string

String first = "CodeGym" 
String second = "SomeGym"
Keluarannya harus: eGym Jadi, Anda harus merangkai "pertama" dan "kedua". Cetak substring umum terpanjang. Jika dua atau lebih substring memiliki nilai yang sama untuk substring terpanjang, cetak salah satunya. Kami sangat menyarankan Anda untuk mencoba menyelesaikan masalah ini sendiri dan baru setelah itu lihat kode di bawah ini.

public class SubStringTest {

   //  in this method we are looking for the Longest common substring of
   // first String with length = m  and the second String with length = n
   public static String longestCS(String first, String second, int m, int n) {
       // the maximal length
       int maxLength = 0;
       // the last index of the longest common substring
       int endIndex = m;

       // array stores the length of substring
       int[][] keeper = new int[m + 1][n + 1];

       for (int i = 1; i <= m; i++) {
           for (int j = 1; j <= n; j++) {
               // check if current characters of first and second strings match
               if (first.charAt(i - 1) == second.charAt(j - 1)) {
                   keeper[i][j] = keeper[i - 1][j - 1] + 1;
                  
                   if (keeper[i][j] > maxLength) {
                       maxLength = keeper[i][j];
                       endIndex = i;
                   }
               }
           }
       }
       return first.substring(endIndex - maxLength, endIndex);
   }


   public static void main(String[] args) {
       String first = "CodeGym";
       String second = "SomeGym";
       int m = first.length(), n = second.length();
       System.out.println("The longest common substring = " + longestCS(first, second, m, n));
   }
}
Outputnya adalah: Substring umum terpanjang = eGym

Bagaimana substring bekerja di Jawa

Dalam JDK 7 dan versi yang lebih baru, substring() tidak lagi menghitung jumlah karakter dalam larik karakter yang dibuatnya, seperti yang terjadi pada versi sebelum termasuk JDK 6, tetapi cukup membuat larik baru dalam memori (tumpukan) dan merujuknya . Ini contohnya:

String x = "CodeGymIsTheBest";
String y = x.substring (2,6);
String z = x.substring (0,3);
Jadi, di JDK 7 dan yang lebih baru, objek y dan z dibuat sebagai hasil dari metode substring() yang diterapkan ke objek x akan merujuk ke dua larik yang baru dibuat (di heap) - {d,e, G, y} untuk y dan {C, o} untuk z . Dalam versi JDK 7+ dari metode substring, dua baris baru ini (yaitu, dua array karakter baru) akan disimpan dalam memori bersama dengan string asli myLongString ( {C, o, d, e, G, y, m, i, s, t, h, e, b,e,s,t} dalam bentuk array) .

Substring versi JDK 6

Bahkan hari ini di beberapa proyek besar Anda mungkin menemukan basis kode lama dari JDK sebanyak 6 kali. Dalam metode JDK 6 substring() bekerja dengan cara yang berbeda. Seperti yang mungkin Anda ketahui, String adalah Kelas yang tidak dapat diubah dan untuk mendapatkan substring Java menggunakan kekekalan ini sebelumnya di JDK 6. Objek bertipe String di dalamnya hanyalah sebuah larik karakter, atau lebih tepatnya, berisi larik karakter. Pada saat JDK 6, dua variabel lagi disimpan di sana: jumlah karakter pertama dalam larik karakter dan jumlahnya. Jadi, di JDK 6, String memiliki tiga bidang nilai char [] (array karakter), int offset (indeks karakter pertama dalam array), dan int count(jumlah karakter dalam array). Saat substring dibuat di JDK 6, array karakter tidak disalin ke objek String baru . Alih-alih ini, kedua Objek menyimpan referensi ke Array Karakter yang sama. Namun Objek kedua menyimpan dua variabel lagi, simbol pertama substring dan yang kedua adalah tentang berapa banyak simbol dalam substring. Metode JDK 6 diganti karena masalah kebocoran memori. Apa artinya? Anggaplah kita memiliki string x, dan kita membuat beberapa substring menggunakan substring.

String x = "CodeGymIsTheBest";
String y = x.substring (2,6);
String z = x.substring (0,3);
Sekarang kita memiliki objek x yang disimpan di area memori khusus yang disebut heap, dan dua objek y dan z mengacu pada objek yang sama x . Hanya x yang mengacu pada elemen dari yang kedua hingga keenam, dan z yang merujuk pada elemen x dari nol hingga yang ketiga. Bagaimana jika objek asli x telah digunakan dan dibiarkan tanpa referensi? Dalam sebuah program, semua objek lain hanya bekerja dengan y dan z . Dalam hal ini pengumpul sampah dapat menghancurkan objek x, sedangkan larik memori tetap ada, dan digunakan oleh y dan z. Kebocoran memori terjadi. Jadi, metode yang lebih baru, JDK 7 dan yang lebih baru, cukup mahal dalam hal penggunaan memori. Namun itu memungkinkan Anda untuk mencegah kebocoran memori. Selain itu, metode baru bekerja lebih cepat karena tidak perlu menghitung jumlah karakter. Untuk memperkuat apa yang Anda pelajari, kami sarankan Anda menonton video pelajaran dari Kursus Java kami
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION