Kelas
String
minangka salah sawijining kelas sing paling akeh digunakake ing Jawa. Artikel iki nyedhiyakake sawetara pitakonan lan jawaban wawancara String Jawa sing penting. Dheweke bakal migunani banget kanggo njupuk gambaran lengkap babagan kelas lan bakal nyiapake sampeyan kanggo pitakonan wawancara String
sing 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 minangkaimmutable
jinis data sing ora bisa diganti () lan dirampungake ing Jawa lan String
mesin virtual nyimpen kabeh obyek kelas ing blumbang senar. Fitur liyane String
yaiku cara kanggo njupuk obyek kelas String
nggunakake 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 obyekString
. Ana uga sawetara konstruktor kelas String
kanggo njupuk string saka array karakter, array byte, lan uga nggunakake StringBuffer
utawa 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 String
nanging 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. KelasString
ora menehi cara kanggo mbalikke senar, nanging kelas StringBuffer
duwe StringBuilder
metode 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 carareplaceAll
kanggo ngganti kabeh kedadean saka senar karo senar liyane. Elinga yen cara njupuk senar minangka bantahan, supaya kita nggunakake kelas Character
kanggo 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 kelasString toUpperCase
kanggo toLowerCace
njaluk loro huruf gedhe lan cilik strings. Cara kasebut duwe kakehan sing njupuk argumentasi Locale
lan nggunakake aturan lokalisasi kanggo ngowahi string dadi huruf gedhe utawa cilik.
6. Apa sing ditindakake metode subSequence?
Java 1.4 ngenalaken antarmukaCharSequence
, kelas String
marisi antarmuka lan iku mung alesan kanggo ngleksanakake cara subSequence
ing 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 kasebutString
nduweni antarmuka Comparable
lan duwe rong pilihan metode compareTo()
. Metode kasebut compareTo(String anotherString)
mbandhingake obyek String
karo argumen sing ditampa String
kanthi 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 caracharAt
kanggo 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 caragetBytes()
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 statementswitch
lan 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 switch
kanggo senar ing Jawa.
- nggunakake senar ing desain
switch
ndadekake kode luwih bisa diwaca kanthi ngilangi pirang-pirang rantai kahananif-else
. - strings ing
switch
sensitif cilik, conto ing ndhuwur nuduhake iki. - operator
switch
nggunakake caraString.equals()
kanggo mbandhingaké nilai asil karo cilik nilai , supaya nambah mriksa kanggo NULL supayaNullPointerException
. - Miturut dokumentasi Java 7 kanggo strings in
switch
, compiler Java ngasilake bytecode sing luwih efisien kanggo strings ing konstrukswitch
tinimbang kondisi concatenatedif-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
GO TO FULL VERSION