Tại sao tôi không thể sử dụng \ u000D và \ u000A dưới dạng CR và LF trong Java? Lỗi khi tôi biên dịch mã:Tại sao tôi không thể sử dụng u000D và u000A dưới dạng CR và LF trong Java?
illegal line end in character literal
Tại sao tôi không thể sử dụng \ u000D và \ u000A dưới dạng CR và LF trong Java? Lỗi khi tôi biên dịch mã:Tại sao tôi không thể sử dụng u000D và u000A dưới dạng CR và LF trong Java?
illegal line end in character literal
Thoát Unicode được xử lý trước khi trình biên dịch được chạy. Do đó, nếu bạn đặt \u000A
trong một String đen như thế này:
String someString = "foo\u000Abar";
Nó sẽ được biên dịch một cách chính xác, nếu như bạn đã viết:
String someString = "foo
bar";
Stick để \r
(carriage return; 0x0D
) và \n
(dòng nguồn cấp dữ liệu; 0x0A
)
Tiền thưởng: Bạn luôn có thể vui vẻ với điều này, đặc biệt là với những hạn chế nhất đánh dấu cú pháp. lần sau khi bạn đã có một giây, hãy thử chạy mã này:
public class FalseIsTrue {
public static void main(String[] args) {
if (false == true) { //these characters are magic: \u000a\u007d\u007b
System.out.println("false is true!");
}
}
}
Bởi vì nó nằm trong phạm vi của Unicode Control characters
Đó là U+0000–U+001F
và U+007F
.
Ký tự điều khiển Unicode được sử dụng để kiểm soát việc diễn giải hoặc hiển thị văn bản , nhưng các ký tự này không có hình ảnh hoặc đại diện không gian.
Họ có thể được thoát bằng cách sử dụng \
như được mô tả trong câu trả lời ở trên bởi @ Mark
TỪ RFC:
2,5. Strings
Biểu thị chuỗi là tương tự như quy ước được sử dụng trong C nhóm ngôn ngữ lập trình. Một chuỗi bắt đầu và kết thúc bằng dấu ngoặc kép điểm. Tất cả các ký tự Unicode có thể đặt trong dấu ngoặc kép trừ các nhân vật đó phải thoát: dấu ngoặc kép, đảo ngược gạch chéo ở cuối, và các ký tự điều khiển (U + 0000 thông qua U + 001F).
Mọi ký tự có thể được thoát.
+1, nếu (false == true) –
+1 Ví dụ tuyệt vời :-) – Grodriguez
Trò chơi của bên thú vị. – Jay