informasi kontak saya
Surat[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Saya pikir kalian pernah berhubungan dengan string ketika kalian belajar bahasa C, tetapi dalam bahasa C kalian hanya bisa menggunakannya
Array karakter char[10] str = “halo”; atau penunjuk karakter char *str = “halo”;Tidak ada kelas String khusus yang disediakan . Dalam Java berorientasi objek, kelas String dan operasinya disediakan secara khusus, yang lebih nyaman digunakan oleh pemrogram kami.
Isi string tidak dapat diubah.
Dalam String, semua operasi yang melibatkan kemungkinan memodifikasi konten string membuat objek baru, dan yang diubah adalah objek baru.
Misalnya, saat mencari substring:
Beberapa orang mengatakan: String tidak dapat diubah karena array yang menyimpan karakter di dalamnya telah dimodifikasi oleh final dan oleh karena itu tidak dapat diubah.
public static void main(String[] args) {
final char[] arr = {'h','e','l','l','o'};
arr[0] = 'H';
System.out.println(String.valueOf(arr));//Hello
// arr = new char[]{'h','o'};Error
}
String adalah tipe data referensi dan tidak menyimpan string itu sendiri.
public class Test {
public static void main(String[] args) {
//1.直接赋值
String s1 = "first";
//2.new 对象
String s2 = new String("second");
//3. 创建字符数组
char[] arr = {'t','h','i','r','d'};
String s3 = new String(arr);
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
}
}
Melihat:
String s1 = “pertama”;
Java Virtual Machine (JVM) pertama-tama akan memeriksa apakah string "pertama" sudah ada di kumpulan konstanta string. Jika ada, referensi string di kumpulan konstan dikembalikan secara langsung; jika tidak ada, string ditambahkan ke kumpulan konstan dan referensinya di kumpulan konstan dikembalikan.
//s1 s2 分别是new 一个新的字符串"hello"
String s1 = new String("hello");
String s2 = new String("hello");
String s3 = "Hello";
String s4 = s1;
System.out.println(s1 == s2);//false
System.out.println(s1 == s4);//true
System.out.println(s1 == s3);//false
//因为Object类中的equals()方法是==实现的,完成不了String类的需求,
//所以String对equals()实现了重写
String s1 = new String("hello");
String s2 = new String("hello");
String s3 = "Hello";
String s4 = s1;
System.out.println(s1.equals(s2));//true
System.out.println(s1.equals(s4));//true
System.out.println(s1.equals(s3));//false
3. bandingkanTo() membandingkan dalam urutan leksikografis, nilai yang dikembalikan adalah int
/*
* 比较的方式有一下两种:
* 1.先一个一个字符相比较,如果出现不同的字符,则返回差值
* 2.如果前x个字符相等,则返回两个字符串的长度差值
* */
String s1 = new String("abc");
String s2 = new String("abcdef");
String s3 = new String("abd");
String s4 = new String("abc");
System.out.println(s1.compareTo(s2));//-3 (3-6)
System.out.println(s1.compareTo(s3));//-1
System.out.println(s1.compareTo(s4));//0
String s1 = new String("Abc");
String s2 = new String("aBcdef");
String s3 = new String("aBd");
String s4 = new String("ABc");
System.out.println(s1.compareToIgnoreCase(s2));//-3 (3-6)
System.out.println(s1.compareToIgnoreCase(s3));//-1
System.out.println(s1.compareToIgnoreCase(s4));//0
metode | Fungsi |
---|---|
char charAt(int indeks) | Mengembalikan karakter pada posisi indeks. Jika indeks negatif atau di luar batas, pengecualian IndexOutOfBoundsException akan ditampilkan. |
int indeks(int ch) | Mengembalikan posisi di mana ch pertama kali muncul, tanpa mengembalikan -1 |
int indexOf(int ch, intdariIndeks) | Mulai dari posisi fromIndex untuk menemukan posisi di mana ch pertama kali muncul, dan kembalikan -1 |
int indeksOf(String str) | Mengembalikan posisi di mana str pertama kali muncul, tanpa mengembalikan -1 |
int indexOf(String str, intdariIndeks) | Temukan kemunculan pertama str mulai dari posisi fromIndex, tanpa mengembalikan -1 |
int indeksterakhir(int ch) | Cari dari belakang ke depan, kembali ke posisi munculnya ch pertama kali, jika tidak kembali -1 |
int lastIndexOf(int ch, intdariIndeks) | Mulailah mencari dari posisi fromIndex, dan cari dari belakang ke depan untuk posisi di mana ch -1 pertama kali muncul. |
int indeksterakhir(String str) | Pencarian dari belakang ke depan dan mengembalikan posisi dimana str pertama kali muncul. |
int lastIndexOf(String str, intdariIndeks) | Mulailah mencari dari posisi fromIndex, dan cari dari belakang ke depan untuk posisi di mana str pertama kali muncul. |
public static void main(String[] args) {
String s = "Hello, how are you today?";
System.out.println(s.charAt(2)); //l
System.out.println(s.indexOf('H')); //0
System.out.println(s.indexOf('l',2)); //从第二个开始找 2
System.out.println(s.indexOf("are")); //11
System.out.println(s.indexOf("are",12)); // 未找到-1
System.out.println(s.lastIndexOf('l')); //从后往前数 3
System.out.println(s.lastIndexOf('l',3));// 从第三个往后数 3
System.out.println(s.lastIndexOf("how"));// 7
System.out.println(s.lastIndexOf("how",6));// 未找到 -1
}
1. Konversi angka dan string
String s1 = String.valueOf(1234);
String s2 = String.valueOf(12.34);
String s3 = String.valueOf(true);
String s4 = String.valueOf(new Student("Hanmeimei", 18));
System.out.println(s1);//1234 String
System.out.println(s2);//12.34 String
System.out.println(s3);//true String
System.out.println(s4);//Student@1b6d3586
System.out.println("=================================");
int data1 = Integer.parseInt("1234");
double data2 = Double.parseDouble("12.34");
System.out.println(data1);//1234
System.out.println(data2);//12.34
2. Konversi kasus
String s1 = "hello";
String s2 = "HELLO";
System.out.println(s1.toUpperCase());//HELLO
System.out.println(s1.toLowerCase());//hello
3. String ke array karakter dan array karakter ke string
//字符串转字符数组
String s = "What can I say!";
char[] arr = s.toCharArray();
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]);
}
System.out.println();
//字符数组转字符串
String s1 = new String(arr);
System.out.println(s1);
4.Memformat
//格式化
String s = String.format("%d/%02d/%d",2024,07,10);
System.out.println(s);//2024/07/10
metode | Fungsi |
---|---|
String replaceAll(String regex, Penggantian string) | Ganti semua konten yang ditentukan |
String replaceFirst(String regex, Penggantian string) | Ganti konten pertama |
String s = "What can I say say!";
System.out.println(s.replaceAll("say","look"));
System.out.println(s.replaceFirst("say","SAY"));
//What can I look look!
//What can I SAY say!
metode | Fungsi |
---|---|
String[] pisah(String regex) | Pisahkan semua string |
String[] pisah(String regex, int batas) | Pisahkan string menjadi grup batas dalam format yang ditentukan |
//字符串拆分
String s = "字 符 串 拆 分";
String[] str = s.split(" ");
for(String i : str) {
System.out.print(i+"|");
}
System.out.println();
String[] str2 = s.split(" ",2);
for(String i : str2) {
System.out.println(i);
}
/*
* 输出:
字|符|串|拆|分|
字
符 串 拆 分
* */
/*
*拆分是特别常用的操作:
* 一定要重点掌握
*另外有些特殊字符(通配符)作为分割符可能无法正确切分, 需要加上转义.
* */
String s2 = "192.168.1.16" ;
String[] result = s2.split("\.") ;
for(String i: result) {
System.out.println(i);
}
System.out.println("\");
//为了匹配字面上的点号,你需要使用反斜杠()来转义它,
// 但在Java字符串中,反斜杠本身也是一个转义字符,
// 所以你需要使用双反斜杠(\)来表示一个字面量上的反斜杠。
//字符串截取
String s = "What can I say!";
System.out.println(s.substring(6));//an I say!
System.out.println(s.substring(0,3));//What
String s = " yy ds ";
System.out.println(s.trim());//yy ds
Kelas String tidak dapat dimodifikasi. Semua modifikasi akan membuat objek baru, yang tidak efisien.
Ini hanya 10000, yaitu 341ms. Jika ingin memodifikasinya, disarankan menggunakan StringBuffer atau StringBuilder.
Karena sifat String yang tidak dapat diubah, untuk memudahkan modifikasi string, Java juga menyediakan kelas StringBuilder dan StringBuffer. Dan sebagian besar metode kedua kelas ini sama.
Jika Anda tertarik, silakan klikDokumentasi daring
1 ms setelah menggunakan StringBuffer.
Catatan: Kelas String dan StringBuilder tidak dapat dikonversi secara langsung. Jika Anda ingin saling mengkonversi, Anda dapat menggunakan prinsip berikut:
Yang disebut pengaman benang adalah seperti ketika banyak orang pergi ke toilet. Saat ini hanya ada satu ruangan. Anda masuk dulu, tutup pintunya, dan keluar setelah selesai. Selama periode ini, Anda memiliki ruangan ini untuk diri Anda sendiri dan tidak ada yang bisa masuk. Selesaikan tugas saat ini terlebih dahulu, monopoli sumber daya, lalu lepaskan sumber daya yang ditempati setelah selesai.