VietTuts

Tự Học Lập Trình Online

  • Home
  • Java
  • Servlet
  • JSP
  • Struts2
  • Hibernate
  • Spring
  • MyBatis
  • Java WS
  • C
  • C++
  • C#
  • Python
  • PHP
  • Excel
  • VBA
  • Web
    • JavaScript
    • JQUERY
    • JSON
    • AJAX
    • CSS
    • HTML
    • HTML5
    • Node.js
    • Angular 7
  • SQL
    • MySQL
    • SQL Server
  • Misc
    • Eclipse
    • Phần mềm tiện ích
    • Cấu trúc DL&GT
    • Selenium Test
Java Cơ Bản Các Khái Niệm Java OOPs

Java String

String là gì Immutable String So sánh String Nối String Sub-String Phương thức của lớp String Lớp StringBuffer Lớp StringBuilder String vs StringBuffer StringBuffer vs Builder Tạo lớp Immutable toString method Lớp StringTokenizer

Phương thức Java String

String charAt() String compareTo() String concat() String contains() String endsWith() String equals() equalsIgnoreCase() String format() String getBytes() String getChars() String indexOf() String intern() String isEmpty() String join() String lastIndexOf() String length() String replace() String replaceAll() String split() String startsWith() String substring() String toCharArray() String toLowerCase() String toUpperCase() String trim() String valueOf()
Xử Lý Ngoại Lệ Các Lớp Lồng Nhau Đa Luồng (Multithreading) Java AWT Java Swing Java I/O Ví Dụ Java I/O Lập Trình Mạng Với Java Java Date Chuyển Đối Kiểu Dữ Liệu Java Collections Java JDBC Các Tính Năng Mới Trong Java Bài Tập Java Có Lời Giải Câu Hỏi Phỏng Vấn Java
1 / 3
❮ ❯

Sự khác nhau giữa String và StringBuffer trong java


Lớp StringBuilder trong java
Sự khác nhau giữa StringBuffer và StringBuilder trong java

Nội dung chính

  • Sự khác nhau giữa String và StringBuffer trong java
    • Test hiệu suất của String và StringBuffer
    • Test HashCode của String và StringBuffer

Sự khác nhau giữa String và StringBuffer trong java

Sự khác nhau giữa String và StringBuffer trong java được thể hiện trong bảng sau:

No.StringStringBuffer
1)Lớp String là bất biến (immutable).Lớp StringBuffer là có thể sửa đổi (mutable).
2)Khi bạn thực hiện nối nhiều chuỗi thì lớp String xử lý chậm và tốn nhiều bộ nhớ hơn, bởi vì mỗi lần nối thêm chuỗi nó tạo ra instance mới.Khi bạn thực hiện nối nhiều chuỗi thì lớp StringBuffer xử lý nhanh và tốn ít bộ nhớ hơn.
3)Lớp String ghi đề phương thức equals() của lớp Object. Vì thế bạn có thể so sánh nội dung của 2 chuỗi bằng phương thức equals().Lớp StringBuffer không ghi đề phương thức equals() của lớp Object.

Test hiệu suất của String và StringBuffer

public class ConcatTest {
 public static String concatWithString() {
  String t = "Java";
  for (int i = 0; i < 10000; i++) {
   t = t + "Hello";
  }
  return t;
 }

 public static String concatWithStringBuffer() {
  StringBuffer sb = new StringBuffer("Java");
  for (int i = 0; i < 10000; i++) {
   sb.append("Hello");
  }
  return sb.toString();
 }

 public static void main(String[] args) {
  long startTime = System.currentTimeMillis();
  concatWithString();
  System.out.println("Thời gian nối chuỗi của lớp String: "
    + (System.currentTimeMillis() - startTime) + "ms");
  startTime = System.currentTimeMillis();
  concatWithStringBuffer();
  System.out.println("Thời gian nối chuỗi của lớp StringBuffer: "
    + (System.currentTimeMillis() - startTime) + "ms");
 }
}

Output:

Thời gian nối chuỗi của lớp String: 350ms
Thời gian nối chuỗi của lớp StringBuffer: 1ms

Test HashCode của String và StringBuffer

Trong ví dụ sau, String trả về giá trị hashcode mới khi nối chuỗi, nhưng StringBuffer trả về cùng 1 giá trị.

public class InstanceTest {
 public static void main(String args[]) {
  System.out.println("Test Hashcode của String:");
  String str = "java";
  System.out.println(str.hashCode());
  str = str + "viettuts";
  System.out.println(str.hashCode());

  System.out.println("Test Hashcode của StringBuffer:");
  StringBuffer sb = new StringBuffer("java");
  System.out.println(sb.hashCode());
  sb.append("viettuts");
  System.out.println(sb.hashCode());
 }
}

Output:

Test Hashcode của String:
3254818
-1456864636
Test Hashcode của StringBuffer:
366712642
366712642

Tìm hiểu về xử lý chuỗi trong java
  • String là gì
  • Immutable String
  • So sánh String
  • Nối String
  • Sub-String
  • Phương thức của lớp String
  • Lớp StringBuffer
  • Lớp StringBuilder
  • String vs StringBuffer
  • StringBuffer vs Builder
  • Tạo lớp Immutable
  • Phương thức toString
  • Lớp StringTokenizer

Lớp StringBuilder trong java
Sự khác nhau giữa StringBuffer và StringBuilder trong java

Recent Updates

Xuất dữ liệu ra màn hình console trong JavaCài đặt môi trường JavaJava Swing - Bài tập quản lý sinh viên trong javaLinkedList trong javaArrayList trong javaBài tập java có lời giảiSử dụng Javascript trong HTMLToán tử dấu 2 chấm (::) trong Java 8Lambda Expression - Biểu thức Lambda trong java 8Bài tập Java - Sắp xếp nhanh (Quick Sort) trong JavaBài tập Java - Sắp xếp chèn (Insertion Sort) trong JavaBài tập Java - Sắp xếp nổi bọt (Bubble Sort) trong JavaSắp Tết 2026 Rồi! - Còn bao nhiêu ngày nữa là đến tết 2026?

VietTuts on facebook

Học Lập Trình Online Miễn Phí - VietTuts.Vn
Danh Sách Bài Học

Học Java | Hibernate | Spring
Học Excel | Excel VBA
Học Servlet | JSP | Struts2
Học C | C++ | C#
Học Python
Học SQL

Bài Tập Có Lời Giải

Bài tập Java
Bài tập C
Bài tập C++
Bài tập C#
Bài tập Python
Ví dụ Excel VBA

Câu Hỏi Phỏng Vấn

201 câu hỏi phỏng vấn java
25 câu hỏi phỏng vấn servlet
75 câu hỏi phỏng vấn jsp
52 câu hỏi phỏng vấn Hibernate
70 câu hỏi phỏng vấn Spring
57 câu hỏi phỏng vấn SQL

Scroll back to top

Copyright © 2016 VietTuts.Vn all rights reserved. | Liên hệ | Chính sách - riêng tư | sitemap.html | sitemap_index.xml