Hi guys: Tôi đã rất ngạc nhiên khi thấy rằng đoạn mã sauJava: Char so với kích thước byte chuỗi.
System.out.println("Character size:"+Character.SIZE/8);
System.out.println("String size:"+"a".getBytes().length);
Đầu ra này:
kích thước nhân vật: 2
Chuỗi kích thước: 1
tôi sẽ giả sử rằng một chuỗi ký tự đơn sẽ mất cùng một byte (hoặc nhiều hơn) so với một char đơn.
Trong im đặc biệt tự hỏi ---
Nếu tôi có một đậu java với một số lĩnh vực trong đó, làm thế nào kích thước của nó sẽ tăng lên tùy theo tính chất của các trường (nhân vật, String, Boolean, Vector vv ..) Tôi giả định rằng tất cả các đối tượng java có một số dấu chân (có thể là tối thiểu), và rằng một trong những dấu chân nhỏ nhất này sẽ là một ký tự đơn. Vì vậy .. Để kiểm tra giả thiết cơ bản đó, tôi bắt đầu với đoạn mã trên - và kết quả của các câu lệnh in có vẻ phản trực giác.
Bất kỳ thông tin chi tiết nào về cách lưu trữ java/serializes ký tự và chuỗi theo mặc định sẽ rất hữu ích ... cảm ơn.
Độ dài của chuỗi là số ký tự chứa trong đó. Một ký tự có thể được mã hóa trong nhiều hơn một byte. – Oded
Chuỗi có thể được mã hóa UTF-8, do đó, "a" chỉ mất một byte. –
[Tối thiểu tuyệt đối cho mọi nhà phát triển phần mềm hoàn toàn, tích cực phải biết về bộ ký tự Unicode và ký tự (Không có lý do!)] (Http://www.joelonsoftware.com/articles/Unicode.html) – Oded