JavaRush /Blog Jawa /Random-JV /Kelas string
articles
tingkat

Kelas string

Diterbitake ing grup
  • Metode
  • Ngasilake string acak
  • Perbandingan string: equals()utawa ==?
Kelas kasebut Stringasring digunakake dening programer, mula kudu dipelajari kanthi apik. String Kelas - 1Elinga yen obyek kelas Stringora bisa diganti. Dadi yen sampeyan mikir sampeyan ngganti senar, sampeyan bener-bener nggawe senar anyar. Jawa nduweni kelas khusus StringBufferlan StringBuilderngidini owah-owahan ing senar. Kelas String, StringBuffer, StringBuilderditetepake ing paket java.lang lan kasedhiya kanthi otomatis tanpa deklarasi impor. Kabeh telung kelas ngleksanakake antarmuka CharSequence. Nggawe senar gampang banget. Contone, sampeyan bisa nindakake iki:
String aboutCat = "Кот - это звучит гордо, а если наступить на хвост, то громко";
Sampeyan bisa nggawe array saka strings:
String[] cats = {"Васька", "Barsik", "Murzik"};
Sampeyan bisa nggawe obyek kelas kosong String:
String str = new String();
Sampeyan bisa nggawe string liwat array karakter:
char[] chars = { 'c', 'a', 't' };
String str = new String(chars);
Ana uga konstruktor sing ngidini sampeyan nyetel sawetara array karakter. Sampeyan kudu nemtokake wiwitan kisaran lan jumlah karakter sing bakal digunakake:
char[] chars = {'c', 'a', 't', 'a', 'm', 'a', 'r', 'a', 'n' };
String str = new String(chars, 0, 3);
Sampeyan bisa nggawe obyek kelas Stringsaka obyek kelas StringBuffernggunakake StringBuilderkonstruktor ing ngisor iki:
String(StringBuffer an object_StrBuf)
String(StringBuilder an object_StrBuild)

Operator +lan += kanggoString

Ing basa Jawa, tandha tambah ( +) tegese panyambungan senar, kanthi tembung liya, gabungan senar.
String cat = "Кот";
String name = "Васька";
//складываем две строки и пробел между ними, чтобы слова не слиплись
String fullname = cat + " " + name; // получится Кот Васька
Yen salah siji operan ing ekspresi ngandhut string, banjur operan liyane uga kudu strings. Mulane, Jawa dhewe bisa ngirim variabel menyang perwakilan senar, sanajan dudu senar.
int digit = 4;
String paws = " лапы";
String aboutcat = digit + paws; // хотя мы складываем число и строку, но все равно получим строку
За кулисами Java за нас преобразовало число 4 в строку "4"

Format strings

Ayo nganggep kita duwe sumber daya senar:
<string name="aboutcat">У кота по имени Барсик четыре лапы, один хвост. Ему 5 лет</string>
Kanggo nampilake string iki kanthi terprogram ing unsur TextView, sampeyan bisa nggunakake kode:
TextView tvCatsInfo = (TextView)findViewById(R.id.textView1);
tvCatsInfo.setText(R.string.aboutcat);
Bayangake sampeyan duwe sawetara kucing. Sampeyan bisa, mesthi, duwe baris dhewe kanggo saben kucing. Nanging garis kasebut meh padha, mung jeneng lan umur sing diganti. Sampeyan uga bisa ngganti jumlah paws lan buntut (apa sing ngrokok?). Ing kasus kaya mengkono, sampeyan bisa nggunakake format string. Kita kudu nemtokake tembung sing bakal diganti lan ngganti karo set karakter khusus sing diwiwiti kanthi simbol persen, banjur nomer tambah siji, banjur $skanggo strings utawa $dkanggo nomer. Dadi ayo ngganti sumber string kaya iki:
<string name="aboutcat">У кота по имени %1$s %2$s лапы, %3$s хвост. Ему %4$d лет</string>
Ayo ngganti kode:
String strBarsik = "Barsik";
String strPaws = "четыре";
String strTail = "one";
int year = 5;
String strCats = getResources().getString(R.string.aboutcat);
String strFinal = String.format(strCats, strBarsik, strPaws, strTail, year);
tvCatsInfo.setText(strFinal);
Yen sampeyan duwe kucing Vaska lan umure enem taun, banjur tambahake rong variabel lan format baris kasebut
String strVaska = "Васька";
year = 6;
String strFinal = String.format(strCats, strVaska, strPaws, strTail, year);
tvCatsInfo.setText(strFinal);
Punika conto format prasaja. Elingi lan gunakake ing panggonan sing bener.

Sumber daya string

Disaranake kanggo nyimpen senar ing sumber daya. Ngakses sumber daya senar kanthi program kaya iki:
String catName = getResources().getString(R.string.barsik);

Ekstrak string saka array string ing sumber daya

Contone, sampeyan duwe array string sing ditetepake ing file strings.xml sing diarani cats_array. Banjur sampeyan bisa ngakses baris saka sumber daya kaya iki:
Resources res = getResources();
String[] cats = res.getStringArray(R.array.cats_array);

Metode

public char charAt (int index) Ngasilake karakter ing offset sing ditemtokake ing string iki. Countdown diwiwiti saka 0. Ora perlu nggunakake nilai negatif lan ora ana, dadi luwih serius. Kanggo ngekstrak pirang-pirang karakter, gunakake getChars().
String testString = "Котёнок";
char myChar = testString.charAt(2);
tv.setText(Character.toString(myChar)); // выводит третий символ - т
public int codePointAt(int index) Ngasilake karakter Unicode ing indeks sing diwenehake
String testString = "Котёнок";
int myChar = testString.codePointAt(3);
tv.setText(String.valueOf(myChar)); // возвращает 1105
public int codePointBefore(int index) Ngasilake karakter Unicode sing ndhisiki indeks sing diwenehake
String testString = "Котёнок";
int myChar = testString.codePointBefore(4);
tv.setText(String.valueOf(myChar)); // возвращает 1105
public int codePointCount(int start, int end) Ngetung jumlah karakter Unicode antarane posisi startlanend
String testString = "Котёнок";
int myChar = testString.codePointCount(0, 3);
tv.setText(String.valueOf(myChar)); // возвращает 3
public int compareTo(String string) Mbandhingake string sing ditemtokake nggunakake nilai karakter Unicode lan ngitung string sing kurang saka, padha karo, utawa luwih gedhe tinimbang sing sabanjure. Bisa digunakake kanggo ngurutake. Kasus dijupuk menyang akun. Yen strings cocog, banjur 0 bali, yen kurang saka nol, banjur nelpon senar kurang saka senar string, yen luwih saka nol, banjur nelpon senar luwih saka senar string. Tembung-tembung gedhe dilebokake ing ndhuwur tembung-tembung cilik.
String testString = "Котёнок";

if (testString.compareTo("котёнок") == 0) {
    tvInfo.setText("Строки равны");
} else {
    tvInfo.setText("Строки не равны. Возвращено"
            + testString.compareTo("котёнок")); // возвращает -32
}
Ayo ngurutake array saka strings nggunakake bubble sort.
String[] poem = { "Мы", "везём", "с", "собой", "кота" };

for (int j = 0; j < poem.length; j++) {
	for (int i = j + 1; i < poem.length; i++) {
		if (poem[i].compareTo(poem[j]) < 0) {
			String temp = poem[j];
			poem[j] = poem[i];
			poem[i] = temp;
		}
	}
	System.out.println(poem[j]);
}
Akibaté, kita entuk:
Мы
везём
кота
с
собой
Minangka sampeyan bisa ndeleng, ngganti panggonan istilah ora ngganti jumlah ngurutake kucing. public int compareToIgnoreCase (String string) Mbandhingake string sing ditemtokake nggunakake nilai karakter Unicode, ora sensitif karo huruf cilik.
String testString = "Котёнок";

if (testString.compareToIgnoreCase("котёнок") == 0) {
    tv.setText("Строки равны"); // слова одинаковы, если не учитывать регистр
} else {
    tv.setText("Строки не равны. Возвращено"
            + testString.compareTo("котёнок"));
}
public String concat (String string) Concatenates string karo string sing ditemtokake. A string anyar bali sing ngemot concatenation saka loro strings. Elinga yen jeneng metode kasebut ngemot kucing!
String testString = "Сук";
String newString = testString.concat("кот");
tv.setText(newString);
Cara nindakake fungsi sing padha karo operator +lan bisa ditulis Сук + кот. Nanging wong kucing nyata bakal nggunakake cara "kucing". public boolean contains (CharSequence cs) Nemtokake manawa senar ngemot urutan karakter ingCharSequence
String testString = "котёнок";

if(testString.contains("кот")){
    infoTextView.setText("В слове котёнок содержится слово кот!");
}
public static String copyValueOf (char[] data, int start, int length) Nggawe string anyar sing ngemot karakter sing ditemtokake saka array Datasing diwiwiti saka posisi start(nomer basis nol) dawa dawa . public static String copyValueOf(char[] data) Nggawe string anyar sing ngemot karakter saka array sing ditemtokake. Ngganti larik sawise larik wis digawe ora ngganti larik digawe. public boolean endsWith(String suffix) Priksa manawa string diakhiri karo suffix.
String str1 = "Суккот";

if(str1.endsWith("кот"))
    infoTextView.setText("Слово заканчивается на котике");
else
    infoTextView.setText("Плохое слово. Нет смысла его использовать");
public boolean equals (Object string) Mbandhingake obyek kasebut lan senar lan ngasilake bener yen senar dibandhingake padha, i.e. ngemot karakter sing padha lan ing urutan cilik-sensitif padha.
String str1 = "Кот";
String str2 = "Кошка";

if(str1.equals(str2))
    infoTextView.setText("Строки совпадают");
else
    infoTextView.setText("Строки не совпадают");
Cara kasebut ora bakal bingung karo operator ==, sing mbandhingake rong referensi obyek lan nemtokake manawa padha nuduhake conto sing padha. Waca String Comparison: equals()utawa ==? public boolean equalsIgnoreCase(String string) Mbandhingake string sing ditemtokake karo string sumber kanthi cara sing ora sensitif huruf cilik lan ngasilake bener yen padha. Rentang AZ dianggep padha karo rentang az.
String str1 = "Кот";
String str2 = "кот";

if(str1.equalsIgnoreCase(str2))
    infoTextView.setText("Строки совпадают");
else
    infoTextView.setText("Строки не совпадают");
public static String format(Locale locale, String format, Object... args)
Ngasilake string sing diformat nggunakake format sing diwenehake lan argumen sing dilokalisasi menyang ruang lingkup sing diwenehake. Contone tanggal utawa wektu
// выводим число типа float с двумя знаками после запятой
String.format("%.2f", floatValue);
Kita lem rong tembung sing katon ing baris anyar. Ing kasus iki, tembung kapindho ditampilake ing huruf gedhe.
String str1 = "Кот";
String str2 = "васька";
String strResult = String.format("%s\n%S", str1, str2);
// выводим результат в TextView
infoTextView.setText(strResult);
Ngonversi nomer menyang sistem octal.
String str1 = "8";
int inInt = Integer.parseInt(str1); // конвертируем строку в число
String strResult = String.format("(Восьмеричное meaning): %o\n", inInt);

infoTextView.setText(strResult);
Kanthi analogi, kita nampilake ing sistem heksadesimal
String str1 = "255";
int inInt = Integer.parseInt(str1);
String strResult = String.format("(Шестнадцатеричное meaning): %x\n", inInt);
// число 255 будет выведено How ff
infoTextView.setText(strResult);
Kanggo nggunakake huruf gedhe %X, banjur ffbakal FF. Kanggo nggunakake sistem desimal %d. Tanggal uga bisa ditampilake ing macem-macem cara.
Date now = new Date();
Locale locale = Locale.getDefault();
infoTextView.setText(
		String.format(locale, "%tD\n", now) + // (MM/DD/YY)
		String.format(locale, "%tF\n", now) + // (YYYY-MM-DD)
		String.format(locale, "%tr\n", now) + // Full 12-hour time
		String.format(locale, "%tz\n", now) + // Time zone GMT offset
		String.format(locale, "%tZ\n", now)); // Localized time zone bbreviation
public byte[] getBytes(String charsetName) Ngasilake string sing diformat nggunakake format sing diwenehake. public void getBytes(int start, int end, byte[] data, int index)lan overloads liyane Cara nyimpen karakter menyang Uploaded byte, alternatif kanggo getChars(). Asring digunakake nalika ngekspor string saka macem-macem sumber sing nggunakake karakter Unicode liyane. Contone, Jawa minangka standar dianggo karo karakter Unicode 16-dicokot, lan ing Internet, strings asring nggunakake 8-dicokot Unicode, ASCII, etc. public void getChars(int start, int end, char[] buffer, int index) Cara kanggo extract sawetara karakter saka senar. Sampeyan kudu nemtokake indeks wiwitan substring ( start), indeks karakter sawise pungkasan substring sing bakal diekstrak ( pungkasan ). Larik sing nampa karakter sing dipilih ana ing parameter buffer . Indeks ing larik, wiwit saka substring bakal ditulis, dilewati ing parameter indeks . Priksa manawa array cukup gedhe kanggo ngemot kabeh karakter ing substring sing ditemtokake.
String unusualCat = "Котёнок по имени Гав";
int start = 5;
int end = 12;
char[] buf = new char[end - start];
unusualCat.getChars(start, end, buf, 0);
infoTextView.setText(new String(buf));
public int hashCode() Ngasilake integer sing dadi kode hash kanggo obyek iki. public int indexOf(int c) Ngasilake nomer posisi pisanan ditemoni kanthi indeks sing ditemtokake c.
String testString = "котёнок";
// символ ё встречается в четвёртой позиции (index = 3)
infoTextView.setText(String.valueOf(testString.indexOf("ё")));
public int indexOf (int c, int start) Katon munggah indeks saka, miwiti ing posisistart
String testString = "котёнок";
// вернёт -1, так How после 5 символа буквы ё нет
infoTextView.setText(String.valueOf(testString.indexOf("ё", 4)));
public int indexOf (String string) Nggoleki senar karaktersubString
String testString = "У окошка";
infoTextView.setText(String.valueOf(testString.indexOf("кошка")));
public int indexOf (String subString, int start) Nggoleki senar karakter subStringsing diwiwiti saka posisistart
String testString = "У окошка";
infoTextView.setText(String.valueOf(testString.indexOf("кошка", 2)));
public String intern () "Hashes" string public boolean isEmpty () Priksa yen string kosong
if(catname.isEmpty()) {
    // здесь ваш code
}
Cara iki muncul ing API 9 (Android 2.1). Kanggo piranti lawas, gunakake String.length() == 0 public int lastIndexOf (String string) и другие перегруженные версии Ngasilake nomer posisi sing ditemokake pungkasan ing indeks sing ditemtokake. Contone, sampeyan bisa njaluk jeneng berkas tanpa ekstensi kaya iki:
filename.toString().substring(0, filename.getString().lastIndexOf("."));
Ing conto iki, kita entuk posisi titik pungkasan lan entuk substring sadurunge. public int length() Ngasilake dawa senar
String testString = "котёнок";
infoTextView.setText(String.valueOf(testString.length())); // возвращает 7 (семь символов)
public boolean matches(String regularExpression) Priksa manawa string cocog karo ekspresi reguler.
public int offsetByCodePoints (int index, int codePointOffset)
Ngasilake posisi sing ana ing kadohan codePointOffsetsawise posisi wiwitan sing ditemtokake dening parameter. index public boolean regionMatches (int thisStart, String string, int start, int length) Cara kasebut mbandhingake bagean string sing ditemtokake karo bagean string liyane. Sampeyan kudu nemtokake indeks awal saka sawetara baris saka obyek nelpon saka kelas String. String sing bakal dibandhingake dilewati ing parameter string. Indeks karakter sing diwiwiti saka perbandingan sing kudu ditindakake diterusake ing parameter start, lan dawa substring sing bakal dibandhingake diterusake ing parameter kasebut length. public boolean regionMatches (boolean ignoreCase, int thisStart, String string, int start, int length) Versi overloaded. Cara kasebut mbandhingake bagean senar sing ditemtokake karo bagean senar liyane, ora nggatekake kasus. public String replace(CharSequence target, CharSequence replacement) и другие перегруженные версии Ngganti karakter utawa urutan karakter targetdadireplacement
String testString = "whale";
// меняем и на о
infoTextView.setText(testString.replace("And", "о")); // возвращается кот
public String replaceAll (String regularExpression, String replacement) public String replaceFirst (String regularExpression, String replacement) Mbusak karakter pisanan nggunakake ekspresi biasa. Contone, yen sampeyan kudu mbusak nul ing wiwitan nomer 001, 007, 000024, sampeyan bisa nggunakake telpon iki.
String s = "001234-cat";
String s = s.replaceFirst ("^0*", ""); // останется 1234-cat
public String[] split (String regularExpression) и другие перегруженные версии Pisah senar dadi susunan tembung. Contone, ana string Vaska Ryzhik Murzik Barsik lan kita pengin njaluk macem-macem jeneng kucing:
String catnames = "Васька Рыжик Мурзик Барсик";
String aCats[] = catnames.split(" ");  // по пробелу
Kita entuk:
aCats[0] = Васька
aCats[1] = Рыжик
aCats[2] = Мурзик
aCats[3] = Барсик
public boolean startsWith(String prefix) Priksa manawa senar diwiwiti kanthi karakter prefixsaka wiwitan senar
String str1 = "котлета";

if(str1.startsWith("кот"))
    infoTextView.setText("Слово содержит кота");
else
    infoTextView.setText("Плохое слово. Нет смысла его использовать");
public boolean startsWith(String prefix, int start) Priksa manawa string sing diwenehake diwiwiti kanthi karakter prefixing posisi sing ditemtokake.
String str1 = "Суккот";

if(str1.startsWith("кот", 3))
    infoTextView.setText("Слово содержит кота");
else
    infoTextView.setText("Плохое слово. Нет смысла его использовать");
public CharSequence subSequence (int start, int end) Padha karo cara substring(), nanging bisa digunakake kanggo CharSequence. public String substring(int start)lan overloads liyane Nggawe urutan anyar / senar karo karakter saka senar diwenehi miwiti ing posisi startkanggo mburi baris / pungkasan karo karakter ing posisi end. Baris anyar ngandhut karakter saka startkanggo mburi - 1, supaya kita njupuk siji karakter liyane.
String testString = "скотина";

infoTextView.setText(testString.substring(1, 4)); // возвращается кот
public char[] toCharArray() Nyalin karakter ing string iki menyang array karakter. Asil sing padha bisa dipikolehi liwat getChars(). Dokumentasi ora nyaranake nggunakake metode iki, nyaranake charAt().
String unusualCat = "Котёнок по имени Гав";

char[] yomoe = unusualCat.toCharArray();
infoTextView.setText(String.valueOf(yomoe[3]));
public String toLowerCase() и другие перегруженные версии Ngonversi string menyang huruf cilik. Lokal standar ngontrol konversi. String kucing = "Kucing"; String ngisor = cat.toLowerCase(); infoTextView.setText(ngisor); public String toString () Ngasilake senar. Kanggo senar dhewe, sing dhewe wis dadi senar, mbalekake senar ora ana gunane (oh, aku mbengkongake). Nanging cara iki pancen migunani banget kanggo kelas liyane. public String toUpperCase() Ngonversi string menyang huruf gedhe. Lokal standar ngontrol konversi.
String cat = "Кот";
String upper = cat.toUpperCase();
infoTextView.setText(upper);
public String trim() Mbusak spasi ing wiwitan lan pungkasan senar.
String str = "   Hello Kitty  ".trim();
infoTextView.setText(str);
public static String valueOf(long value)lan overloads liyane Ngonversi isi (nomer, obyek, karakter, susunan karakter) kanggo senar.
int catAge = 7; // это число

infoTextView.setText(String.valueOf(catAge)); // преобразовано в строку

Ngasilake string acak

Ayo dadi ngomong kita kudu senar acak saka karakter diwenehi.
private static final String mCHAR = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
private static final int STR_LENGTH = 9; // длина генерируемой строки
Random random = new Random();

public void onClick(View view) {
    TextView infoTextView = (TextView) findViewById(R.id.textViewInfo);
    infoTextView.setText(createRandomString());
}

public String createRandomString() {
    StringBuilder builder = new StringBuilder();
    for (int i = 0; i < STR_LENGTH; i++) {
        int number = random.nextInt(mCHAR.length());
        char ch = mCHAR.charAt(number);
        builder.append(ch);
    }
    return builder.toString();
}

Perbandingan string: equals()utawa ==?

Ayo padha ndeleng conto.
String str1 = "Murzik";
String str2 = new String(str1);
boolean isCat = str1 == str2;

infoTextView.setText(str1 + " == " + str2 + " -> " + isCat);
Senajan loro variabel ngemot tembung sing padha, kita dealing karo rong obyek beda lan operator ==bakal bali false . Sawise, nalika wit gedhe, aku kudu mbandhingake rong senar saka macem-macem sumber. Senajan strings katon persis padha, comparison nggunakake operator ==bali palsu lan bingung kabeh SIM kanggo kula. Lan mung banjur aku ngerti yen aku kudu nggunakake equals(). Senar ing Jawa minangka obyek kapisah sing bisa uga ora padha karo obyek liyane, sanajan output senar kasebut katon padha ing layar. Mung Jawa, ing kasus operator logis ==(uga !=), mbandhingake referensi menyang obyek (ora ana masalah nalika nggarap primitif):
String s1 = "hello";
String s2 = "hello";
String s3 = s1;
String s4 = "h" + "e" + "l" + "l" + "o";
String s5 = new String("hello");
String s6 = new String(new char[]{'h', 'e', 'l', 'l', 'o'});

infoTextView.setText(s1 + " == " + s2 + ": " + (s1 == s2));
// попробуйте и другие варианты
// infoTextView.setText(s1 + " equals " + s2 + ": " + (s1.equals(s2)));
// infoTextView.setText(s1 + " == " + s3 + ": " + (s1 == s3));
// infoTextView.setText(s1 + " equals " + s3 + ": " + (s1.equals(s3)));
// infoTextView.setText(s1 + " == " + s4 + ": " + (s1 == s4));
// infoTextView.setText(s1 + " equals " + s4 + ": " + (s1.equals(s4)));
// infoTextView.setText(s1 + " == " + s5 + ": " + (s1 == s5)); // false
// infoTextView.setText(s1 + " equals " + s5 + ": " + (s1.equals(s5)));
// infoTextView.setText(s1 + " == " + s6 + ": " + (s1 == s6)); // false
// infoTextView.setText(s1 + " equals " + s6 + ": " + (s1.equals(s6)));
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION