JavaRush /Blog Jawa /Random-JV /String Jawa. Pitakonan lan jawaban wawancara, part 1
Andrey
tingkat

String Jawa. Pitakonan lan jawaban wawancara, part 1

Diterbitake ing grup
Kelas Stringminangka salah sawijining kelas sing paling akeh digunakake ing Jawa. Artikel iki nyedhiyakake sawetara pitakonan lan jawaban wawancara String Jawa sing penting. String Jawa.  Pitakonan lan jawaban wawancara, bagean 1 - 1Dheweke bakal migunani banget kanggo njupuk gambaran lengkap babagan kelas lan bakal nyiapake sampeyan kanggo pitakonan wawancara Stringsing gegandhengan karo kelas .String

1. Apa sing diarani String ing basa Jawa? Apa jinis data iki?

String minangka kelas ing Jawa sing ditetepake ing paket java.lang. Iku dudu jinis data primitif kaya int lan dawa. Kelas String nggambarake set karakter string. String digunakake ing meh kabeh aplikasi Java lan ana sawetara fakta sing kudu kita ngerteni babagan kelas String. Iki minangka immutablejinis data sing ora bisa diganti () lan dirampungake ing Jawa lan Stringmesin virtual nyimpen kabeh obyek kelas ing blumbang senar. Fitur liyane Stringyaiku cara kanggo njupuk obyek kelas Stringnggunakake kuotasi kaping pindho lan overloading operator "+" kanggo concatenation.

2. Apa macem-macem cara kanggo nggawe obyek String?

Kita bisa nggawe obyek nggunakake operator anyar kaya kelas liyane ing Jawa utawa kita bisa nggunakake kuotasi pindho kanggo nggawe obyek String. Ana uga sawetara konstruktor kelas Stringkanggo njupuk string saka array karakter, array byte, lan uga nggunakake StringBufferutawa StringBuilder.
String str = new String("abc");
String str1 = "abc";
Nalika kita nggawe senar nggunakake kuotasi pindho, Jawa Virtual Machine katon ing blumbang senar kanggo senar liyane karo Nilai padha. Yen senar ditemokaké, banjur mung referensi kanggo obyek ana kelas bali String, digunakake obyek anyar digawe karo Nilai ditampa lan disimpen ing blumbang. Nalika kita nggunakake operator anyar, mesin virtual nggawe obyek Stringnanging ora nyimpen ing blumbang senar. Kita bisa nggunakake cara intern()kanggo nyimpen senar ing blumbang senar, utawa njaluk referensi yen senar kuwi wis ana ing blumbang.

3. Tulis cara kanggo mriksa apa senar iku palindrome.

Senar kasebut diarani palindrom yen diwaca padha ing loro arah. Contone, "aba" minangka senar palindromik. Kelas Stringora menehi cara kanggo mbalikke senar, nanging kelas StringBufferduwe StringBuildermetode mbalikke sing bisa dipriksa manawa senar kasebut palindrome utawa ora.
private static boolean isPalindrome(String str) {
        if (str == null)
            return false;
        StringBuilder strBuilder = new StringBuilder(str);
        strBuilder.reverse();
        return strBuilder.toString().equals(str);
    }
Kadhangkala interviewer bisa takon ora nggunakake kelas liyane kanggo mriksa iki, kang cilik kita bisa mbandhingaké karakter ing senar ing loro-lorone kanggo mriksa palindrome.
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 cara kanggo njabut karakter diwenehi saka senar.

Kita bisa nggunakake cara replaceAllkanggo ngganti kabeh kedadean saka senar karo senar liyane. Elinga yen cara njupuk senar minangka bantahan, supaya kita nggunakake kelas Characterkanggo nggawe senar saka karakter, lan digunakake kanggo ngganti kabeh karakter karo senar kosong.
private static String removeChar(String str, char ch) {
        if (str == null)
            return null;
        return str.replaceAll(Character.toString(ch), "");
    }

5. Kepiye carane kita bisa ngowahi string dadi huruf gedhe utawa huruf cilik?

Kita bisa nggunakake cara kelas String toUpperCasekanggo toLowerCacenjaluk loro huruf gedhe lan cilik strings. Cara kasebut duwe kakehan sing njupuk argumentasi Localelan nggunakake aturan lokalisasi kanggo ngowahi string dadi huruf gedhe utawa cilik.

6. Apa sing ditindakake metode subSequence?

Java 1.4 ngenalaken antarmuka CharSequence, kelas Stringmarisi antarmuka lan iku mung alesan kanggo ngleksanakake cara subSequenceing kelas String. Secara internal diarani substring. Conto prasaja nggunakake metode:
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 saka program bakal nuduhake ing ngisor iki:
Last 4 char String: .com
First 4 char String: www.
website name: journaldev
substring == subSequence ? false
substring equals subSequence ? true
Saenipun sampeyan kudu tansah nggunakake substring.

7. Kepiye carane mbandhingake rong senar ing basa Jawa?

Kelas kasebut Stringnduweni antarmuka Comparablelan duwe rong pilihan metode compareTo(). Metode kasebut compareTo(String anotherString)mbandhingake obyek Stringkaro argumen sing ditampa Stringkanthi leksikografis. Yen baris saiki ndhisiki senar ditampa, cara ngasilake integer negatif, lan yen senar nderek argumen ditampa, bakal ngasilake integer positif integer. Yen cara ngasilake 0, banjur senar kasebut nduweni nilai sing padha, lan cara kasebut equals(String str)uga bakal ngasilake bener. compareToIgnoreCase(String str): Cara iki padha karo sing sadurunge kajaba ora nglirwakake kasus. Iku nggunakake CASE_INSENSITIVE_ORDER Comparator kanggo cilik-sensitif comparison. Yen nilai bali nol, banjur cara equalsIgnoreCase(String str)uga bakal bali bener. Ayo goleki conto cilik kanggo nerangake metode kasebut:
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 kasebut bakal ngasilake ing ngisor iki:
-3
0

8. Kepiye carane ngowahi string dadi karakter lan kosok balene?

Iki minangka pitakonan trick amarga string minangka urutan karakter, mula kita mung bisa ngowahi dadi karakter siji. Kita bisa nggunakake cara charAtkanggo njaluk karakter dumunung ing posisi tartamtu utawa kita bisa nggunakake cara toCharArray()kanggo ngowahi string menyang Uploaded karakter. Conto prasaja sing nuduhake carane ngowahi senar dadi karakter lan karakter dadi senar ing Jawa.
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 kasebut bakal ngasilake ing ngisor iki:
String to char array: [1, 2, 3]
String to char: 2
char to String: 2
removing all chars from String: ABCD2DW

9. Carane ngowahi string menyang array byte lan kosok balene?

Kita bisa nggunakake cara getBytes()kanggo ngowahi string menyang array byte lan kita bisa nggunakake konstruktor new String(byte[] arr)kanggo ngowahi array byte menyang 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 kasebut bakal ngasilake ing ngisor iki:
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. Kita bisa nggunakake senar ing mbangun ngalih?

Pitakonan rumit iki digunakake kanggo nguji kawruh babagan perkembangan basa saiki. Java 7 ngluwihi statement switch kanggo nggunakake strings; versi Java sadurungé ora ndhukung iki. Yen sampeyan ngleksanakake aliran kondisional kanggo strings, sampeyan bisa nggunakake kahanan yen-liyane lan sampeyan bisa nggunakake statement ngalih yen sampeyan nggunakake Jawa 7 utawa mengko. Conto cilik nggunakake senar ing statement switchlan cara liyane sing nuduhake logika padha nggunakake kahanan 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 kasebut bakal ngasilake ing ngisor iki:
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)
Titik panggunaan kunci switchkanggo senar ing Jawa.
  • nggunakake senar ing desain switchndadekake kode luwih bisa diwaca kanthi ngilangi pirang-pirang rantai kahanan if-else.
  • strings ing switchsensitif cilik, conto ing ndhuwur nuduhake iki.
  • operator switchnggunakake cara String.equals()kanggo mbandhingaké nilai asil karo cilik nilai , supaya nambah mriksa kanggo NULL supaya NullPointerException.
  • Miturut dokumentasi Java 7 kanggo strings in switch, compiler Java ngasilake bytecode sing luwih efisien kanggo strings ing konstruk switchtinimbang kondisi concatenated if-else.
  • priksa manawa iki bakal digunakake karo Jawa 7 utawa mengko, digunakake sampeyan bakal entuk xception.

11. Tulis program sing prints kabeh permutasi saka senar.

Iki minangka pitakonan sing angel lan kita kudu nggunakake rekursi kanggo nemokake kabeh permutasi senar, contone permutasi "AAB" bisa dadi "AAB", "ABA" lan "BAA". Kita uga kudu nggunakake Set kanggo mesthekake yen kita ora duwe duplikat baris. Kanggo entuk kabeh permutasi, kita njupuk karakter pisanan saka senar lan ngatur maneh karakter sing isih ana. Yen String = "ABC" Karakter pisanan char = A lan permutasi isih BC lan CB. Saiki kita bisa nglebokake karakter pisanan menyang posisi sing kasedhiya ing 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));
    }
}
Output 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]
Lanjutan saka artikel
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION