2008-12-31 22 views
11

Tôi đã lập trình Java từ năm 2004, chủ yếu là các ứng dụng doanh nghiệp và web. Nhưng tôi chưa bao giờ sử dụng ngắn hoặc byte, khác với chương trình đồ chơi chỉ để biết các loại này hoạt động như thế nào. Ngay cả trong một số cho vòng lặp trong 100 lần, chúng tôi thường đi với int. Và tôi không nhớ nếu tôi đã từng gặp bất kỳ mã nào đã sử dụng byte hoặc ngắn, khác với một số API và khung công khai. Có, tôi biết, bạn có thể sử dụng ngắn hoặc byte để tiết kiệm bộ nhớ trong mảng lớn, trong trường hợp tiết kiệm bộ nhớ thực sự quan trọng. Có ai quan tâm để thực hành điều đó không? Hoặc chỉ là một cái gì đó trong sách.Bất kỳ ai sử dụng loại nguyên thủy ngắn và byte, trong ứng dụng thực tế?

[Edited]

Sử dụng byte mảng cho lập trình mạng và truyền thông socket là một cách sử dụng khá phổ biến. Cảm ơn, Darren, để chỉ ra điều đó. Bây giờ, làm thế nào về ngắn? Ryan, đã đưa ra một ví dụ tuyệt vời. Cảm ơn, Ryan.

Trả lời

8

Hãy nhớ rằng Java cũng được sử dụng trên thiết bị di động, nơi bộ nhớ bị giới hạn hơn nhiều.

4

Tôi đã sử dụng 'byte' rất nhiều, trong chức năng triển khai mã C/C++ như nén ảnh (tức là chạy thuật toán nén trên mỗi byte bitmap đen trắng) và xử lý thông báo mạng nhị phân (theo giải thích byte trong thư).

Tuy nhiên, tôi hầu như không bao giờ sử dụng 'float' hoặc 'double'.

+1

Ahan .. Có thể là do miền bạn đang làm việc. Tương tự như vậy có thể đúng với tôi. –

11

Tôi sử dụng nhiều byte. Thông thường ở dạng mảng byte hoặc ByteBuffer, cho truyền thông mạng của dữ liệu nhị phân.

Tôi hiếm khi sử dụng phao hoặc kép và tôi không nghĩ mình đã từng sử dụng ngắn.

1

Tôi đã sử dụng byte khi lưu trạng thái trong khi thực hiện kiểm tra mô hình. Trong ứng dụng đó, các khoản tiết kiệm không gian đáng để làm việc thêm. Nếu không tôi không bao giờ sử dụng chúng.

4

Cách sử dụng chính tôi đã thấy đối với chúng là xử lý dữ liệu với cấu trúc không xác định hoặc thậm chí không có cấu trúc thực. Lập trình mạng là một ví dụ về trước đây (bất cứ ai gửi dữ liệu biết ý nghĩa của nó nhưng bạn có thể không), một cái gì đó giống như nén hình ảnh 256-màu (hoặc màu xám) hình ảnh là một ví dụ về sau này.

Tắt đầu grep của tôi đến với tư cách là một cách sử dụng khác, cũng như bất kỳ loại tệp sao chép nào. (Chắc chắn, hệ điều hành sẽ làm điều đó - nhưng đôi khi điều đó không đủ tốt.)

1

Tôi thấy tôi đã sử dụng biến byte khi thực hiện một số xử lý hình ảnh ở mức độ thấp. Chương trình vẽ .Net GDI + thực sự rất chậm nên tôi đã tự tay cuộn.

Hầu hết thời gian, mặc dù, tôi gắn với số nguyên đã ký trừ khi tôi buộc phải sử dụng thứ gì đó lớn hơn, do các ràng buộc về vấn đề. Bất kỳ loại mô hình vật lý nào tôi thường yêu cầu phao hoặc tăng gấp đôi, ngay cả khi tôi không cần độ chính xác.

4

Bản thân ngôn ngữ Java làm cho việc sử dụng các loại byte hoặc short không hợp lý một cách bất hợp lý. Bất cứ khi nào bạn thực hiện bất kỳ thao tác nào trên một giá trị byte hoặc short, trước tiên Java sẽ nâng cấp nó lên một số int và kết quả của hoạt động được trả lại dưới dạng int. Ngoài ra, họ đã ký, và không có tương đương chưa ký, đó là một nguồn thường xuyên của sự thất vọng.

Vì vậy, bạn kết thúc bằng cách sử dụng byte rất nhiều vì nó vẫn là khối xây dựng cơ bản của tất cả mọi thứ trên mạng, nhưng loại short cũng có thể không tồn tại.

+0

Đồng ý. int literals là dễ dàng hơn để lập trình với (vòng, quầy vv) tuy nhiên cho chức năng cụ thể như đã đề cập bởi những người khác những loại rất tiện dụng. – OscarRyz

3

Cho đến hôm nay, tôi chưa nhận thấy có ít khi tôi sử dụng chúng.

Tôi đã sử dụng byte cho các công cụ liên quan đến mạng, nhưng phần lớn thời gian chúng dành cho các công cụ/học tập của riêng tôi. Trong các dự án công việc, những thứ này được xử lý bởi các khung công tác (ví dụ như JSP)

Ngắn? hầu như không bao giờ.

Dài? Cũng không.

literals số nguyên ưa thích của tôi là luôn int, cho vòng, quầy vv

Khi dữ liệu đến từ một nơi khác (cơ sở dữ liệu chẳng hạn) tôi sử dụng các loại thích hợp, nhưng đối với literals tôi sử dụng luôn int.

+0

Đối với cơ sở dữ liệu, tôi thường đi cho trình bao bọc. Có, bởi vì null nổi tiếng. –

+0

mmhh Tôi có cảm giác lẫn lộn về hàm bao. May mắn thay với java 1,5 phần lớn thời gian nó là minh bạch sau autoboximg – OscarRyz

2

Có lẽ thú vị hơn khi xem xét ngữ nghĩa của int. Là những giới hạn tùy ý và cắt ngắn im lặng những gì bạn muốn? Đối với mã cấp ứng dụng thực sự muốn các số nguyên có kích thước tùy ý, nó chỉ là Java không có cách nào để biểu diễn một cách hợp lý.

3

Tôi sử dụng byte ở nhiều nơi khác nhau, chủ yếu liên quan đến xử lý dữ liệu cấp thấp. Thật không may, các nhà thiết kế của ngôn ngữ Java đã ký byte. Tôi không thể nghĩ ra bất kỳ tình huống nào trong đó có các giá trị byte âm đã có ích. Có dải 0-255 sẽ hữu ích hơn nhiều.

Tôi không nghĩ mình đã từng sử dụng quần short trong bất kỳ mã nào phù hợp. Tôi cũng không bao giờ sử dụng phao nổi (nếu tôi cần các giá trị dấu chấm động, tôi luôn sử dụng gấp đôi).

Tôi đồng ý với Tom. Lý tưởng nhất là, trong các ngôn ngữ cấp cao, chúng ta không nên quan tâm đến các biểu diễn máy cơ bản. Chúng ta có thể xác định phạm vi của chính chúng ta hoặc sử dụng các con số chính xác tùy ý.

3

khi chúng tôi đang lập trình cho các thiết bị điện tử như điện thoại di động, chúng tôi sử dụng byte và viết tắt. Trong trường hợp này, chúng tôi cần chú ý đến quản lý bộ nhớ.

1

Trên thẻ dữ liệu trong bộ nhớ, nó có thể hữu ích. Khái niệm về một DataGrid như Gemfire là có một bản đồ phân tán rất lớn. Khi bạn không có đủ bộ nhớ, bạn có thể tràn vào đĩa với chiến lược LRU, nhưng các phím của tất cả các mục của bản đồ của bạn vẫn còn trong bộ nhớ (ít nhất là với Gemfire).

Vì vậy, điều rất quan trọng là làm cho các phím của bạn có dấu chân nhỏ, đặc biệt nếu bạn đang xử lý các tập dữ liệu rất lớn. Đối với giá trị mục nhập, khi bạn cũng có thể sử dụng loại phù hợp hơn với dấu chân bộ nhớ nhỏ ...

1

Tôi đã sử dụng quần short và byte trong các ứng dụng Java giao tiếp với usb tùy chỉnh hoặc bộ vi điều khiển nối tiếp để nhận các giá trị 10 bit được bao bọc trong 2 byte dưới dạng quần short.

Các vấn đề liên quan