ڪلاس
String
جاوا ۾ سڀ کان وڌيڪ استعمال ٿيندڙ طبقن مان هڪ آهي. هي آرٽيڪل مهيا ڪري ٿو ڪجهه اهم جاوا اسٽرنگ انٽرويو سوال ۽ جواب. اهي ڪلاس جي مڪمل تصوير حاصل ڪرڻ ۾ تمام مددگار ثابت ٿيندا String
۽ توهان کي ڪنهن به ڪلاس سان لاڳاپيل انٽرويو سوالن لاءِ تيار ڪندا String
.
1. جاوا ۾ String ڇا آھي؟ هي ڪهڙي قسم جي ڊيٽا آهي؟
اسٽرنگ جاوا ۾ ھڪڙو ڪلاس آھي جيڪو java.lang پيڪيج ۾ بيان ڪيو ويو آھي. اهو هڪ ابتدائي ڊيٽا جو قسم نه آهي جهڙوڪ int ۽ ڊگهو. اسٽرنگ ڪلاس هڪ اسٽرنگ ڪردار سيٽ جي نمائندگي ڪري ٿو. Strings تقريبن سڀني جاوا ايپليڪيشنن ۾ استعمال ڪيا ويا آهن ۽ ڪجھ حقيقتون آھن جيڪي اسان کي اسٽرنگ ڪلاس بابت ڄاڻڻ گھرجي. اهوimmutable
جاوا ۾ هڪ ناقابل تبديلي ( ) ۽ حتمي ڊيٽا جو قسم آهي ۽ String
ورچوئل مشين ڪلاس جي سڀني شين کي اسٽرنگ پول ۾ محفوظ ڪري ٿو. ٻي خصوصيت ڊبل اقتباس استعمال ڪندي String
طبقاتي شيون حاصل ڪرڻ جو طريقو آهي String
۽ "+" آپريٽر کي ڪنٽينشن لاءِ اوور لوڊ ڪندي.
2. String اعتراض ٺاهڻ جا مختلف طريقا ڪهڙا آهن؟
اسان نئين آپريٽر کي استعمال ڪندي شيون ٺاهي سگهون ٿا جهڙوڪ جاوا ۾ ڪنهن ٻئي ڪلاس وانگر يا اسان هڪ اعتراض ٺاهڻ لاء ڊبل ڪوٽس استعمال ڪري سگهون ٿاString
. اتي پڻ ڪيترائي ڪلاس ٺاھيندڙ آھن String
ھڪڙي اسٽرنگ حاصل ڪرڻ لاءِ ڪردار جي صف، ھڪڙي بائيٽ صف، ۽ پڻ استعمال ڪندي StringBuffer
يا StringBuilder
.
String str = new String("abc");
String str1 = "abc";
جڏهن اسان ڊبل اقتباس استعمال ڪندي هڪ اسٽرنگ ٺاهيندا آهيون، جاوا ورچوئل مشين اسٽرنگ پول ۾ ساڳئي قدر سان ٻي اسٽرنگ لاءِ ڏسندي آهي. جيڪڏهن اسٽرنگ ملي ٿي، ته پوء صرف ڪلاس جي هڪ موجوده اعتراض جو حوالو ڏنو ويو آهي String
، ٻي صورت ۾ هڪ نئين اعتراض حاصل ڪيل قيمت سان ٺاهي وئي آهي ۽ پول ۾ ذخيرو ٿيل آهي. جڏهن اسان نئون آپريٽر استعمال ڪريون ٿا، ورچوئل مشين هڪ اعتراض ٺاهي ٿي String
پر ان کي اسٽرنگ پول ۾ ذخيرو نٿو ڪري. اسان اهو طريقو استعمال ڪري سگهون ٿا intern()
هڪ تار کي اسٽرنگ پول ۾ ذخيرو ڪرڻ لاءِ، يا هڪ حوالو حاصل ڪري سگهون ٿا جيڪڏهن اهڙي تار اڳ ۾ ئي پول ۾ آهي.
3. هڪ طريقو لکو ته چيڪ ڪرڻ لاء ته ڇا هڪ تار هڪ palindrome آهي.
هڪ تار کي palindrome سڏيو ويندو آهي جيڪڏهن اهو ٻنهي طرفن ۾ ساڳيو پڙهي ٿو. مثال طور، "aba" هڪ palindromic تار آهي. ڪلاسString
ڪنهن به اسٽرنگ کي ريورس ڪرڻ جو ڪو طريقو مهيا نه ڪندو آهي، پر ڪلاسن وٽ هڪ ريورسنگ طريقو StringBuffer
هوندو آهي StringBuilder
جنهن سان اسين چيڪ ڪري سگهون ٿا ته ڇا اسان جي اسٽرنگ پيلنڊروم آهي يا نه.
private static boolean isPalindrome(String str) {
if (str == null)
return false;
StringBuilder strBuilder = new StringBuilder(str);
strBuilder.reverse();
return strBuilder.toString().equals(str);
}
ڪڏهن ڪڏهن انٽرويو وٺندڙ شايد پڇي سگهي ٿو ته هن چيڪ لاءِ ٻيون ڪلاسون استعمال نه ڪن، ان صورت ۾ اسان ٻنهي پاسن جي تارن جي اکرن جو مقابلو ڪري سگهون ٿا ته جيئن 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. ڏنل اکرن کي اسٽرنگ مان ڪڍڻ جو طريقو لکو.
اسان ھڪڙو طريقو استعمال ڪري سگھون ٿاreplaceAll
ھڪڙي تار جي سڀني واقعن کي ٻئي تار سان تبديل ڪرڻ لاء. ياد رکو ته طريقو هڪ اسٽرنگ کي هڪ دليل طور وٺندو آهي، تنهنڪري اسان ڪلاس کي استعمال ڪريون ٿا Character
هڪ اسٽرنگ ٺاهڻ لاءِ ڪردار مان، ۽ ان کي استعمال ڪريون ٿا سڀني اکرن کي خالي اسٽرنگ سان مٽائڻ لاءِ.
private static String removeChar(String str, char ch) {
if (str == null)
return null;
return str.replaceAll(Character.toString(ch), "");
}
5. اسان هڪ تار کي اپر ڪيس يا لوئر ڪيس ۾ ڪيئن بدلائي سگهون ٿا؟
اسان ڪلاس جا طريقا استعمال ڪري سگھون ٿا ٻئي اپر ڪيز ۽ لوئر ڪيز اسٽرنگ حاصل ڪرڻString toUpperCase
لاءِ . toLowerCace
انهن طريقن ۾ هڪ اوور لوڊ آهي جيڪو هڪ دليل وٺندو آهي Locale
۽ اسٽرنگ کي اپر يا لوئر ڪيس ۾ تبديل ڪرڻ لاءِ ان جي لوڪلائيزيشن ضابطن کي استعمال ڪندو آهي.
6. تسلسل جو طريقو ڇا ڪندو؟
جاوا 1.4 انٽرفيس متعارف ڪرايوCharSequence
، هڪ ڪلاس String
هن انٽرفيس کي ورثي ۾ ملي ٿو ۽ اهو ئي سبب آهي ته subSequence
ڪلاس ۾ هڪ طريقو لاڳو ڪرڻ جو String
. اندروني طور تي ان کي سڏي ٿو substring
. طريقو استعمال ڪرڻ جو هڪ سادي مثال:
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))));
}
}
پروگرام جي پيداوار هيٺ ڏنل ڏيکاري ويندي:
Last 4 char String: .com
First 4 char String: www.
website name: journaldev
substring == subSequence ? false
substring equals subSequence ? true
مثالي طور توهان کي هميشه استعمال ڪرڻ گهرجي substring
.
7. جاوا ۾ ٻن تارن جو مقابلو ڪيئن ڪجي؟
ڪلاسString
انٽرفيس کي ورثي ۾ ملي ٿو Comparable
۽ ٻه طريقا اختيار ڪيا آهن compareTo()
. طريقي سان compareTo(String anotherString)
اعتراض کي String
حاصل ڪيل دليلن سان String
ليڪسيگرافي طور تي موازنہ ڪري ٿو. جيڪڏهن موجوده لڪير موصول ٿيل اسٽرنگ کان اڳ آهي، طريقو هڪ منفي عدد واپس ڪري ٿو، ۽ جيڪڏهن اسٽرنگ حاصل ڪيل دليلن جي پيروي ڪري، اهو هڪ مثبت عدد واپس ڪري ٿو integer
. جيڪڏهن طريقو واپس اچي ٿو 0، ته پوءِ اسٽرنگ جو قدر ساڳيو آهي، ان صورت ۾ طريقو equals(String str)
به صحيح موٽندو. compareToIgnoreCase(String str)
: هي طريقو اڳئين سان ملندڙ جلندڙ آهي سواءِ ان جي ته اهو ڪيس نظر انداز ڪري ٿو. اهو استعمال ڪري ٿو CASE_INSENSITIVE_ORDER Comparator for case-insensitive comparison. جيڪڏهن واپسي جي قيمت صفر آهي، پوء اهو طريقو equalsIgnoreCase(String str)
به صحيح ٿيندو. اچو ته انهن طريقن جي وضاحت ڪرڻ لاء هڪ ننڍڙو مثال ڏسو:
public class StringCompareToExample {
public static void main(String[] args) {
String str = "ABC";
System.out.println(str.compareTo("DEF"));
System.out.println(str.compareToIgnoreCase("abc"));
}
}
پروگرام ھيٺ ڏنل ٻاھر ڪڍندو:
-3
0
8. هڪ اسٽرنگ کي ڪردار ۾ ڪيئن بدلجي ۽ ان جي برعڪس؟
هي هڪ چال سوال آهي ڇاڪاڻ ته هڪ اسٽرنگ اکرن جو هڪ سلسلو آهي، تنهنڪري اسان ان کي صرف هڪ واحد ڪردار ۾ تبديل ڪري سگهون ٿا. اسان هڪ طريقو استعمال ڪري سگھون ٿاcharAt
ڪردار کي حاصل ڪرڻ لاءِ مخصوص پوزيشن تي يا اسان هڪ طريقو استعمال ڪري سگهون ٿا toCharArray()
هڪ اسٽرنگ کي ڪردارن جي صف ۾ تبديل ڪرڻ لاءِ. ھڪڙو سادو مثال ڏيکاري ٿو ته ڪيئن اسٽرنگ کي ڪردار ۾ ۽ ڪردار کي اسٽرنگ ۾ جاوا ۾.
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 ), "");
}
}
پروگرام ھيٺ ڏنل ٻاھر ڪڍندو:
String to char array: [1, 2, 3]
String to char: 2
char to String: 2
removing all chars from String: ABCD2DW
9. هڪ اسٽرنگ کي بائيٽ ايري ۾ ڪيئن بدلجي ۽ ان جي برعڪس؟
اسان هڪ طريقو استعمال ڪري سگهون ٿاgetBytes()
هڪ اسٽرنگ کي بائيٽ سري ۾ تبديل ڪرڻ لاءِ ۽ اسان new String(byte[] arr)
هڪ بائيٽ سري کي اسٽرنگ ۾ تبديل ڪرڻ لاءِ تعمير ڪندڙ استعمال ڪري سگهون ٿا.
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)));
}
}
پروگرام ھيٺ ڏنل ٻاھر ڪڍندو:
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. ڇا اسان سوئچ جي تعمير ۾ اسٽرنگ استعمال ڪري سگھون ٿا؟
هي مشڪل سوال ٻوليءَ جي موجوده ترقيءَ بابت توهان جي ڄاڻ کي جانچڻ لاءِ استعمال ڪيو ويندو آهي. جاوا 7 اسٽرنگ استعمال ڪرڻ لاء سوئچ بيان کي وڌايو ؛ جاوا جا اڳوڻو نسخو هن کي سپورٽ نٿا ڪن. جيڪڏهن توهان تارن لاءِ مشروط وهڪري تي عمل ڪري رهيا آهيو، توهان استعمال ڪري سگهو ٿا if-else حالتون ۽ جيڪڏهن توهان Java 7 يا بعد ۾ استعمال ڪري رهيا آهيو ته توهان هڪ سوئچ بيان استعمال ڪري سگهو ٿا. بيان ۾ اسٽرنگ استعمال ڪرڻ جو ھڪڙو ننڍڙو مثالswitch
۽ ٻيو طريقو جيڪو ڏيکاري ٿو ساڳيو منطق استعمال ڪندي حالتن 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");
}
}
}
پروگرام ھيٺ ڏنل ٻاھر ڪڍندو:
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)
switch
جاوا ۾ تارن لاءِ اهم استعمال جا نقطا .
- ڊزائن ۾ تارن جو استعمال
switch
ڪيترن ئي زنجيرن کي ختم ڪندي ڪوڊ کي وڌيڪ پڙهڻ لائق بڻائي ٿوif-else
. - strings in
switch
case sensitive آهن، مٿي ڏنل مثال هن کي ڏيکاري ٿو. - آپريٽر
switch
هڪ طريقو استعمال ڪري ٿوString.equals()
نتيجي جي قيمت کي ڪيس جي قيمتن سان موازنہ ڪرڻ لاءِ ، ان ڪري هڪ چيڪ شامل ڪريو NULL کان بچڻ لاءِNullPointerException
. - جاوا 7 دستاويزن جي مطابق اسٽرنگ لاءِ
switch
، جاوا ڪمپلر ٺاهي ٿو وڌيڪ ڪارائتو بائيٽڪوڊ اسٽرنگز لاءِswitch
ڪنڪٽيٽيڊ حالتن جي ڀيٽ ۾if-else
. - پڪ ڪريو ته اهو استعمال ڪيو ويندو Java 7 يا بعد ۾، ٻي صورت ۾ توهان حاصل ڪندا
xception
.
11. ھڪڙو پروگرام لکو جيڪو ھڪڙي تار جي سڀني اجازتن کي پرنٽ ڪري.
هي هڪ مشڪل سوال آهي ۽ اسان کي اسٽرنگ جي سڀني اجازتن کي ڳولڻ لاءِ ريڪرشن استعمال ڪرڻو پوندو، مثال طور ”AAB“ جي اجازت ”AAB“، ”ABA“ ۽ ”BAA“ ٿي سگهي ٿي. اسان کي پڻ سيٽ استعمال ڪرڻ جي ضرورت آهي انهي کي يقيني بڻائڻ لاءِ ته اسان وٽ نقل ٿيل قطارون نه آهن. سڀني اجازتن کي حاصل ڪرڻ لاء، اسان پهريون ڀيرو اسٽرنگ جو پهريون ڪردار وٺون ٿا ۽ باقي ڪردارن کي ٻيهر ترتيب ڏيو. جيڪڏهن اسٽرنگ = "ABC" پهريون ڪردار چار = A ۽ باقي اجازتون BC ۽ CB. ھاڻي اسان اجازتن ۾ موجود پوزيشن ۾ پھريون ڪردار داخل ڪري سگھون ٿا. BC -> ABC, BAC, BCA CB -> ACB, CAB, CBA مثال پروگرام: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));
}
}
پروگرام جي پيداوار:
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]
مضمون جو تسلسل
GO TO FULL VERSION