Bu synp
String
Java-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. Synpyň doly suratyny almakda gaty peýdaly bolar String
we 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 String
wirtual 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 String
synp 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 bilerisString
. 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. SynpdaString
setiri yzyna gaýtarmak üçin hiç hili usul ýok, ýöne sapaklaryň tersine usuly StringBuffer
bar 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ň.
replaceAll
Setiriň ýü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 Character
bir 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 almakString 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 toLowerCace
artykmaçlygy bar .Locale
6. SubSequence usuly näme edýär?
Java 1.4 interfeýsi hödürlediCharSequence
, bir synp bu interfeýsi miras alýar we bu synpda String
usuly durmuşa geçirmegiň ýeke-täk sebäbi . Içerde jaň edýär . Usuly ulanmagyň ýönekeý mysaly: 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))));
}
}
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?
SynpString
interfeýsi miras alýar Comparable
we iki usul usuly bar compareTo()
. Usul compareTo(String anotherString)
obýekti leksikografiki taýdan String
alnan 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.charAt
Belgi 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 mysalyswitch
we ş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)
switch
Java-da setirler üçin esasy ulanyş nokatlary .
- dizaýnda setirleriň ulanylmagy,
switch
şertleriň köp zynjyryny aýyrmak bilen kody has okalýarif-else
. - setirler
switch
baş harplara degişlidir, ýokardaky mysal muny görkezýär. - operator, ýüze çykan bahany mysal
switch
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,
switch
konstruksiýadaky setirler üçin has täsirli kod koduny döredýär .switch
if-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
GO TO FULL VERSION