Rentetan di Jawa

Rentetan

Rentetan adalah urutan watak. Di Jawa, a Stringadalah Object. Rentetan tidak boleh dikelirukan charkerana watak adalah harfiah 1 nilai dan bukan urutan watak. Anda masih boleh menggunakan 1 nilai dalam String, namun lebih disukai untuk digunakan charketika anda memeriksa 1 karakter.

String course = "FCC"; System.out.println(course instanceof Object);

Pengeluaran:

true

Anda boleh membuat Objek String dengan cara berikut:

  1. String str = "I am a String"; //as a String literal
  2. String str = "I am a " + "String"; //as a constant expression
  3. String str = new String("I am a String"); //as a String Object using the constructor

Anda mungkin berfikir: Apa perbezaan antara ketiganya?

Baiklah, menggunakan newkata kunci menjamin bahawa Stringobjek baru akan dibuat dan lokasi memori baru akan diperuntukkan dalam Heapmemori (klik di sini untuk mengetahui lebih lanjut). String literal dan ungkapan String malar disimpan dalam masa kompilasi. Penyusun memasukkannya ke dalam String Literal Pool untuk mengelakkan pendua dan meningkatkan penggunaan memori. Peruntukan objek mahal dan muslihat ini meningkatkan prestasi sambil memberi contoh Strings. Sekiranya anda menggunakan literal yang sama sekali lagi, JVM menggunakan objek yang sama. Menggunakan kontraktor seperti di atas hampir selalu menjadi pilihan yang lebih buruk.

Dalam coretan kod ini, berapa banyak objek String yang dibuat?

String str = "This is a string"; String str2 = "This is a string"; String str3 = new String("This is a string");

Jawapannya ialah: 2 objek tali dibuat. strdan str2kedua - duanya merujuk pada objek yang sama. str3mempunyai kandungan yang sama tetapi menggunakan newpenciptaan paksa objek baru yang berbeza.

Apabila anda membuat String literal, JVM secara dalaman memeriksa, apa yang dikenali sebagai String pool, untuk melihat apakah ia dapat menemui objek String yang serupa (sesuai dengan isi). Sekiranya ia menemuinya, ia mengembalikan rujukan yang sama. Jika tidak, ia hanya berjalan ke depan dan membuat objek String baru di kolam sehingga pemeriksaan yang sama dapat dilakukan di masa depan.

Anda boleh mengujinya dengan menelan, perbandingan Objek pantas ==dan yang dilaksanakan equals().

System.out.println(str == str2); // This prints 'true' System.out.println(str == str3); // This prints 'false' System.out.println(str.equals(str3)); // This prints 'true'

Inilah contoh lain mengenai cara membuat rentetan di Java menggunakan kaedah yang berbeza:

public class StringExample{ public static void main(String args[]) { String s1 = "java"; // creating string by Java string literal char ch[] = {'s','t','r','i','n','g','s'}; String s2 = new String(ch); // converting char array to string String s3 = new String("example"); // creating Java string by new keyword System.out.println(s1); System.out.println(s2); System.out.println(s3); } }

Membandingkan Rentetan

Sekiranya anda ingin membandingkan nilai dua pemboleh ubah String, anda tidak boleh menggunakan ==. Ini disebabkan oleh fakta bahawa ini akan membandingkan rujukan pemboleh ubah dan bukan nilai yang berkaitan dengannya. Untuk membandingkan nilai String yang tersimpan, anda menggunakan kaedah yang sama.

boolean equals(Object obj)

Ia kembali benar jika dua objek sama dan salah sebaliknya.

String str = "Hello world"; String str2 = "Hello world"; System.out.println(str == str2); // This prints false System.out.println(str.equals(str2); // This prints true

Perbandingan pertama adalah salah kerana ”==” melihat rujukan dan tidak sama.

Perbandingan kedua adalah benar kerana pemboleh ubah menyimpan nilai yang sama. Dalam kes ini "Hello world".

Kami mempunyai beberapa kaedah terbina dalam String. Berikut adalah contoh kaedah String Length ().

public class StringDemo { public static void main(String args[]) { String palindrome = "Dot saw I was Tod"; int len = palindrome.length(); System.out.println( "String Length is : " + len ); } }

Ini akan menghasilkan - String Length is : 17

Jawapannya ialah: 2 objek rentetan dibuat. Catatan

  1. Kaedah tali menggunakan indeks berasaskan sifar, kecuali untuk argumen kedua substring().
  2. Kelas String adalah muktamad - kaedahnya tidak boleh diganti.
  3. Apabila literal String dijumpai oleh JVM, ia ditambahkan ke kumpulan literal string.
  4. String class mempunyai nama kaedah length(), sedangkan array mempunyai panjang penamaan atribut.
  5. Di java, objek rentetan tidak berubah. Tidak berubah bermaksud tidak boleh diubah atau tidak boleh ditukar. Setelah objek rentetan dibuat data atau keadaannya tidak dapat diubah tetapi objek rentetan baru dibuat.

Panjang tali

"Panjang" rentetan hanyalah bilangan watak di dalamnya. Jadi "hi" adalah panjang 2 dan "Hello" adalah panjang 5. Kaedah panjang () pada tali mengembalikan panjangnya, seperti ini:

String a = "Hello"; int len = a.length(); // len is 5

Kaedah perbandingan lain yang juga dapat digunakan pada String adalah:

  1. equalsIgnoreCase (): - membandingkan rentetan tanpa mengambil kira kepekaan kes.
String a = "HELLO"; String b = "hello"; System.out.println(a.equalsIgnoreCase(b)); // It will print true
  1. membandingkanTo: - membandingkan nilai secara leksikografi dan mengembalikan bilangan bulat.
String a = "Sam"; String b = "Sam"; String c = "Ram"; System.out.println(a.compareTo(b)); // 0 System.out.prinltn(a.compareTo(c)); // 1 since (a>b) System.out.println(c.compareTo(a)); // -1 since (c