Tôi có một chuỗi và tôi cần phải đi qua nó như là một mảng char. Tất nhiên phương pháp thông thường là sử dụng toCharArray()
Làm cách nào để chuyển đổi chuỗi thành char [] mà không sao chép đối tượng?
String str = "Hello";
char[] charArr = str.toCharArray();
Bây giờ, các mã nguồn cho toCharArray() là như sau.
public char[] toCharArray() {
// Cannot use Arrays.copyOf because of class initialization order issues
char result[] = new char[value.length];
System.arraycopy(value, 0, result, 0, value.length);
return result;
}
Vì vậy, Java đang tạo đối tượng mới trong bộ nhớ kiểu char [] và sao chép đối tượng chuỗi vào đối tượng mới.
Câu hỏi của tôi là có hay không có thể sử dụng chuỗi dưới dạng char [] mà không sao chép mảng. Ý định của tôi là tiết kiệm dung lượng bộ nhớ. Nếu điều này là không thể, có một lý do như vậy?
Cảm ơn trước!
Đưa ra tham chiếu trực tiếp đến mảng 'char []' có thể thay đổi của một đối tượng được cho là không thay đổi, sẽ là một ý tưởng rất tồi, đặc biệt nếu đối tượng bất biến được đề cập nếu kiểu 'Chuỗi', để thực hiện vai trò có liên quan đến bảo mật. – Holger
Nếu bạn muốn tiết kiệm dung lượng bộ nhớ, không yêu cầu mảng 'char []'. Bạn không giải thích, tại sao bạn nghĩ bạn cần nó. – Holger
Tôi cần một mảng để tôi có thể lặp qua nó theo chỉ mục. Tuy nhiên, những gì tôi đã không nhận ra và những gì Nicolas Filotto chỉ ra là Strings chỉ đơn giản là một lớp lưu trữ chuỗi trong một mảng 'char []'. Doy! Lỗi người mới bắt đầu :) –