append() là một phương thức Java của các lớp StringBuilder và StringBuffer nối thêm một số giá trị vào chuỗi hiện tại. Ngay cả khi bạn không biết phương thức append() là gì, thì có lẽ bạn đã ngầm sử dụng nó rồi. Điều này xảy ra khi bạn nối các Chuỗi trong Java bằng toán tử +. Vấn đề là nối Chuỗi trong Java được triển khai bằng cách sử dụng lớp StringBuilder hoặc StringBuffer và phương thức append() của chúng .
Rất ngắn gọn về String, StringBuffer và StringBuilder
Như bạn có thể biết lớp Chuỗi là cuối cùng (nó không có lớp con) và không thay đổi (các thể hiện của lớp này không thể được sửa đổi sau khi tạo). Trên thực tế, do tính bất biến của lớp String, các thể hiện chuỗi mới được tạo ra sau mỗi thao tác và các thể hiện cũ bị loại bỏ, tạo ra rất nhiều rác. Để xử lý việc tạo ra rác tạm thời do sửa đổi đối tượng String, bạn có thể sử dụng các lớp StringBuffer hoặc StringBuilder. Sự khác biệt chính giữa hai cái sau là StringBuffer được Đồng bộ hóa trong khi StringBuilder thì không. Do đó, hãy sử dụng StringBuffer cho các chuỗi sẽ được sửa đổi thường xuyên trong môi trường đa luồng và StringBuilder trong trường hợp môi trường đơn luồng.
Nối () trong StringBuilder và StringBuffer
append() là một trong những phương thức hàng đầu của các lớp StringBuilder và StringBuffer. Nó nối thêm một giá trị mới vào chuỗi hiện tại. Có 13 phương thức append() quá tải khác nhau trong cả hai lớp StringBuffer và StringBuilder. Hãy xem phương thức chắp thêm cho StringBuilder. Dù sao, chúng hoạt động giống hệt nhau trong trường hợp StringBuffer.- nối thêm StringBuilder công khai (boolean b)
- nối thêm StringBuilder công khai (char c)
- nối thêm StringBuilder công khai (char [] str)
- nối thêm StringBuilder công khai (char [] str, int offset, int len)
- nối thêm StringBuilder công khai (CharSequence cs)
- nối thêm StringBuilder công khai (CharSequence cs, int start, int end)
- nối thêm StringBuilder công khai (gấp đôi d)
- nối thêm StringBuilder công khai (float f)
- nối thêm StringBuilder công khai (int i)
- nối thêm StringBuilder công khai (dài lng)
- nối thêm StringBuilder công khai (Object obj)
- nối thêm StringBuilder công khai (Chuỗi str)
- nối thêm StringBuilder công khai (StringBuffer sb)
Java.lang.StringBuilder.append(int i)
java.lang.StringBuilder.append(int i) là một phương thức cho phép nối thêm một số nguyên vào một đối tượng StringBuilder hiện có. Chúng ta hãy xem các ví dụ về việc sử dụng Java.lang.StringBuilder.append(int i) :
StringBuilder s = new StringBuilder(“I love Java ”);
int i = 14;
//the method appends StringBuilder and integer
s.append(i);
System.out.println(s);
Đầu ra ở đây sẽ là:
Tôi yêu Java 14
Điều gì đã xảy ra ở đây? Đầu tiên, chúng ta tạo một StringBuilder có tên s với giá trị "I love Java". Sau đó, thêm vào đó một số nguyên 14 bằng cách sử dụng append(int) . Nói một cách chính xác, chúng tôi đã thêm không phải số nguyên, mà là chuỗi "14" và nhận được giá trị StringBuilder được cập nhật thành "Tôi yêu Java 14". Do đó, phương thức biến đối số thành một đối tượng StringBuilder, liên kết nó với một đối tượng StringBuilder hiện có và trả về một đối tượng được cập nhật.
StringBuilder append() ví dụ cho đối số Object, int, boolean và String
Câu chuyện tương tự sẽ xảy ra với tất cả các phương thức quá tải khác với các phần tử số, chuỗi, ký tự hoặc mảng. Hãy tạo một LegoBrick Class và Color enum để minh họa phương thức public StringBuilder append(Object obj) .
//enum with colors
public enum Color {
RED, YELLOW, BLUE;
}
//LegoBrick Class code
public class LegoBrick {
Color color;
boolean isConnected;
public void connect() {
System.out.println("This brick is connected");
this.isConnected = true;
}
public void disconnect() {
System.out.println("Disconnected");
isConnected = false;
}
public LegoBrick(Color color, boolean isConnected) {
this.color = color;
this.isConnected = isConnected;
}
public Color getColor() {
return color;
}
public boolean isConnected() {
return isConnected;
}
@Override
public String toString() {
return "LegoBrick{" +
"color=" + color +
", isConnected=" + isConnected +
'}';
}
}
Bây giờ, hãy tạo một Lớp AppendDemo nơi chúng tôi sẽ hiển thị việc nối thêm một StringBuilder cơ bản với String, int, LegoBrick và boolean. Nghe có vẻ lạ, nhưng nó hoạt động!
public class AppendDemo {
public static void main(String[] args) {
StringBuilder s = new StringBuilder("I love");
System.out.println(s)
//the method appends StringBuilder and String
s.append(" Java");
System.out.println(s);
//the method appends StringBuilder and int
s.append(14);
System.out.println(s);
LegoBrick legoBrick = new LegoBrick(Color.RED, false);
//the method appends StringBuilder and LegoBrick
s.append(legoBrick);
System.out.println(s);
//the method appends StringBuilder and boolean
System.out.println(s.append(5<7));
}
}
Đầu ra là:
Tôi yêu
Tôi yêu Java
Tôi yêu Java14
Tôi yêu Java14LegoBrick{color=RED, isConnected=false}
Tôi yêu Java14LegoBrick{color=RED, isConnected=false}true
Đầu tiên, chúng tôi đã tạo và hiển thị StringBuilder "Tôi yêu", sau đó Đầu tiên, chúng tôi tuần tự thêm vào nó bằng cách sử dụng phương thức append() một Chuỗi, một số int, một biểu diễn Chuỗi của một Đối tượng và một boolean.
Nối thêm StringBuilder(char[] cstr, int set, int length)
Hãy xem xét phương thức append() với ba tham số. Nó thêm một đại diện của một mảng con của một mảng char đã cho vào chuỗi. Nên ở đây:- cstr là một mảng các ký tự được thêm vào
- đặt chỉ mục của ký tự đầu tiên được nối thêm
- chiều dài là số lượng ký tự để nối thêm.
public class AppendDemo {
// an example of using append(char[], cStr, int set, int length)
public static void main(String[] args) {
StringBuilder s = new StringBuilder("I love ");
//here is a char's array, part of which we are going to append to s
char[] cStr = new char[]
{'c', 'o', 'd', 'e', 'J', 'a', 'v', 'a', '1', '4'};
//we append 4 elements of cStr from the 4th element "J"
s.append(cStr, 4, 4);
System.out.println(s);
}
}
Đầu ra là:
tôi yêu Java
Các phương thức nối thêm StringBuilder() với đối số CharSequence
Bạn có thể nhận thấy hai phương thức có CharSequence làm đối số của chúng.- nối thêm StringBuilder công khai (CharSequence cs)
- nối thêm StringBuilder công khai (CharSequence cs, int start, int end)
public class CharSequenceDemo {
public static void printCharSequence(CharSequence ch) {
System.out.println(ch);
}
public static void main(String[] args) {
CharSequence myString = new String("This is String ");
printCharSequence(myString);
CharSequence myStringBuilder = new StringBuilder("This is StringBuilder ");
printCharSequence(myStringBuilder);
StringBuilder s = new StringBuilder("my StringBuilder ");
//StringBuilder.append
s.append(myStringBuilder);
System.out.println(s);
//StringBuilder.append
s.append(myString);
System.out.println(s);
s.append(myString, 5,7);
System.out.println(s);
}
}
Đầu ra là:
Đây là chuỗi
Đây là StringBuilder
StringBuilder của tôi Đây là StringBuilder
StringBuilder của tôi Đây là StringBuilder Đây là String
StringBuilder của tôi Đây là StringBuilder Đây là String là
Chúng tôi đã tạo hai CharSequences, String và StringBuilder liên kết với chúng và in chúng ra. Chúng ta không thể áp dụng trực tiếp phương thức append() cho myStringBuilder, vì CharSequence không có phương thức này (nếu chưa hiểu tại sao, bạn cần tìm hiểu về tính kế thừa cũng như mở rộng và thu hẹp các kiểu tham chiếu). Do đó, chúng tôi tạo một StringBuilder với và nối tuần tự bằng cách sử dụng phương thức append với cả CharSequence. Cuối cùng, chúng tôi đã thêm StringBuilder của mình với chuỗi con “is” (“i” là phần tử thứ 5 của myStringBuilder và s là phần tử thứ 6. Hãy nhớ rằng trong phương thức này, phần tử được chỉ định là end bị loại trừ khỏi chuỗi con.
Còn StringBuffer append() thì sao?
StringBuffer.append cũng có 13 biến thể của phương thức và chúng hoạt động giống hệt như StringBuilder.- nối thêm StringBuffer công khai(boolean b)
- nối thêm StringBuffer công khai(char c)
- nối thêm StringBuffer công khai(char[] str)
- nối thêm StringBuffer công khai(char[] str, int offset, int len)
- nối thêm StringBuffer công khai(double d)
- nối thêm StringBuffer công khai(float f)
- nối thêm StringBuffer công khai(int i)
- nối thêm StringBuffer công khai(long lng)
- nối thêm StringBuffer công khai(CharSequence s)
- public StringBuffer append(CharSequence s, int start, int end)
- nối thêm StringBuffer công khai(Object obj)
- nối thêm StringBuffer công khai(String str)
- nối thêm StringBuffer công khai(StringBuffer sb)
public class AppendDemo {
// an example of using append(char[], cStr, int set, int length)
public static void main(String[] args) {
StringBuffer s = new StringBuffer("I love ");
//here is a char's array, part of which we are going to append to s
char[] cStr = new char[]
{'c', 'o', 'd', 'e', 'J', 'a', 'v', 'a', '1', '4'};
//we append 4 elements of cStr from the 4th element "J"
//with StringBuffer.append
s.append(cStr, 4, 4);
System.out.println(s);
//StringBuffer.append adds int 14 to s
s.append(14);
System.out.println(s);
}
}
Đầu ra là:
Tôi yêu Java
Tôi yêu Java14
Bạn có thể làm điều đó với mọi ví dụ của bài viết này. Họ sẽ làm việc!
GO TO FULL VERSION