Tôi muốn lưu trữ hai int trong một thời gian dài (thay vì phải tạo một đối tượng Point
mới mỗi lần).Java lưu trữ hai int trong một thời gian dài
Hiện tại, tôi đã thử cách này. Nó không làm việc, nhưng tôi không biết những gì là sai với nó:
// x and y are ints
long l = x;
l = (l << 32) | y;
Và tôi nhận được các giá trị int như sau:
x = (int) l >> 32;
y = (int) l & 0xffffffff;
Ah, có ý nghĩa. Một câu hỏi tôi có là liệu nó có quan trọng nếu bạn bitmask bằng cách sử dụng 0xffffffffL dài hoặc int 0xffffffff. – LanguagesNamedAfterCofee
@LanguagesNamedAfterCofee có vấn đề, nếu bạn mặt nạ với '0xffffffff' (không có L) thì nó chỉ là một int, vì vậy' & 'là một no-op và' y' * vẫn nhận được dấu mở rộng *. – harold
Được rồi, cảm ơn lời giải thích! – LanguagesNamedAfterCofee