Khi tôi đang giao dịch với chủ đề khái niệm trong Java, tôi đã thấy tệp nguồn Thread.java. Tôi nhận thấy khi phương pháp setName()
gán chuỗi cho một mảng ký tự gọi là "name[]"
. Java có một tính năng của kiểu dữ liệu String, sau đó tại sao chúng sử dụng mảng ký tự.tại sao setName trong lớp Thread gán cho một mảng ký tự? Tại sao không phải là một String?
Trong file nguồn nó được khởi tạo như thế nào,
private char name[]; // why not "private String name;"
Trong setName()
phương pháp,
public final void setName(String name) {
checkAccess();
this.name = name.toCharArray();
}
Xin hãy giúp tôi. Cảm ơn trước.
Bạn có thể sao lưu dữ liệu đó bằng một số tham chiếu hay gì đó không? Tôi không thấy bất cứ điều gì trong 'Thread.java' hoặc' Thread.c' (trong cây 'native') làm cho tên có thể truy cập được tới mã gốc. Nếu nó được truy cập từ mã nguồn gốc, tôi hy vọng sẽ thấy một ký tự null ở cuối. Điều này có vẻ như đầu cơ. –
Đó là phản ứng tuyệt vời, cảm ơn bạn. tôi có thể xem xét, nó là một trong những lý do, java không phải là ngôn ngữ hướng đối tượng thuần túy? – kik
@kik: ** toàn bộ ** "là ngôn ngữ OO thuần túy", câu hỏi là ** vô dụng ** vì không ai hỏi nó có thể cung cấp định nghĩa hữu ích về chính xác ngôn ngữ OO thuần túy. Tôi rất muốn được chứng minh là sai, nhưng cho đến nay nó vẫn chưa xảy ra. –