- Metode
- Ngasilake string acak
- Perbandingan string:
equals()
utawa ==
?
Kelas kasebut
String
asring digunakake dening programer, mula kudu dipelajari kanthi apik.
Elinga yen obyek kelas
String
ora bisa diganti. Dadi yen sampeyan mikir sampeyan ngganti senar, sampeyan bener-bener nggawe senar anyar. Jawa nduweni kelas khusus
StringBuffer
lan
StringBuilder
ngidini owah-owahan ing senar. Kelas
String
,
StringBuffer
,
StringBuilder
ditetepake 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
String
saka obyek kelas
StringBuffer
nggunakake
StringBuilder
konstruktor 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
$s
kanggo strings utawa
$d
kanggo 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));
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));
public int codePointCount(int start, int end)
Ngetung jumlah karakter Unicode antarane posisi
start
lan
end
String testString = "Котёнок";
int myChar = testString.codePointCount(0, 3);
tv.setText(String.valueOf(myChar));
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("котёнок"));
}
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 ing
CharSequence
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
Data
sing 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
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);
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);
infoTextView.setText(strResult);
Kanggo nggunakake huruf gedhe
%X
, banjur
ff
bakal
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) +
String.format(locale, "%tF\n", now) +
String.format(locale, "%tr\n", now) +
String.format(locale, "%tz\n", now) +
String.format(locale, "%tZ\n", now));
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 = "котёнок";
infoTextView.setText(String.valueOf(testString.indexOf("ё")));
public int indexOf (int c, int start)
Katon munggah indeks saka, miwiti ing posisi
start
String testString = "котёнок";
infoTextView.setText(String.valueOf(testString.indexOf("ё", 4)));
public int indexOf (String string)
Nggoleki senar karakter
subString
String testString = "У окошка";
infoTextView.setText(String.valueOf(testString.indexOf("кошка")));
public int indexOf (String subString, int start)
Nggoleki senar karakter
subString
sing diwiwiti saka posisi
start
String testString = "У окошка";
infoTextView.setText(String.valueOf(testString.indexOf("кошка", 2)));
public String intern ()
"Hashes" string
public boolean isEmpty ()
Priksa yen string kosong
if(catname.isEmpty()) {
}
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()));
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
codePointOffset
sawise 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
target
dadi
replacement
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*", "");
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
prefix
saka 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
prefix
ing 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
start
kanggo mburi baris / pungkasan karo karakter ing posisi
end
. Baris anyar ngandhut karakter saka
start
kanggo 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));
GO TO FULL VERSION