JavaRush /جاوا بلاگ /Random-UR /جاوا سٹرنگ۔ انٹرویو کے سوالات اور جوابات، حصہ 1
Andrey
سطح

جاوا سٹرنگ۔ انٹرویو کے سوالات اور جوابات، حصہ 1

گروپ میں شائع ہوا۔
کلاس Stringجاوا میں سب سے زیادہ استعمال ہونے والی کلاسوں میں سے ایک ہے۔ یہ مضمون جاوا سٹرنگ انٹرویو کے کچھ اہم سوالات اور جوابات فراہم کرتا ہے۔ جاوا سٹرنگ۔  انٹرویو کے سوالات اور جوابات، حصہ 1 - 1وہ کلاس کی مکمل تصویر حاصل کرنے میں بہت مددگار ثابت ہوں گے Stringاور کلاس سے متعلق Stringانٹرویو کے کسی بھی سوال کے لیے آپ کو تیار کریں گے۔

1. جاوا میں String کیا ہے؟ یہ ڈیٹا کی کونسی قسم ہے؟

سٹرنگ جاوا میں ایک کلاس ہے جس کی تعریف java.lang پیکیج میں کی گئی ہے۔ یہ int اور long کی طرح قدیم ڈیٹا کی قسم نہیں ہے۔ سٹرنگ کلاس سٹرنگ کریکٹر سیٹ کی نمائندگی کرتی ہے۔ سٹرنگز تقریباً تمام جاوا ایپلی کیشنز میں استعمال ہوتے ہیں اور کچھ حقائق ہیں جو ہمیں String کلاس کے بارے میں جاننا چاہیے۔ یہ immutableجاوا میں ایک ناقابل تغیر ( ) اور حتمی شکل میں ڈیٹا کی قسم ہے اور Stringورچوئل مشین کلاس کی تمام اشیاء کو سٹرنگ پول میں اسٹور کرتی ہے۔ ایک اور خصوصیت ڈبل اقتباسات کا استعمال کرتے ہوئے Stringکلاس آبجیکٹ حاصل کرنے کا طریقہ ہے اور کنکٹنیشن کے لیے "+" آپریٹر کو اوور لوڈ کرنا ہے۔String

2. String آبجیکٹ بنانے کے مختلف طریقے کیا ہیں؟

ہم جاوا میں کسی دوسرے کلاس کی طرح نئے آپریٹر کا استعمال کرتے ہوئے آبجیکٹ بنا سکتے ہیں یا کسی آبجیکٹ کو بنانے کے لیے ہم ڈبل کوٹس استعمال کر سکتے ہیں String۔ Stringکریکٹر اری، بائٹ اری سے سٹرنگ حاصل کرنے اور استعمال کرنے کے لیے StringBufferبھی کئی کلاس کنسٹرکٹرز ہیں StringBuilder۔
String str = new String("abc");
String str1 = "abc";
جب ہم ڈبل کوٹس کا استعمال کرتے ہوئے ایک سٹرنگ بناتے ہیں، تو جاوا ورچوئل مشین اسی قدر والی دوسری سٹرنگ کے لیے سٹرنگ پول میں نظر آتی ہے۔ اگر سٹرنگ مل جاتی ہے، تو صرف کلاس کے کسی موجودہ آبجیکٹ کا حوالہ دیا جاتا ہے String، بصورت دیگر موصولہ قدر کے ساتھ ایک نیا آبجیکٹ بنایا جاتا ہے اور اسے پول میں محفوظ کیا جاتا ہے۔ جب ہم نیا آپریٹر استعمال کرتے ہیں تو ورچوئل مشین ایک آبجیکٹ بناتی ہے Stringلیکن اسے سٹرنگ پول میں محفوظ نہیں کرتی ہے۔ ہم سٹرنگ پول میں سٹرنگ کو ذخیرہ کرنے کے لیے طریقہ استعمال کر سکتے ہیں intern()، یا اگر ایسی سٹرنگ پول میں پہلے سے موجود ہے تو حوالہ حاصل کر سکتے ہیں۔

3. یہ چیک کرنے کے لیے ایک طریقہ لکھیں کہ آیا تار ایک پیلینڈروم ہے۔

ایک تار کو پیلینڈروم کہا جاتا ہے اگر یہ دونوں سمتوں میں ایک جیسا پڑھتا ہے۔ مثال کے طور پر، "aba" ایک پیلینڈرومک تار ہے۔ کلاس 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);
    }
بعض اوقات انٹرویو لینے والا اس چیک کے لیے دوسری کلاسوں کو استعمال نہ کرنے کے لیے کہہ سکتا ہے، ایسی صورت میں ہم پیلینڈروم کی جانچ کرنے کے لیے دونوں طرف کے سٹرنگ کے حروف کا موازنہ کر سکتے ہیں۔
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طریقہ کار کو نافذ کرنے کی واحد وجہ ہے ۔ اندرونی طور پر یہ کال کرتا ہے ۔ طریقہ استعمال کرنے کی ایک سادہ مثال: subSequenceStringsubstring
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)آبجیکٹ کا موازنہ کرتا ہے ۔ اگر موجودہ لائن موصولہ سٹرنگ سے پہلے ہے، تو طریقہ ایک منفی عدد کو لوٹاتا ہے، اور اگر سٹرنگ موصول ہونے والی دلیل کی پیروی کرتی ہے، تو یہ ایک مثبت عدد کو لوٹاتا ہے ۔ اگر طریقہ 0 لوٹاتا ہے، تو اسٹرنگ کی وہی قدر ہوتی ہے، اس صورت میں طریقہ درست بھی لوٹ آئے گا۔ : یہ طریقہ پچھلے سے ملتا جلتا ہے سوائے اس کے کہ یہ کیس کو نظر انداز کرتا ہے۔ یہ کیس غیر حساس موازنے کے لیے CASE_INSENSITIVE_ORDER Comparator کا استعمال کرتا ہے۔ اگر واپسی کی قیمت صفر ہے، تو طریقہ بھی درست ہو جائے گا۔ آئیے ان طریقوں کی وضاحت کے لیے ایک چھوٹی سی مثال دیکھتے ہیں: StringStringintegerequals(String str)compareToIgnoreCase(String str)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۔
  • سٹرنگز switchکیس حساس ہیں، اوپر دی گئی مثال اس کو ظاہر کرتی ہے۔
  • آپریٹر نتیجے میں آنے والی قدر کا کیس ویلیوز سے موازنہ کرنے کے لیے switchایک طریقہ استعمال کرتا ہے ، لہذا اس سے بچنے کے لیے NULL کے لیے ایک چیک شامل کریں ۔String.equals()NullPointerException
  • میں سٹرنگز کے لیے جاوا 7 دستاویزات کے مطابق switch، جاوا کمپائلر کنسٹرکٹ میں سٹرنگز کے لیے switchکنکیٹینٹ کنڈیشنز کے مقابلے زیادہ موثر بائٹ کوڈ تیار کرتا ہے if-else۔
  • یقینی بنائیں کہ یہ جاوا 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]
مضمون کا تسلسل
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION