Kelas
String
adalah salah satu kelas yang paling banyak digunakan di Java. Artikel ini memberikan beberapa pertanyaan dan jawaban wawancara Java String yang penting. Mereka akan sangat membantu dalam mendapatkan gambaran lengkap tentang kelas String
dan akan mempersiapkan Anda untuk pertanyaan wawancara terkait kelas apa pun String
.
1. Apa itu String di Java? Tipe data apa ini?
String adalah kelas di Java yang didefinisikan dalam paket java.lang. Ini bukan tipe data primitif seperti int dan long. Kelas String mewakili kumpulan karakter string. String digunakan di hampir semua aplikasi Java dan ada beberapa fakta yang harus kita ketahui tentang kelas String. Ini adalahimmutable
tipe data yang tidak dapat diubah ( ) dan diselesaikan di Java dan String
mesin virtual menyimpan semua objek kelas dalam kumpulan string. Fitur lainnya String
adalah cara untuk mendapatkan objek kelas String
menggunakan tanda kutip ganda dan membebani operator “+” untuk penggabungan.
2. Apa sajakah cara untuk membuat objek String?
Kita bisa membuat objek menggunakan operator baru sama seperti kelas lain di Java atau kita bisa menggunakan tanda kutip ganda untuk membuat objekString
. Ada juga beberapa konstruktor kelas String
untuk mendapatkan string dari array karakter, array byte, dan juga menggunakan StringBuffer
or StringBuilder
.
String str = new String("abc");
String str1 = "abc";
Saat kita membuat string menggunakan tanda kutip ganda, Java Virtual Machine mencari string lain dengan nilai yang sama di kumpulan string. Jika string ditemukan, maka hanya referensi ke objek kelas yang ada yang dikembalikan String
, jika tidak, objek baru dibuat dengan nilai yang diterima dan disimpan di kumpulan. Saat kita menggunakan operator baru, mesin virtual membuat objek String
tetapi tidak menyimpannya di kumpulan string. Kita bisa menggunakan metode ini intern()
untuk menyimpan string di kumpulan string, atau mendapatkan referensi jika string tersebut sudah ada di kumpulan.
3. Tulis metode untuk memeriksa apakah suatu string merupakan palindrom.
Sebuah string disebut palindrom jika pembacaannya sama di kedua arah. Misalnya, “aba” adalah string palindromik. KelasString
tidak menyediakan metode apa pun untuk membalik string, tetapi kelas StringBuffer
memiliki StringBuilder
metode pembalikan yang dengannya kita dapat memeriksa apakah string kita merupakan palindrom atau bukan.
private static boolean isPalindrome(String str) {
if (str == null)
return false;
StringBuilder strBuilder = new StringBuilder(str);
strBuilder.reverse();
return strBuilder.toString().equals(str);
}
Terkadang pewawancara mungkin meminta untuk tidak menggunakan kelas lain untuk pemeriksaan ini, dalam hal ini kita dapat membandingkan karakter dalam string di kedua sisi untuk memeriksa palindrom.
private static boolean isPalindromeString(String str) {
if (str == null)
return false;
int length = str.length();
System.out.println(length / 2);
for (int i = 0; i < length / 2; i++) {
if (str.charAt(i) != str.charAt(length - i - 1))
return false;
}
return true;
}
4. Tulis metode untuk menghapus karakter tertentu dari sebuah string.
Kita dapat menggunakan metodereplaceAll
untuk mengganti semua kemunculan suatu string dengan string lain. Perhatikan bahwa metode ini menggunakan string sebagai argumen, jadi kita menggunakan kelas Character
untuk membuat string dari karakter, dan menggunakannya untuk mengganti semua karakter dengan string kosong.
private static String removeChar(String str, char ch) {
if (str == null)
return null;
return str.replaceAll(Character.toString(ch), "");
}
5. Bagaimana cara mengubah string menjadi huruf besar atau kecil?
Kita bisa menggunakan metode kelasString toUpperCase
untuk toLowerCace
mendapatkan string huruf besar dan kecil. Metode ini memiliki kelebihan yang mengambil argumen Locale
dan menggunakan aturan pelokalannya untuk mengubah string menjadi huruf besar atau kecil.
6. Apa yang dilakukan metode subSequence?
Java 1.4 memperkenalkan antarmukaCharSequence
, kelas String
mewarisi antarmuka ini dan itulah satu-satunya alasan untuk mengimplementasikan metode subSequence
di kelas String
. Secara internal ia memanggil substring
. Contoh sederhana penggunaan metode ini:
public class StringSubsequence {
public static void main(String[] args) {
String str = "www.journaldev.com";
System.out.println("Last 4 char String: "+str.subSequence(str.length()-4, str.length()));
System.out.println("First 4 char String: "+str.subSequence(0, 4));
System.out.println("website name: "+str.subSequence(4, 14));
//substring vs subSequence
System.out.println("substring == subSequence ? "
+(str.substring(4, 14) == str.subSequence(4, 14)));
System.out.println("substring equals subSequence ? "
+(str.substring(4, 14).equals(str.subSequence(4, 14))));
}
}
Output program akan menampilkan hal berikut:
Last 4 char String: .com
First 4 char String: www.
website name: journaldev
substring == subSequence ? false
substring equals subSequence ? true
Idealnya Anda harus selalu menggunakan substring
.
7. Bagaimana cara membandingkan dua string di Java?
KelasString
mewarisi antarmuka Comparable
dan memiliki dua opsi metode compareTo()
. Metode ini compareTo(String anotherString)
membandingkan objek String
dengan argumen yang diterima String
secara leksikografis. Jika baris saat ini mendahului string yang diterima, metode akan mengembalikan bilangan bulat negatif, dan jika string mengikuti argumen yang diterima, metode akan mengembalikan bilangan bulat positif integer
. Jika metode mengembalikan 0, maka string memiliki nilai yang sama, dalam hal ini metode equals(String str)
juga akan mengembalikan nilai true. compareToIgnoreCase(String str)
: Metode ini mirip dengan metode sebelumnya, hanya saja metode ini mengabaikan huruf besar/kecil. Ia menggunakan Komparator CASE_INSENSITIVE_ORDER untuk perbandingan peka huruf besar-kecil. Jika nilai yang dikembalikan adalah nol, maka metode tersebut equalsIgnoreCase(String str)
juga akan mengembalikan nilai true. Mari kita lihat contoh kecil untuk menjelaskan metode ini:
public class StringCompareToExample {
public static void main(String[] args) {
String str = "ABC";
System.out.println(str.compareTo("DEF"));
System.out.println(str.compareToIgnoreCase("abc"));
}
}
Program akan menampilkan keluaran berikut:
-3
0
8. Bagaimana cara mengubah string menjadi karakter dan sebaliknya?
Ini adalah pertanyaan jebakan karena string adalah rangkaian karakter, jadi kita hanya bisa mengubahnya menjadi satu karakter. Kita dapat menggunakan metodecharAt
untuk menempatkan karakter pada posisi tertentu atau kita dapat menggunakan metode toCharArray()
untuk mengubah string menjadi array karakter. Contoh sederhana yang menunjukkan cara mengubah string menjadi karakter dan karakter menjadi string di Java.
import java.util.Arrays;
public class StringToCharToString {
public static void main(String[] args) {
//String to char array
String str = "123";
char[] chArr = str.toCharArray();
System.out.println("String to char array: "+Arrays.toString(chArr));
//String to char
char c = str.charAt(1);
System.out.println("String to char: "+c);
//char to String
String s = Character.toString(c);
System.out.println("char to String: "+s);
//удалить все заданные символы из строки
System.out.println("removing all chars from String: "
+removeCharFromString("1ABCD12DW", '1'));
}
private static String removeCharFromString(String str, char c) {
return str.replaceAll(Character.toString( c ), "");
}
}
Program akan menampilkan keluaran berikut:
String to char array: [1, 2, 3]
String to char: 2
char to String: 2
removing all chars from String: ABCD2DW
9. Bagaimana cara mengubah string menjadi array byte dan sebaliknya?
Kita dapat menggunakan metodegetBytes()
untuk mengubah string menjadi array byte dan kita dapat menggunakan konstruktor new String(byte[] arr)
untuk mengubah array byte menjadi string.
import java.util.Arrays;
public class StringByteArray {
public static void main(String[] args) {
String str = "www.journaldev.com";
//преобразование String в byte array
byte[] byteArr = str.getBytes();
System.out.println("String to byte array : "+Arrays.toString(byteArr));
//преобразование byte array и String
String str1 = new String(byteArr);
System.out.println("byte array to String : "+str1);
//посмотрим, str и str1 одинаковые or нет
System.out.println("str == str1? " + (str == str1));
System.out.println("str.equals(str1)? " + (str.equals(str1)));
}
}
Program akan menampilkan keluaran berikut:
String to byte array : [119, 119, 119, 46, 106, 111, 117, 114, 110, 97, 108, 100, 101, 118, 46, 99, 111, 109]
byte array to String : www.journaldev.com
str == str1? false
str.equals(str1)? true
10. Bisakah kita menggunakan string dalam konstruksi saklar?
Pertanyaan rumit ini digunakan untuk menguji pengetahuan Anda tentang perkembangan bahasa saat ini. Java 7 memperluas pernyataan switch untuk menggunakan string; versi Java sebelumnya tidak mendukung ini. Jika Anda menerapkan aliran kondisional untuk string, Anda dapat menggunakan kondisi if-else dan Anda dapat menggunakan pernyataan switch jika Anda menggunakan Java 7 atau lebih baru. Contoh kecil penggunaan string dalam pernyataanswitch
dan metode lain yang menunjukkan logika yang sama menggunakan kondisi if-else
.
public class SwitchStringExample {
public static void main(String[] args) {
printColorUsingSwitch("red");
printColorUsingIf("red");
// оператор switch регистрозависимый
printColorUsingSwitch("RED");
printColorUsingSwitch(null);
}
private static void printColorUsingIf(String color) {
if (color.equals("blue")) {
System.out.println("BLUE");
} else if (color.equals("red")) {
System.out.println("RED");
} else {
System.out.println("INVALID COLOR CODE");
}
}
private static void printColorUsingSwitch(String color) {
switch (color) {
case "blue":
System.out.println("BLUE");
break;
case "red":
System.out.println("RED");
break;
default:
System.out.println("INVALID COLOR CODE");
}
}
}
Program akan menampilkan keluaran berikut:
RED
RED
INVALID COLOR CODE
Exception in thread "main"
java.lang.NullPointerException
at com.journaldev.util.SwitchStringExample.printColorUsingSwitch(SwitchStringExample.java:24)
at com.journaldev.util.SwitchStringExample.main(SwitchStringExample.java:10)
Poin penggunaan utama switch
untuk string di Java.
- menggunakan string dalam desain
switch
membuat kode lebih mudah dibaca dengan menghilangkan beberapa rantai kondisiif-else
. - string dalam
switch
peka huruf besar-kecil, contoh di atas menunjukkan hal ini. - Operator
switch
menggunakan metodeString.equals()
untuk membandingkan nilai yang dihasilkan dengan nilai kasus , jadi tambahkan tanda centang NULL untuk menghindarinyaNullPointerException
. - Menurut dokumentasi Java 7 untuk string di
switch
, kompiler Java menghasilkan bytecode yang lebih efisien untuk string dalam konstruksiswitch
dibandingkan untuk kondisi gabunganif-else
. - pastikan ini akan digunakan dengan Java 7 atau lebih baru, jika tidak, Anda akan mendapatkannya
xception
.
11. Tulis program yang mencetak semua permutasi sebuah string.
Ini adalah pertanyaan rumit dan kita harus menggunakan rekursi untuk menemukan semua permutasi sebuah string, misalnya permutasi “AAB” bisa berupa “AAB”, “ABA” dan “BAA”. Kita juga perlu menggunakan Set untuk memastikan kita tidak memiliki baris duplikat. Untuk mendapatkan semua permutasi, pertama-tama kita ambil karakter pertama dari string dan atur ulang karakter yang tersisa. Jika String = “ABC” Karakter pertama char = A dan sisa permutasi BC dan CB. Sekarang kita dapat memasukkan karakter pertama ke dalam posisi yang tersedia dalam permutasi. BC -> ABC, BAC, BCA CB -> ACB, CAB, CBA Contoh program:import java.util.HashSet;
import java.util.Set;
public class StringHelper {
public static Set<String> permutationFinder(String str) {
Set<String> perm = new HashSet<String>();
//Handling error scenarios
if (str == null) {
return null;
} else if (str.length() == 0) {
perm.add("");
return perm;
}
char initial = str.charAt(0); // первый символ
String rem = str.substring(1); // полная строка без первого символа
Set<String> words = permutationFinder(rem);
for (String strNew : words) {
for (int i = 0;i<=strNew.length();i++){
perm.add(charInsert(strNew, initial, i));
}
}
return perm;
}
public static String charInsert(String str, char c, int j) {
String begin = str.substring(0, j);
String end = str.substring(j);
return begin + c + end;
}
public static void main(String[] args) {
String s = "AAC";
String s1 = "ABC";
String s2 = "ABCD";
System.out.println("\nPermutations for " + s + " are: \n" + permutationFinder(s));
System.out.println("\nPermutations for " + s1 + " are: \n" + permutationFinder(s1));
System.out.println("\nPermutations for " + s2 + " are: \n" + permutationFinder(s2));
}
}
Keluaran program:
Permutations for AAC are:
[AAC, ACA, CAA]
Permutations for ABC are:
[ACB, ABC, BCA, CBA, CAB, BAC]
Permutations for ABCD are:
[DABC, CADB, BCAD, DBAC, BACD, ABCD, ABDC, DCBA, ADBC, ADCB, CBDA, CBAD, DACB, ACBD, CDBA, CDAB, DCAB, ACDB, DBCA, BDAC, CABD, BADC, BCDA, BDCA]
Kelanjutan artikel
GO TO FULL VERSION