2016-04-04 18 views
8

Tôi có những tuyên bố sau: u65549 là số nhận dạng Java hợp lệ không?

int \u65549 = 9; 
System.out.println(\u65549); 

Điều này biên dịch hoàn hảo. Và đầu ra

9 

Nhưng:

System.out.println(Character.isJavaIdentifierStart(\u65549)); 

đầu ra

false 


tôi đã làm một số nghiên cứu về chủ đề này. Tôi đọc tài liệu và nói:

Phương pháp này không thể xử lý các ký tự bổ sung. Để hỗ trợ tất cả các ký tự Unicode, bao gồm các ký tự bổ sung, hãy sử dụng phương thức isJavaIdentifierStart(int).

Sau đó, tôi đã làm điều này:

int x = \u65549; 
System.out.println(Character.isJavaIdentifierStart(x)); 

Nhưng ngay cả điều này in:

false 

Vì vậy, này có ý nghĩa rằng Java là nhầm lẫn trên \u65549 là một định danh?

+0

@ bcsb1001 Bạn đã bỏ tuyên bố 'int \ u65549' trong cả hai đoạn mã và đó là lý do tại sao bạn không thể tạo lại vấn đề. – rhino

+0

Câu trả lời được chấp nhận đã quên đề cập đến ví dụ thứ 3 của bạn. Trên thực tế 'int \ u65549 = 9 (bạn quên đề cập đến điều này phải xuất hiện trên đầu trang); int X = \ u65549; Sop (Character.isJavaIdentifierStart (x)); 'giống như' int A = 9; int X = A; Sop (Character.isJavaIdentifierStart (X)); ', có nghĩa là kết quả tương tự như ví dụ thứ 2' int A = 9; Sop (Character.isJavaIdentifierStart (A)); ' –

Trả lời

8
int \u65549 = 9; 
System.out.println(Character.isJavaIdentifierStart(\u65549)); 

Ở đây, \u65549 là tên của biến số, cũng chứa giá trị 9. Nó nên (và không) làm tương tự như nếu bạn đã viết:

System.out.println(Character.isJavaIdentifierStart(9)); 

mà in false, vì bạn không thể có một định danh Java bắt đầu với một ký tự khoảng trắng (\u0009 là điểm mã cho TAB NGANG, '\t') .

+0

Ồ vâng bạn đúng. Cảm ơn. – Hackerdarshi

+0

Bạn đã nhìn thấy nhận xét đã bị xóa trong thông báo của tôi, phải không? :) Tôi đã thực hiện một lỗi rõ ràng trong suy nghĩ của tôi rằng tôi sớm sửa chữa, nhưng điều tốt là tôi đã giúp làm cho bài viết của bạn thậm chí còn rõ ràng hơn. ** Chỉnh sửa: ** Tôi vừa kiểm tra lịch sử sửa đổi và có vẻ như bạn đã phạm phải sai lầm tương tự lúc đầu. Vui vì tôi không đơn độc :) – rhino

2

\u65549 được hiểu là ký tự unicode \u6554, theo sau là ký tự 9.

Đây là cú pháp hợp lệ trong String.

Ngoài ra, \u65549 không phải là số nhận dạng unicode hợp lệ. Một chuỗi chỉ có một phần hợp lệ (4 ký tự trong phạm vi thập lục phân) khi nó gặp tiền tố unicode (\u), do đó, nó chỉ có một phần định danh hợp lệ và có được một ký tự hợp lệ.

+0

Vậy tại sao những phương thức đó trả về false? – Hackerdarshi

+0

Bản in 'Character.isJavaIdentifierStart (\ u6554)' là gì? –

+0

@AndyTurner Nó không biên dịch.Các lỗi nói: "Không thể tìm thấy biểu tượng, biến thể " (Nó thực sự vẽ một hình vuông.) – Hackerdarshi

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