You are never a loser until you quit trying!

So sánh hai chuỗi trong Java



Chào bạn đến với yzenny97.blogspot.com!

Ở bài viết này chúng ta sẽ tìm hiểu về cách so sánh hai chuỗi trong Java:
Java String

Phương thức equals() so sánh nội dung ban đầu của chuỗi. Nó so sánh tính cân bằng của các giá trị chuỗi. Lớp String cung cấp hai phương thức:
·        public boolean equals(Object khac) so sánh chuỗi này với object đã cho.
·        public boolean equalsIgnoreCase(String khac) so sánh chuỗi này với chuỗi khác, bỏ qua sự khác biệt về kiểu.
Ví dụ 1
class Sosanhchuoi1{ 
 public static void main(String args[]){ 
   String s1="YZenny"; 
   String s2="YZenny"; 
   String s3=new String("YZenny"); 
   String s4="YZenny97"; 
   System.out.println(s1.equals(s2));//true 
   System.out.println(s1.equals(s3));//true 
   System.out.println(s1.equals(s4));//false 
 } 
} 
Ví dụ 2
class Sosanhchuoi2{ 
 public static void main(String args[]){ 
   String s1="yzenny"; 
   String s2="YZENNY"; 
 
   System.out.println(s1.equals(s2));//false 
   System.out.println(s1.equalsIgnoreCase(s3));//true 
 } 
} 
So sánh chuỗi với toán tử == trong Java
Toán tử == trong Java so sánh các tham chiếu chứ không phải so sánh các giá trị. Ví dụ:
class Sosanhchuoi3{ 
 public static void main(String args[]){ 
   String s1="YZenny"; 
   String s2="YZenny"; 
   String s3=new String("YZenny"); 
   System.out.println(s1==s2);//true (boi vi ca hai cung tham chieu toi cung instance) 
   System.out.println(s1==s3);//false(boi vi s3 tham chieu toi instance duoc tao khong phai trong Pool) 
 } 
} 

So sánh chuỗi bởi phương thức compareTo() trong Java

Phương thức compateTo() so sánh các giá trị theo từ điển và trả về một giá trị nguyên miêu tả rằng nếu chuỗi đầu tiên là nhỏ hơn, bằng hoặc lớn hơn chuỗi thứ hai. Giả sử s1 và s2 là hai chuỗi. Nếu:
·        s1 == s2 thì trả về 0.
·        s1 > s2 thì trả về giá trị dương
·        s1 < s2 thì trả về giá trị âm
class Teststringcomparison4{  
 public static void main(String args[]){  
   String s1="YZenny";  
   String s2="YZenny";  
   String s3="Java";  
   System.out.println(s1.compareTo(s2));//0  
   System.out.println(s1.compareTo(s3));//1(boi vi s1 > s3)  
   System.out.println(s3.compareTo(s1));//-1(boi vi s3 < s1 )  
 }  
}   


Chúc các bạn học tốt!
Góp ý tại mục bình luận bên dưới 💓

Tìm hiểu về đối tượng String trong Java



Chào bạn đến với phanlamcoder.blogspot.com!

Ở bài viết này chúng ta sẽ tìm hiểu về đối tượng String trong Java:
String Java
Trong Java, các đối tượng chuỗi là immutable. Immutable nghĩa là không thể thay đổi hay không thể sửa đổi. Một khi đối tượng String đã được tạo thì dữ liệu hoặc trạng thái của nó không thể bị thay đổi nhưng một đối tượng String được tạo. Bạn theo dõi ví dụ sau để hiểu khái niệm Immutable trong Java:
class Testimmutablestring{ 
 public static void main(String args[]){ 
   String s="yzenny"; 
   s.concat(" blogspot");//phuong thuc concat() phu them vao cuoi chuoi 
   System.out.println(s);//se in yzenny vi string la immutable 
 } 
} 
Ở đây, "yzenny" là không bị thay đổi nhưng một đối tượng mới được tạo với " blogspot". Đó là tại sao String trong Java là không thể sửa đổi. Trong ví dụ trên, hai đối tượng được tạo, nhưng biến tham chiếu vẫn tham chiếu tới "yzenny" chứ không tham chiếu tới " blogspot".
Nhưng nếu chúng ta gán nó tới biến tham chiếu một cách tường minh, thì nó sẽ tham chiếu tới đối tượng " blogspot". Ví dụ:
class Testimmutablestring1{ 
 public static void main(String args[]){ 
   String s="yzenny"; 
   s=s.concat(blogspot"); 
   System.out.println(s); 
 } 
} 
Trong trường hợp này, s trỏ tới " blogspot". Bạn nên chú ý rằng đối tượng "yzenny" vẫn không bị sửa đổi (vẫn còn lưu trong pool)
Tại sao đối tượng String là Immutable trong Java?
Bởi vì Java sử dụng khái niệm String Literal. Giả sử có 5 biến tham chiếu, tất cả tham chiếu tới một đối tượng "yzenny". Nếu một biến tham chiếu thay đổi giá trị của đối tượng, nó sẽ có tác động tới tất cả các biến tham chiếu khác. Đó là tại sao đối tượng String là Immutable trong Java.
Hãy xem trong phần tổng kết về lớp String ở bài sau để hiểu rõ hơn.
Chúc các bạn học tốt!
Góp ý tại mục bình luận bên dưới 💓


Cách tạo đối tượng String trong Java



Chào bạn đến với phanlamcoder.blogspot.com!

Ở bài viết này mình sẽ chia sẻ đến các bạn cách tạo đối tượng String trong Java:
Java String

1.   String Literal:
·       String s = “yzenny97”;
·       Các đối tượng String được lưu trữ trong một khu vực bộ nhớ đặc biệt gọi là String Constant Pool.
·       Java sử dụng phương thức intern() để lưu trữ mọi object bất kỳ vào String pool. Khi sử dụng String literal thì mặc định nó sẽ gọi phương thức intern() để làm việc này giúp bạn. Đây chính là điểm khác biệt lớn nhất giữa String literal và sử dụng new.
Mỗi khi bạn tạo một hằng chuỗi, đầu tiên JVM kiểm tra Pool chứa các hằng chuỗi. Nếu chuỗi đã tồn tại trong Pool, một tham chiếu tới Pool được trả về. Nếu chuỗi không tồn tại trong Pool, một instance của chuỗi mới được tạo và được đặt trong Pool. Ví dụ:
String s1="xinchao"; 
String s2="xinchao";//se khong tao instance moi
        Lợi ích: Để làm cho Java hiệu quả hơn trong việc sử dụng bộ nhớ bởi vì không có đối tượng mới nào được tạo khi mà nếu nó đã tồn tại trong Pool.
2.   Khởi tạo với từ khóa new
String s=new String("xinchao");//tao hai doi tuong va mot bien tham chieu 
Trong trường hợp này, JVM sẽ tạo một đối tượng mới như bình thường trong bộ nhớ Heap (không phải Pool) và hằng "xinchao" sẽ được đặt trong Pool. Biến sẽ tham chiếu tới đối tượng trong Heap (chứ không là Pool).

Ví dụ về String trong Java

public class StringExample{  
public static void main(String args[]){  
String s1="java";//tao string boi string literal 
char ch[]={'s','t','r','i','n','g','s'};  
String s2=new String(ch);//chuyen doi mang ky tu thanh string  
String s3=new String("Vidu");//tao string boi tu khoa new
  
System.out.println(s1);  
System.out.println(s2);  
System.out.println(s3);  
}}  

Tạo các String được định dạng trong Java

Bạn có các phương thức printf()  format() để in output với các số được định dạng. Lớp String có một phương thức lớp tương đương, là format(), mà trả về một đối tượng String chứ không là một đối tượng PrintStream.
Sử dụng phương thức static format() của đối tượng String cho phép bạn tạo một chuỗi đã được định dạng để bạn có thể tái sử dụng, trái ngược với lệnh in một lần. Ví dụ, thay vì:

System.out.printf("Gia tri cua bien float la " +
                  "%f, trong khi gia tri cua bien integer " +
                  "bien la %d, va chuoi la " +
                  "is %s", floatVar, intVar, stringVar);
Bạn có thể viết:
String fs;
fs = String.format("Gia tri cua bien float la " +
                   "%f, trong khi gia tri cua bien integer " +
                   "bien la %d, va chuoi la " +
                   "is %s", floatVar, intVar, stringVar);
System.out.println(fs);

Chúc các bạn học tốt!
Góp ý tại mục bình luận bên dưới 💓