Khi tôi khởi tạo một mảng trong Java thích:Bộ đệm trực tiếp trong Java có được khởi tạo thành giá trị mặc định như mảng không?
float[] array = new float[1000];
tất cả các yếu tố này được khởi tạo là 0. Đó là cũng là trường hợp khi tôi bố trí một bộ đệm trực tiếp như thế này:
FloatBuffer buffer = ByteBuffer.allocateDirect(4*1000).asFloatBuffer();
? Tôi luôn có vẻ chỉ nhận được số 0, nhưng có lẽ nó phụ thuộc vào việc thực hiện ...
Câu hỏi thú vị. [ByteBuffer javadoc] (http://download.oracle.com/javase/6/docs/api/java/nio/ByteBuffer.html) dường như không nói gì về vấn đề này. Tuy nhiên, lưu ý rằng các trường hợp hơi khác nhau. Trong trường hợp đầu tiên, mỗi phần tử được khởi tạo thành '0.0f' trong khi sau đó mỗi float được đọc là' 0.0f' sẽ chỉ là do thực tế mẫu [* bit * cho '0.0f' là" tất cả số 0 "] (http://steve.hollasch.net/cgindex/coding/ieeefloat.html) trong IEEE-754 –
Xem câu trả lời của tôi dưới đây: ByteBuffer javadoc không nói bất cứ điều gì, nhưng lớp đệm cha mẹ làm. –