2012-03-17 51 views
7

thể trùng lặp:
Java string replace and the NUL (NULL, ASCII 0) character?Ý nghĩa của char zero (0) trong Java là gì?

tôi đang làm một số thuật toán String trong Java, và tôi nhận thấy rằng bất cứ nơi nào tôi bao gồm một char với giá trị từ 0 (zero) nó đánh dấu sự cuối chuỗi. Như thế này:

String aString = "I'm a String"; 
char[] aStringArray = aString.toCharArray(); 
aStringArray[1] = 0; 
System.out.println(new String(aStringArray)); //It outputs "I" 

Lý do/nguyên nhân của hành vi này là gì?

+1

Null Ký tự: http://en.wikipedia.org/wiki/Null_character –

Trả lời

10

Ký tự '\0' là ký tự rỗng. Đó là một nhân vật kiểm soát, và nó không chấm dứt chuỗi, đó không phải là cách chuỗi hoạt động trong Java, mặc dù vậy.)

2

Để biết thêm chi tiết, hãy thêm mã sau vào mã:

System.out.println(new String(aStringArray).length()); 
for (Byte b : new String(aStringArray).getBytes()) { 
    System.out.print("["+b+"]"); 
} 

Hệ thống hiển thị của bạn (bảng điều khiển hoặc cửa sổ đầu ra) không hiển thị mọi thứ.

0

Tôi tự hỏi nếu bạn đã đăng mã thực sự của mình chưa. Khi sử dụng hàm tạo String(byte[]), độ dài thực tế của chuỗi phụ thuộc vào nội dung của mảng.