2017-07-27 14 views
5

Tại sao chúng ta không thể vượt qua một giá trị char như một cuộc tranh cãi với bất kỳ phương pháp mà chấp nhận một tham số short, trong khi chúng ta có thể vượt qua một giá trị char phương pháp khác có tham số là của int loại? Tại sao quá trình truyền kiểu không diễn ra từ char đến short, với kích thước bằng nhau? Tôi hy vọng ngắn cũng có thể lưu trữ càng nhiều giá trị như short có thể.Loại đúc trong Java từ char để ngắn

+4

Tôi đã cố định hầu hết câu hỏi để đọc tốt hơn bằng tiếng Anh, nhưng tôi không hiểu câu cuối cùng: "Tôi hy vọng ngắn cũng có thể lưu trữ đủ giá trị càng nhiều càng tốt", vì vậy tôi đã để lại nó là ... –

Trả lời

13

Tại sao chúng ta không thể vượt qua một giá trị char như một đối số cho phương thức bất kỳ mà chấp nhận một tham số short

Bởi vì không có chuyển đổi ngầm từ char để short trong bối cảnh sự thỉnh nguyện.

trong khi chúng tôi có thể chuyển giá trị char cho phương pháp khác có tham số là loại int?

Đó là bởi vì có một chuyển đổi ngầm sẵn từ char để int trong bối cảnh sự thỉnh nguyện.

Tại sao quá trình tạo kiểu không diễn ra từ char đến short, với kích thước bằng nhau? Tôi hy vọng ngắn cũng có thể lưu trữ càng nhiều giá trị như short có thể.

Mặc dù charshort đều giống nhau kích thước, char là unsigned trong khi short được ký kết. Đó là lý do tại sao không có chuyển đổi tiềm ẩn từ char đến short.

Việc quy đổi từ char để int là một mở rộng chuyển đổi nguyên thủy (JLS 5.1.2) trong khi việc chuyển đổi từ char để short là một thu hẹp chuyển đổi nguyên thủy (JLS 5.1.3). Đặc biệt (tôi nhấn mạnh):

Chuyển đổi hẹp của một char đến một loại tách rời T tương tự như vậy chỉ đơn giản là loại bỏ tất cả ngoại trừ các bit thứ tự n thấp nhất, trong đó n là số bit được sử dụng để đại diện cho loại T. trong Ngoài khả năng mất thông tin về độ lớn của giá trị số, điều này có thể làm cho giá trị kết quả là số âm, mặc dù ký tự đại diện cho giá trị số nguyên không dấu 16 bit.

6

đặc điểm kỹ thuật Java nói:

Bên cạnh đó, nếu biểu thức là một biểu thức hằng số (§15.28) kiểu byte, ngắn, char, int hay:

Một thu hẹp nguyên thủy chuyển đổi có thể được sử dụng nếu loại biến là byte, ngắn hoặc char và giá trị của biểu thức hằng số là biểu thị trong loại biến.

Char có giá trị nhỏ nhất là 0 và giá trị tối đa là 65.535.

Ngắn có giá trị tối thiểu là -32,768 và giá trị tối đa là 32,767.

Số nguyên có giá trị tối thiểu là -2,147,483,648 và giá trị tối đa là 2.147.483.647.

Vì vậy, char có thể phù hợp với số nguyên nhưng không thành ngắn, đó là lý do tại sao bạn nên đảm bảo với java mà bạn muốn thực hiện ở đây.

+0

ngắn cũng như số nguyên cả hai có thể giữ các dấu hiệu và giá trị unsigned nhưng loại đúc đang diễn ra trong trường hợp số nguyên nhưng không phải trong ngắn –

+0

Có. Char có giá trị nhỏ nhất là 0 và giá trị tối đa là 65.535. Ngắn có giá trị tối thiểu là -32,768 và giá trị tối đa là 32,767. Số nguyên có giá trị tối thiểu là -2,147,483,648 và giá trị tối đa là 2.147.483.647. Vì vậy, char có thể phù hợp với số nguyên nhưng không thành ngắn. – Max

+0

vâng ... tôi hiểu rồi. Rất nhiều –

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