2010-10-05 31 views

Trả lời

98

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!"); 
     } 
    } 
} 
+19

+1, nếu (false == true) –

+4

+1 Ví dụ tuyệt vời :-) – Grodriguez

+0

Trò chơi của bên thú vị. – Jay

1

Bởi vì nó nằm trong phạm vi của Unicode Control characters

Đó là U+0000–U+001FU+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.

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