- Metode
- Menghasilkan string acak
- Perbandingan string:
equals()
atau ==
?
Kelas ini
String
sangat sering digunakan oleh programmer, sehingga harus dipelajari dengan baik.
Ingatlah bahwa objek kelas
String
tidak dapat diubah. Jadi ketika Anda berpikir Anda sedang mengubah sebuah string, Anda sebenarnya sedang membuat string baru. Java memiliki kelas khusus
StringBuffer
dan
StringBuilder
memungkinkan perubahan pada string. Kelas
String
,
StringBuffer
,
StringBuilder
didefinisikan dalam paket
java.lang dan tersedia secara otomatis tanpa deklarasi impor. Ketiga kelas mengimplementasikan antarmuka
CharSequence
. Membuat string sangat sederhana. Misalnya, Anda dapat melakukan ini:
String aboutCat = "Кот - это звучит гордо, а если наступить на хвост, то громко";
Anda dapat membuat array string:
String[] cats = {"Васька", "Barsik", "Murzik"};
Anda dapat membuat objek kelas kosong
String
:
String str = new String();
Anda dapat membuat string melalui array karakter:
char[] chars = { 'c', 'a', 't' };
String str = new String(chars);
Ada juga konstruktor yang memungkinkan Anda mengatur rentang array karakter. Anda perlu menentukan awal rentang dan jumlah karakter yang akan digunakan:
char[] chars = {'c', 'a', 't', 'a', 'm', 'a', 'r', 'a', 'n' };
String str = new String(chars, 0, 3);
Anda dapat membuat objek kelas
String
dari objek kelas
StringBuffer
menggunakan
StringBuilder
konstruktor berikut:
String(StringBuffer an object_StrBuf)
String(StringBuilder an object_StrBuild)
Operator +
dan += untukString
Di Java, tanda tambah (
+
) berarti penggabungan string, dengan kata lain menggabungkan string.
String cat = "Кот";
String name = "Васька";
String fullname = cat + " " + name;
Jika salah satu operan dalam suatu ekspresi berisi string, maka operan lainnya juga harus berupa string. Oleh karena itu, Java sendiri dapat memasukkan variabel ke representasi string, meskipun variabel tersebut bukan string.
int digit = 4;
String paws = " лапы";
String aboutcat = digit + paws;
За кулисами Java за нас преобразовало число 4 в строку "4"
Memformat string
Anggaplah kita memiliki sumber daya string:
<string name="aboutcat">У кота по имени Барсик четыре лапы, один хвост. Ему 5 лет</string>
Untuk menampilkan string ini secara terprogram di elemen
TextView
, Anda dapat menggunakan kode:
TextView tvCatsInfo = (TextView)findViewById(R.id.textView1);
tvCatsInfo.setText(R.string.aboutcat);
Bayangkan Anda mempunyai beberapa kucing. Tentu saja Anda dapat memiliki garis sendiri untuk setiap kucing. Namun garisnya sangat mirip, hanya nama dan umurnya saja yang berubah. Anda juga dapat mengubah jumlah kaki dan ekornya (apa yang Anda hisap?). Dalam kasus seperti ini, Anda dapat menerapkan pemformatan string. Kita perlu menentukan kata-kata yang akan kita ubah dan menggantinya dengan sekumpulan karakter khusus yang dimulai dengan simbol persen, lalu angka bertambah satu, lalu
$s
untuk string atau
$d
angka. Jadi mari kita ubah sumber daya string kita seperti ini:
<string name="aboutcat">У кота по имени %1$s %2$s лапы, %3$s хвост. Ему %4$d лет</string>
Mari kita ubah kodenya:
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);
Jika Anda memiliki kucing Vaska dan dia berumur enam tahun, tambahkan dua variabel dan format garisnya
String strVaska = "Васька";
year = 6;
String strFinal = String.format(strCats, strVaska, strPaws, strTail, year);
tvCatsInfo.setText(strFinal);
Berikut ini contoh pemformatan sederhana. Ingatlah dan gunakan di tempat yang tepat.
Sumber daya string
Dianjurkan untuk menyimpan string dalam sumber daya. Mengakses sumber daya string secara terprogram dilakukan seperti ini:
String catName = getResources().getString(R.string.barsik);
Ekstrak string dari array string di sumber daya
Katakanlah Anda memiliki array string yang ditentukan dalam file
strings.xml bernama
cats_array
. Kemudian Anda dapat mengakses baris dari sumber daya seperti ini:
Resources res = getResources();
String[] cats = res.getStringArray(R.array.cats_array);
Metode
public char charAt (int index)
Mengembalikan karakter pada offset yang ditentukan dalam string ini. Hitung mundur dimulai dari 0. Tidak perlu menggunakan nilai negatif dan tidak ada, lebih serius lagi. Untuk mengekstrak banyak karakter, gunakan
getChars()
.
String testString = "Котёнок";
char myChar = testString.charAt(2);
tv.setText(Character.toString(myChar));
public int codePointAt(int index)
Mengembalikan karakter Unicode pada indeks yang diberikan
String testString = "Котёнок";
int myChar = testString.codePointAt(3);
tv.setText(String.valueOf(myChar));
public int codePointBefore(int index)
Mengembalikan karakter Unicode yang mendahului indeks tertentu
String testString = "Котёнок";
int myChar = testString.codePointBefore(4);
tv.setText(String.valueOf(myChar));
public int codePointCount(int start, int end)
Menghitung jumlah karakter Unicode antara posisi
start
dan
end
String testString = "Котёнок";
int myChar = testString.codePointCount(0, 3);
tv.setText(String.valueOf(myChar));
public int compareTo(String string)
Membandingkan string yang ditentukan menggunakan nilai karakter Unicode dan menghitung string mana yang lebih kecil, sama dengan, atau lebih besar dari string berikutnya. Dapat digunakan untuk menyortir. Kasus diperhitungkan. Jika string cocok, maka 0 dikembalikan, jika kurang dari nol, maka string pemanggil lebih kecil dari string
string
, jika lebih besar dari nol, maka string pemanggil lebih besar dari string
string
. Kata dengan huruf besar ditempatkan di atas kata dengan huruf kecil.
String testString = "Котёнок";
if (testString.compareTo("котёнок") == 0) {
tvInfo.setText("Строки равны");
} else {
tvInfo.setText("Строки не равны. Возвращено"
+ testString.compareTo("котёнок"));
}
Mari kita urutkan array string menggunakan 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]);
}
Hasilnya kita mendapatkan:
Мы
везём
кота
с
собой
Seperti yang Anda lihat,
mengubah tempat suku tidak mengubah jumlah penyortiran kucing.
public int compareToIgnoreCase (String string)
Membandingkan string yang ditentukan menggunakan nilai karakter Unicode, tidak peka terhadap huruf besar-kecil.
String testString = "Котёнок";
if (testString.compareToIgnoreCase("котёнок") == 0) {
tv.setText("Строки равны");
} else {
tv.setText("Строки не равны. Возвращено"
+ testString.compareTo("котёнок"));
}
public String concat (String string)
Menggabungkan string dengan string yang ditentukan. Sebuah string baru dikembalikan yang berisi gabungan dua string. Perhatikan bahwa nama metode itu sendiri mengandung kucing!
String testString = "Сук";
String newString = testString.concat("кот");
tv.setText(newString);
Metode ini menjalankan fungsi yang sama dengan operator
+
dan dapat ditulis
Сук + кот
. Namun pecinta kucing sejati akan menggunakan metode "kucing".
public boolean contains (CharSequence cs)
Menentukan apakah suatu string berisi urutan karakter di dalamnya
CharSequence
String testString = "котёнок";
if(testString.contains("кот")){
infoTextView.setText("В слове котёнок содержится слово кот!");
}
public static String copyValueOf (char[] data, int start, int length)
Membuat string baru yang berisi karakter tertentu dari array
Data
yang dimulai dari posisi
start
(penomoran berbasis nol) dengan
panjang length .
public static String copyValueOf(char[] data)
Membuat string baru yang berisi karakter dari array yang ditentukan. Mengubah array setelah baris dibuat tidak mengubah baris yang dibuat.
public boolean endsWith(String suffix)
Memeriksa apakah suatu string diakhiri dengan
suffix
.
String str1 = "Суккот";
if(str1.endsWith("кот"))
infoTextView.setText("Слово заканчивается на котике");
else
infoTextView.setText("Плохое слово. Нет смысла его использовать");
public boolean equals (Object string)
Membandingkan objek yang ditentukan dan string dan mengembalikan
nilai true jika string yang dibandingkan sama, mis. berisi karakter yang sama dan dalam urutan peka huruf besar-kecil yang sama.
String str1 = "Кот";
String str2 = "Кошка";
if(str1.equals(str2))
infoTextView.setText("Строки совпадают");
else
infoTextView.setText("Строки не совпадают");
Metodenya berbeda dengan operator
==
, yang membandingkan dua referensi objek dan menentukan apakah keduanya merujuk ke instance yang sama. Lihat Perbandingan String:
equals()
atau
==
?
public boolean equalsIgnoreCase(String string)
Membandingkan string yang ditentukan dengan string sumber dengan cara yang tidak peka huruf besar-kecil dan mengembalikan nilai
true jika keduanya sama. Rentang AZ dianggap sama dengan 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)
Mengembalikan string yang diformat menggunakan format yang disediakan dan argumen yang dilokalkan ke cakupan tertentu. Misalnya tanggal atau waktu
String.format("%.2f", floatValue);
Kami merekatkan dua kata yang muncul di baris baru. Dalam hal ini, kata kedua ditampilkan dalam huruf besar.
String str1 = "Кот";
String str2 = "васька";
String strResult = String.format("%s\n%S", str1, str2);
infoTextView.setText(strResult);
Ubahlah bilangan tersebut menjadi sistem oktal.
String str1 = "8";
int inInt = Integer.parseInt(str1);
String strResult = String.format("(Восьмеричное meaning): %o\n", inInt);
infoTextView.setText(strResult);
Dengan analogi, kami menampilkannya dalam sistem heksadesimal
String str1 = "255";
int inInt = Integer.parseInt(str1);
String strResult = String.format("(Шестнадцатеричное meaning): %x\n", inInt);
infoTextView.setText(strResult);
Untuk penggunaan huruf besar
%X
, maka
ff
akan menjadi
FF
. Untuk penggunaan sistem desimal
%d
. Tanggal juga dapat ditampilkan dengan berbagai 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)
Mengembalikan string yang diformat menggunakan format yang disediakan.
public void getBytes(int start, int end, byte[] data, int index)
dan kelebihan beban lainnya Metode ini menyimpan karakter ke dalam array byte, sebuah alternatif dari array
getChars()
. Sering digunakan saat mengekspor string dari berbagai sumber yang menggunakan karakter Unicode lain. Misalnya, Java secara default bekerja dengan karakter Unicode 16-bit, dan di Internet, string sering kali menggunakan Unicode 8-bit, ASCII, dll.
public void getChars(int start, int end, char[] buffer, int index)
Metode untuk mengekstraksi banyak karakter dari sebuah string. Anda perlu menentukan indeks awal substring (
start
), indeks karakter setelah akhir substring yang akan diekstraksi ( end ). Array yang menerima karakter yang dipilih ada di parameter
buffer . Indeks dalam array, mulai dari mana substring akan ditulis, diteruskan dalam parameter
indeks . Pastikan array cukup besar untuk menampung semua karakter dalam substring yang ditentukan.
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()
Mengembalikan bilangan bulat yang merupakan kode hash untuk objek ini.
public int indexOf(int c)
Mengembalikan nomor posisi yang pertama kali ditemui dengan indeks yang ditentukan c.
String testString = "котёнок";
infoTextView.setText(String.valueOf(testString.indexOf("ё")));
public int indexOf (int c, int start)
Mencari indeks dari, mulai dari posisi
start
String testString = "котёнок";
infoTextView.setText(String.valueOf(testString.indexOf("ё", 4)));
public int indexOf (String string)
Mencari serangkaian karakter
subString
String testString = "У окошка";
infoTextView.setText(String.valueOf(testString.indexOf("кошка")));
public int indexOf (String subString, int start)
Mencari string karakter
subString
yang dimulai dari posisi
start
String testString = "У окошка";
infoTextView.setText(String.valueOf(testString.indexOf("кошка", 2)));
public String intern ()
"Hash" sebuah string
public boolean isEmpty ()
Memeriksa apakah string tersebut kosong
if(catname.isEmpty()) {
}
Metode ini muncul di API 9 (Android 2.1). Untuk perangkat yang lebih lama, gunakan
String.length() == 0
public int lastIndexOf (String string) и другие перегруженные версии
Mengembalikan jumlah posisi yang terakhir ditemukan pada indeks yang ditentukan. Misalnya, Anda bisa mendapatkan nama file tanpa ekstensi seperti ini:
filename.toString().substring(0, filename.getString().lastIndexOf("."));
Dalam contoh ini, kita mendapatkan posisi titik terakhir dan mendapatkan substring sebelumnya.
public int length()
Mengembalikan panjang string
String testString = "котёнок";
infoTextView.setText(String.valueOf(testString.length()));
public boolean matches(String regularExpression)
Memeriksa apakah suatu string cocok dengan ekspresi reguler.
public int offsetByCodePoints (int index, int codePointOffset)
Mengembalikan posisi yang terletak pada jarak
codePointOffset
setelah posisi awal yang ditentukan oleh parameter.
index
public boolean regionMatches (int thisStart, String string, int start, int length)
Metode ini membandingkan bagian string yang ditentukan dengan bagian string lainnya. Anda harus menentukan indeks awal rentang baris objek pemanggil kelas
String
. String yang akan dibandingkan dilewatkan dalam parameter
string
. Indeks karakter yang mulai dari mana perbandingan perlu dilakukan diteruskan dalam parameter
start
, dan panjang substring yang akan dibandingkan diteruskan dalam parameter
length
.
public boolean regionMatches (boolean ignoreCase, int thisStart, String string, int start, int length)
Versi kelebihan beban. Metode ini membandingkan bagian tertentu dari sebuah string dengan bagian lain dari string tersebut, mengabaikan huruf besar/kecil.
public String replace(CharSequence target, CharSequence replacement) и другие перегруженные версии
Mengubah karakter atau urutan karakter
target
menjadi
replacement
String testString = "whale";
infoTextView.setText(testString.replace("And", "о"));
public String replaceAll (String regularExpression, String replacement)
public String replaceFirst (String regularExpression, String replacement)
Menghapus karakter pertama menggunakan ekspresi reguler. Misalnya, jika Anda perlu menghilangkan angka nol di awal angka 001, 007, 000024, Anda dapat menggunakan panggilan ini.
String s = "001234-cat";
String s = s.replaceFirst ("^0*", "");
public String[] split (String regularExpression) и другие перегруженные версии
Memisahkan string menjadi serangkaian kata. Misalnya, ada string Vaska Ryzhik Murzik Barsik dan kami ingin mendapatkan serangkaian nama kucing:
String catnames = "Васька Рыжик Мурзик Барсик";
String aCats[] = catnames.split(" ");
Kita mendapatkan:
aCats[0] = Васька
aCats[1] = Рыжик
aCats[2] = Мурзик
aCats[3] = Барсик
public boolean startsWith(String prefix)
Memeriksa apakah string dimulai dengan karakter
prefix
dari awal string
String str1 = "котлета";
if(str1.startsWith("кот"))
infoTextView.setText("Слово содержит кота");
else
infoTextView.setText("Плохое слово. Нет смысла его использовать");
public boolean startsWith(String prefix, int start)
Memeriksa apakah string yang diberikan dimulai dengan karakter
prefix
pada posisi yang ditentukan.
String str1 = "Суккот";
if(str1.startsWith("кот", 3))
infoTextView.setText("Слово содержит кота");
else
infoTextView.setText("Плохое слово. Нет смысла его использовать");
public CharSequence subSequence (int start, int end)
Mirip dengan metodenya
substring()
, tetapi dapat digunakan untuk
CharSequence
.
public String substring(int start)
dan kelebihan lainnya Membuat urutan/string baru dengan karakter dari string tertentu dimulai dari posisi
start
hingga akhir baris/diakhiri dengan karakter di posisi
end
. Baris baru berisi karakter dari
start
sampai akhir - 1, jadi kita ambil satu karakter lagi.
String testString = "скотина";
infoTextView.setText(testString.substring(1, 4));
public char[] toCharArray()
Menyalin karakter dalam string ini ke array karakter. Hasil yang sama dapat diperoleh melalui
getChars()
. Dokumentasi tidak merekomendasikan penggunaan metode ini, menyarankan metode
charAt()
.
String unusualCat = "Котёнок по имени Гав";
char[] yomoe = unusualCat.toCharArray();
infoTextView.setText(String.valueOf(yomoe[3]));
public String toLowerCase() и другие перегруженные версии
Mengonversi string menjadi huruf kecil. Lokal default mengontrol konversi. String kucing = "Kucing"; String lebih rendah = cat.toLowerCase(); infoTextView.setText(lebih rendah);
public String toString ()
Mengembalikan string. Untuk string itu sendiri, yang sudah menjadi string, mengembalikan string itu tidak ada gunanya (oh, betapa saya membengkokkannya). Namun cara ini sebenarnya sangat berguna untuk kelas lain.
public String toUpperCase()
Mengonversi string menjadi huruf besar. Lokal default mengontrol konversi.
String cat = "Кот";
String upper = cat.toUpperCase();
infoTextView.setText(upper);
public String trim()
Menghapus spasi di awal dan akhir string.
String str = " Hello Kitty ".trim();
infoTextView.setText(str);
public static String valueOf(long value)
dan kelebihan lainnya Mengonversi konten (angka, objek, karakter, array karakter) menjadi string.
int catAge = 7;
infoTextView.setText(String.valueOf(catAge));
Menghasilkan string acak
Katakanlah kita membutuhkan string acak dari karakter tertentu.
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()
atau ==
?
Mari kita lihat sebuah contoh.
String str1 = "Murzik";
String str2 = new String(str1);
boolean isCat = str1 == str2;
infoTextView.setText(str1 + " == " + str2 + " -> " + isCat);
Meskipun kedua variabel berisi kata yang sama, kita berhadapan dengan dua objek berbeda dan operator
==
akan mengembalikan
false . Suatu ketika, ketika pohonnya masih besar, saya perlu membandingkan dua string dari sumber berbeda. Meskipun senarnya terlihat persis sama, perbandingan menggunakan operator
==
menghasilkan
hasil yang salah dan membingungkan semua kartu bagi saya. Dan baru pada saat itulah saya mengetahui bahwa saya perlu menggunakan file
equals()
. String di Java adalah objek terpisah yang mungkin tidak sama dengan objek lain, meskipun output dari string tersebut mungkin terlihat sama di layar. Hanya saja Java, dalam kasus operator logika
==
(dan juga
!=
), membandingkan referensi ke objek (tidak ada masalah seperti itu saat bekerja dengan 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