JavaRush /Java Blog /Random-ID /String Jawa. Pertanyaan dan jawaban wawancara, bagian 1
Andrey
Level 26

String Jawa. Pertanyaan dan jawaban wawancara, bagian 1

Dipublikasikan di grup Random-ID
Kelas Stringadalah salah satu kelas yang paling banyak digunakan di Java. Artikel ini memberikan beberapa pertanyaan dan jawaban wawancara Java String yang penting. String Jawa.  Pertanyaan dan jawaban wawancara, bagian 1 - 1Mereka akan sangat membantu dalam mendapatkan gambaran lengkap tentang kelas Stringdan 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 adalah immutabletipe data yang tidak dapat diubah ( ) dan diselesaikan di Java dan Stringmesin virtual menyimpan semua objek kelas dalam kumpulan string. Fitur lainnya Stringadalah cara untuk mendapatkan objek kelas Stringmenggunakan 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 objek String. Ada juga beberapa konstruktor kelas Stringuntuk mendapatkan string dari array karakter, array byte, dan juga menggunakan StringBufferor 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 Stringtetapi 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. Kelas Stringtidak menyediakan metode apa pun untuk membalik string, tetapi kelas StringBuffermemiliki StringBuildermetode 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 metode replaceAlluntuk mengganti semua kemunculan suatu string dengan string lain. Perhatikan bahwa metode ini menggunakan string sebagai argumen, jadi kita menggunakan kelas Characteruntuk 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 kelas String toUpperCaseuntuk toLowerCacemendapatkan string huruf besar dan kecil. Metode ini memiliki kelebihan yang mengambil argumen Localedan menggunakan aturan pelokalannya untuk mengubah string menjadi huruf besar atau kecil.

6. Apa yang dilakukan metode subSequence?

Java 1.4 memperkenalkan antarmuka CharSequence, kelas Stringmewarisi antarmuka ini dan itulah satu-satunya alasan untuk mengimplementasikan metode subSequencedi 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?

Kelas Stringmewarisi antarmuka Comparabledan memiliki dua opsi metode compareTo(). Metode ini compareTo(String anotherString)membandingkan objek Stringdengan argumen yang diterima Stringsecara 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 metode charAtuntuk 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 metode getBytes()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 pernyataan switchdan 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 switchuntuk string di Java.
  • menggunakan string dalam desain switchmembuat kode lebih mudah dibaca dengan menghilangkan beberapa rantai kondisi if-else.
  • string dalam switchpeka huruf besar-kecil, contoh di atas menunjukkan hal ini.
  • Operator switchmenggunakan metode String.equals()untuk membandingkan nilai yang dihasilkan dengan nilai kasus , jadi tambahkan tanda centang NULL untuk menghindarinya NullPointerException.
  • Menurut dokumentasi Java 7 untuk string di switch, kompiler Java menghasilkan bytecode yang lebih efisien untuk string dalam konstruksi switchdibandingkan untuk kondisi gabungan if-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
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION