So sánh 2 kí tự đầu trong chuỗi java

String là một chuỗi các ký tự kết hợp lại. Ví dụ "thaycacac" là một chuỗi gồm 9 ký tự 't', 'h', 'a', 'y', 'c', 'a', 'c', 'a', 'c' kết hợp lại.

Show

    String trong java là một object immutable, nghĩa là bạn không thể thay đổi giá trị của String khi nó đã được khởi tạo.

    Trong java chúng ta có 2 cách để tạo một chuỗi

    • Chuỗi ký tự
    • Sử dụng từ khoá

      public class Main { public static void main(String[] args) {

      String str1 = new String("thaycacac");  
      String str2 = new String("thaycacac");  
      
      } }

      6

    Ví dụ: khởi tạo 2 chuỗi string1 và string2 với giá trị giống nhau

    public class Main {
      public static void main(String[] args) {
        String string1 = "Thaycacac";
        String string2 = "Thaycacac";
      }
    }

    Sau khi khởi tạo string1 thì chuỗi "Thaycacac" sẽ được lưu vào vùng nhớ heap tại

    public class Main {
      public static void main(String[] args) {
        String str1 = new String("thaycacac");
        String str2 = new String("thaycacac");
      }
    }

    7. Đến khi khởi tạo khởi string2, việc đầu tiên là tìm kiếm trong

    public class Main {
      public static void main(String[] args) {
        String str1 = new String("thaycacac");
        String str2 = new String("thaycacac");
      }
    }

    8, nếu đã có chuỗi tương tự thì sẽ không cần khởi tạo thêm mà gán thẳng cho string2, nếu không thì mới bắt đầu khởi tạo.

    Mình sẽ giải thích đoạn code này sẽ diễn ra như sau:

    • Bước 1: string1 = "Thaycacac" => JVM thấy rằng trong

      public class Main { public static void main(String[] args) {

      String str1 = new String("thaycacac");  
      String str2 = new String("thaycacac");  
      
      } }

      7 chưa có object string nào có giá trị tương tự cho nên trình biên dịch sẽ tiến hành tạo ra object string (

      public class Main { public static void main(String[] args) {

      String str = "hello";  
      System.out.println(str);  
      str = "hello thaycacac";  
      System.out.println(str);  
      
      } }

    • và gán cho string1.
    • Bước 2: string2 = "Thaycacac" => JVM thấy rằng trong

      public class Main { public static void main(String[] args) {

      String str1 = new String("thaycacac");  
      String str2 = new String("thaycacac");  
      
      } }

      7 đã có sẵn object string có giá trị tương tự nên trình biên dịch sẽ gán thẳng cho string2 mà không khởi tạo nữa.

    Đây là cách chính thống đây các bạn, sử dụng từ khoá

    public class Main {
      public static void main(String[] args) {
        String str1 = new String("thaycacac");
        String str2 = new String("thaycacac");
      }
    }

    6. Lưu ý nếu như chúng ta khởi tạo chuỗi bằng từ khoá

    public class Main {
      public static void main(String[] args) {
        String str1 = new String("thaycacac");
        String str2 = new String("thaycacac");
      }
    }

    6 thì trình biên dịch sẽ không tiến hành kiểm tra trong

    public class Main {
      public static void main(String[] args) {
        String str1 = new String("thaycacac");
        String str2 = new String("thaycacac");
      }
    }

    7 có tồn tại object nào có giá trị như vậy chưa mà nó sẽ tiến hành khởi tạo cả 2 object cho dù nó có cùng giá trị nhé.

    public class Main {
      public static void main(String[] args) {
        String str1 = new String("thaycacac");
        String str2 = new String("thaycacac");
      }
    }

    Với đoạn code trên thì chúng ta sẽ được 2 object riêng biệt không liên quan gì nhau hết nha các bạn

    Như đã đề cập ở trên

    public class Main {
      public static void main(String[] args) {
        String str = "hello";
        System.out.println(str);
        str = "hello thaycacac";
        System.out.println(str);
      }
    }

    5 thì chúng ta sẽ không thể thay đổi khi nó đã được khỏi tạo. Chúng ta cùng xem ví dụ sau:

    public class Main {
      public static void main(String[] args) {
        String str = "hello";
        System.out.println(str);
        str = "hello thaycacac";
        System.out.println(str);
      }
    }

    Sao nói rằng object string không thể thay đổi sau khi nó đã được khởi tạo thì đáng lẽ chúng ra phải nhận output là hello chứ nhỉ!

    Thật ra là khi bạn gán str = "hello" trình biên dịch sẽ tiến hành khởi tạo object string và gán cho str. Đến khi bạn lại gán str = "hello thaycacac" như đúng bản chất nó không thay đổi giá trị object "hello" mà nó sẽ tạo tạo một object mới với giá trị chuỗi là "hello thaycacac" và gán lại cho str. Đó là lý do chúng ta có output như trên.

    int length(): Trả về số lượng ký tự trong chuỗi

    String s = "kungfutech.edu.vn";
    System.out.println(s.charAt(10)); // return "."

    String substring(int i): Trả về chuỗi con bắt đầu tại vị trí i đến cuối chuỗi

    String s = "kungfutech.edu.vn";
    System.out.println(s.substring(10)); // return "edu.vn"

    String substring(int begin, int end): Trả về chuỗi con từ vị trí begin đến end

    String s = "kungfutech.edu.vn";
    System.out.println(s.substring(10, 14)); // return "edu"

    String concat(String s): Nối chuối s vào cuối chuỗi

    String s = "kungfutech.edu.vn";
    System.out.println(s.indexOf("edu")); // return 11

    indexOf(String str, int fromIndex): Trả về vị trí xuất hiện đầu tiên của str bắt đầu từ vị trí

    public class Main {
      public static void main(String[] args) {
        String str = "hello";
        System.out.println(str);
        str = "hello thaycacac";
        System.out.println(str);
      }
    }

    6

    String s = "kungfutech.edu.vn";
    System.out.println(s.indexOf("h", 5)); // return 9

    lastIndexOf(String str): Trả về vị trí xuất hiện cuối cùng của str

    String s = "kungfutech.edu.vn";
    System.out.println(s.lastIndexOf("g")); // return 15

    lastIndexOf(String str, int fromIndex): Trả về vị trí cuối cùng xuất hiện của chuỗi str trong khoảng 0 đến fromIndex

    String s = "kungfutech.edu.vn";
    System.out.println(s.lastIndexOf("h", 5)); // return 9

    boolean equals(Object obj): So sánh với string obj

    public class Main {
      public static void main(String[] args) {
        String str1 = new String("thaycacac");
        String str2 = new String("thaycacac");
      }
    }

    0

    boolean equalsIgnoreCase(String str): So sánh với chuỗi str, bỏ qua ký tự hoa thường

    public class Main {
      public static void main(String[] args) {
        String str1 = new String("thaycacac");
        String str2 = new String("thaycacac");
      }
    }

    1

    String toLowerCase(): Chuyển tất cả các ký tự thành ký tự thường.

    public class Main {
      public static void main(String[] args) {
        String str1 = new String("thaycacac");
        String str2 = new String("thaycacac");
      }
    }

    2

    String toUpperCase(): Chuyển tất cả các ký tự thành ký tự hoa

    public class Main {
      public static void main(String[] args) {
        String str1 = new String("thaycacac");
        String str2 = new String("thaycacac");
      }
    }

    3

    String trim(): Xoá các khoảng trắng ở đầu và cuối chuỗi

    public class Main {
      public static void main(String[] args) {
        String str1 = new String("thaycacac");
        String str2 = new String("thaycacac");
      }
    }

    4

    String replace(char old, char new): thay thế các ký tự old thành new

    public class Main {
      public static void main(String[] args) {
        String str1 = new String("thaycacac");
        String str2 = new String("thaycacac");
      }
    }

    5

    Ở trên là các method chúng ta thường sử dụng trong

    public class Main {
      public static void main(String[] args) {
        String str = "hello";
        System.out.println(str);
        str = "hello thaycacac";
        System.out.println(str);
      }
    }

    7, ngoài ra nó còn có rất nhiều phương thức khác nữa nhé.