2012-04-27 37 views
5

Để hiểu biết của tôi một char là một ký tự đơn, đó là một chữ cái, một số , dấu câu, một tab, một khoảng trắng hoặc một cái gì đó tương tự. Và do đó, khi tôi thực hiện:Thêm char và int

char c = '1'; 
System.out.println(c); 

Kết quả 1 chính xác là những gì tôi mong đợi. Vì vậy, tại sao nó rằng khi tôi làm điều này:

int a = 1; 
char c = '1'; 
int ans = a + c; 
System.out.println(ans); 

tôi kết thúc với kết quả ?

+0

bản sao có thể có của [Trong Java, là kết quả của việc thêm hai ký tự một int hoặc char?] (Http://stackoverflow.com/questions/8688668/in-java -is-the-result-of-the-bổ sung-of-hai-chars-an-int-hoặc-a-char) – vaxquis

Trả lời

5

Bạn nhận được điều đó vì nó thêm ASCII value của thẻ. Bạn phải chuyển đổi nó thành một int đầu tiên.

2

Số 1 là mã ASCII 49. Trình biên dịch đang thực hiện điều hợp lý duy nhất mà nó có thể thực hiện với yêu cầu của bạn và nhập vào int.

+0

chỉ thêm tham chiếu, mặc dù bạn có thể yêu cầu trình biên dịch tạo bảng này quá http: // www. asciitable.com/ – Geek

0

Một char là int được ngụy trang. Một char đại diện cho một ký tự bằng cách mã hóa nó thành một int. Vì vậy, ví dụ 'c' được mã hóa với 49. Khi bạn thêm chúng lại với nhau, bạn nhận được một int là tổng của mã của char và giá trị của int.

+0

Nó không phải là một 'ngụy trang int', nhưng nó là một số nguyên (toàn bộ số) giá trị. – delicateLatticeworkFever

+0

@ goldilocks những gì bạn đang nói là chính xác những gì tôi có ý nghĩa. –

+2

Được rồi, nhưng (để nitpick; /) một 'int' là một loại java, và một char không phải là một ngụy trang cho một loại int. Đó là một char, nhưng nó có một giá trị * số nguyên * (cũng như một 'int'). – delicateLatticeworkFever

2

Bạn kết thúc với ra khỏi 50 vì bạn đã nói với Java để điều trị là kết quả của việc bổ sung như một int trong dòng sau:

int ans = a + c; 

Thay vì int bạn khai báo ans như một char.

Giống như vậy:

final int a = 1; 
final char c = '1'; 
final char ans = (char) (a + c); 
System.out.println(ans); 
1

Bởi vì bạn đang thêm giá trị của c (1) với giá trị unicode của 'a', đó là 49. 128 giá trị điểm unicode đầu tiên là giống hệt nhau để ASCII, bạn có thể tìm thấy những ở đây:

http://www.asciitable.com/

Thông báo Chr '1' là tháng mười hai 49. phần còn lại của điểm unicode đang ở đây:

http://www.utf8-chartable.de/

0

'1' là một chữ số, không phải là một con số, và được mã hóa trong ASCII là có giá trị 49.

Chars trong Java có thể được thăng chức int, vì vậy nếu bạn hỏi thêm một int như 1 tới một char như '1', bí danh 49, kiểu char hẹp hơn được thăng int, nhận được 49 tuổi, + 1 => 50.

Lưu ý rằng tất cả các phi chữ số char có thể được thêm vào theo cùng một cách:

'a' + 0 = 97 
'A' + 0 = 65 
' ' + 0 = 32 
Các vấn đề liên quan