JavaRush /Java Blog /Random-TK /Java setiri. Soraglar we jogaplar, 1-nji bölüm
Andrey
Dereje

Java setiri. Soraglar we jogaplar, 1-nji bölüm

Toparda çap edildi
Bu synp StringJava-da iň köp ulanylýan sapaklaryň biridir. Bu makalada käbir möhüm Java String söhbetdeşlik soraglary we jogaplary berilýär. Java setiri.  Soraglar we jogaplar, 1-nji bölümSynpyň doly suratyny almakda gaty peýdaly bolar Stringwe synp bilen baglanyşykly islendik sorag soragyna taýýarlanar String.

1. Java-da setir näme? Bu haýsy maglumat görnüşi?

Setir Java-da java.lang paketinde kesgitlenen synpdyr. Int we uzyn ýaly başlangyç maglumat görnüşi däl. Setir synpy setir simwol toplumyny aňladýar. Setirler Java programmalarynyň hemmesinde diýen ýaly ulanylýar we String synpy barada bilmeli birnäçe fakt bar. Java-da üýtgewsiz ( immutable) we gutarnykly maglumat görnüşidir we Stringwirtual maşyn synpyň ähli obýektlerini simli howuzda saklaýar. Beýleki bir aýratynlyk, goşa dyrnaklary ulanyp, birleşdirmek üçin “+” operatory artykmaç ýüklemek arkaly Stringsynp obýektlerini almagyň usulydyr .String

2. Setir obýektini döretmegiň dürli ýollary haýsylar?

Java-daky beýleki synplar ýaly täze operatory ulanyp obýektler döredip bileris ýa-da obýekt döretmek üçin goşa sitata ulanyp bileris String. StringŞeýle hem , simwol massiwinden, baýt massiwinden setir almak, şeýle hem ulanmak StringBufferýa-da ulanmak üçin birnäçe synp gurluşykçylary bar StringBuilder.
String str = new String("abc");
String str1 = "abc";
Iki goşa sitat ulanyp, bir setir döredenimizde, Java Wirtual Machine şol bir gymmaty bolan başga bir setir üçin setir howuzyna seredýär. Eger setir tapylsa, diňe synpyň bar bolan obýektine salgylanma yzyna gaýtarylýar String, ýogsam alnan baha bilen täze obýekt döredilýär we howuzda saklanýar. Täze operatory ulananymyzda, wirtual maşyn bir obýekt döredýär String, ýöne ony simli howuzda saklamaýar. Usuly simli howuzda saklamak üçin ulanyp bileris intern()ýa-da şeýle setir eýýäm howuzda bolsa, salgylanma alyp bileris.

3. Setiriň palindromdygyny ýa-da ýokdugyny barlamak üçin usul ýazyň.

Setir iki tarapa-da birmeňzeş okalsa palindrom diýilýär. Mysal üçin, “aba” palindrom simdir. Synpda Stringsetiri yzyna gaýtarmak üçin hiç hili usul ýok, ýöne sapaklaryň tersine usuly StringBufferbar StringBuilder, bu setirimiziň palindromdygyny ýa-da ýokdugyny barlap bileris.
private static boolean isPalindrome(String str) {
        if (str == null)
            return false;
        StringBuilder strBuilder = new StringBuilder(str);
        strBuilder.reverse();
        return strBuilder.toString().equals(str);
    }
Käwagt söhbetdeş bu barlag üçin beýleki synplary ulanmazlygy haýyş edip biler, bu ýagdaýda palindromy barlamak üçin iki tarapdaky setirdäki nyşanlary deňeşdirip bileris.
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. Berlen simwoly setirden aýyrmagyň usulyny ýazyň.

replaceAllSetiriň ýüze çykan zatlaryny başga bir setir bilen çalyşmak üçin usul ulanyp bileris . Usulyň argument hökmünde bir setir alýandygyna üns beriň, şonuň üçin synpdan Characterbir simwoldan bir setir döretmek we ähli nyşanlary boş setir bilen çalyşmak üçin ulanýarys.
private static String removeChar(String str, char ch) {
        if (str == null)
            return null;
        return str.replaceAll(Character.toString(ch), "");
    }

5. Setiri baş harplara ýa-da kiçi harplara nädip öwrüp bileris?

Baş we kiçi harplary almak String toUpperCaseüçin synp usullaryny ulanyp bileris . Bu usullaryň argumenti alýan we setiri ýokarky ýa-da kiçi harplara öwürmek üçin lokalizasiýa düzgünlerini ulanýan toLowerCaceartykmaçlygy bar .Locale

6. SubSequence usuly näme edýär?

Java 1.4 interfeýsi hödürledi CharSequence, bir synp bu interfeýsi miras alýar we bu synpda Stringusuly durmuşa geçirmegiň ýeke-täk sebäbi . Içerde jaň edýär . Usuly ulanmagyň ýönekeý mysaly: 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))));
    }
}
Programmanyň netijesi aşakdakylary görkezer:
Last 4 char String: .com
First 4 char String: www.
website name: journaldev
substring == subSequence ? false
substring equals subSequence ? true
Iň gowusy, elmydama ulanmaly substring.

7. Java-da iki setiri nädip deňeşdirmeli?

Synp Stringinterfeýsi miras alýar Comparablewe iki usul usuly bar compareTo(). Usul compareTo(String anotherString)obýekti leksikografiki taýdan Stringalnan argument bilen deňeşdirýär String. Häzirki setir alnan setirden öň bolsa, usul otrisatel bitewi san yzyna gaýtarylýar we setir alnan argumente eýerýän bolsa, polo positiveitel bitewi san getirýär integer. Usul 0 gaýdyp gelse, setiriň şol bir gymmaty bar, bu ýagdaýda usul equals(String str)hem hakyky bolar. compareToIgnoreCase(String str): Bu usul, işe ähmiýet bermeýäninden başga öňki usul bilen meňzeýär. Case duýgur bolmadyk deňeşdirme üçin CASE_INSENSITIVE_ORDER deňeşdiriji ulanýar. Yza gaýtaryş gymmaty nol bolsa, usul equalsIgnoreCase(String str)hem hakyky bolar. Bu usullary düşündirmek üçin kiçijik bir meselä seredeliň:
public class StringCompareToExample {
    public static void main(String[] args) {
        String str = "ABC";
        System.out.println(str.compareTo("DEF"));
        System.out.println(str.compareToIgnoreCase("abc"));
    }
}
Programma aşakdakylary çykarar:
-3
0

8. Setiri nyşanlara we tersine nädip öwürmeli?

Bu hileli sorag, sebäbi setir nyşanlaryň yzygiderliligi, şonuň üçin ony diňe bir nyşanlara öwrüp bileris. charAtBelgi belli bir ýerde ýerleşdirmek üçin bir usul ulanyp bileris ýa-da toCharArray()setiri simwollaryň hataryna öwürmek usulyny ulanyp bileris. Java-da setiri nyşanlara we nyşanlara nädip öwürmelidigini görkezýän ýönekeý mysal.
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 ), "");
    }
}
Programma aşakdakylary çykarar:
String to char array: [1, 2, 3]
String to char: 2
char to String: 2
removing all chars from String: ABCD2DW

9. Setiri baýt massiwine we tersine nädip öwürmeli?

getBytes()Setiri baýt massiwine öwürmek usulyny ulanyp bileris we new String(byte[] arr)baýt massiwini setire öwürmek üçin konstruktor ulanyp bileris.
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)));
    }
}
Programma aşakdakylary çykarar:
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. Wyklýuçatel konstruksiýasynda sim ulanyp bilerismi?

Bu kyn sorag, diliň häzirki ösüşi baradaky bilimleriňizi barlamak üçin ulanylýar. Java 7 setirleri ulanmak üçin wyklýuçatel beýanyny uzadýar , Java-yň öňki wersiýalary muny goldamaýar. Setirler üçin şertli akymy amala aşyrýan bolsaňyz, başga şertleri ulanyp bilersiňiz we Java 7 ýa-da has soňraky ulanýan bolsaňyz, wyklýuçatel sözlemini ulanyp bilersiňiz. Beýanatda setiri ulanmagyň kiçijik mysaly switchwe şertleri ulanyp şol bir logikany görkezýän başga bir usul 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");
        }
    }
}
Programma aşakdakylary çykarar:
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)
switchJava-da setirler üçin esasy ulanyş nokatlary .
  • dizaýnda setirleriň ulanylmagy, switchşertleriň köp zynjyryny aýyrmak bilen kody has okalýar if-else.
  • setirler switchbaş harplara degişlidir, ýokardaky mysal muny görkezýär.
  • operator, ýüze çykan bahany mysalswitch bahalary bilen deňeşdirmek üçin bir usul ulanýar , şonuň üçin NULL-dan gaça durmak üçin çek goşuň .String.equals()NullPointerException
  • Setirler üçin Java 7 resminamalaryna görä , Java düzüjisi , birleşdirilen şertlere garanyňda, switchkonstruksiýadaky setirler üçin has täsirli kod koduny döredýär .switchif-else
  • munuň Java 7 ýa-da has soň ulanyljakdygyna göz ýetiriň, ýogsam alarsyňyz xception.

11. Setiriň ähli permutasiýalaryny çap edýän programma ýazyň.

Bu gaty kyn sorag we setiriň ähli permutasiýalaryny tapmak üçin gaýtalanmagy ulanmaly bolýarys, mysal üçin “AAB” permutasiýalary “AAB”, “ABA” we “BAA” bolup biler. Şeýle hem, gaýtalanýan hatarlaryň ýokdugyna göz ýetirmek üçin Set ulanmalydyrys. Allhli permutasiýalary almak üçin ilki setiriň birinji harpyny alýarys we galan nyşanlary täzeden düzýäris. Eger String = “ABC” Birinji nyşan char = A we BC we CB galan permutasiýa. Indi permutasiýalarda bar bolan pozisiýalara birinji nyşan goýup bileris. BC -> ABC, BAC, BCA CB -> ACB, CAB, CBA Mysal programmasy:
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));
    }
}
Programmanyň çykyşy:
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]
Makalanyň dowamy
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION