Discussion:
[問題] 請問 Java 的 String 是否有結束符號呢?
(时间太久无法回复)
換行
2007-03-13 05:46:02 UTC
Permalink
以往在 C/C++ 中,可以用 \0 當做一個字串的結束符號,或是計算字串的長度

想請教的是,在 Java 中的 String,有沒有類似 \0 的字元呢?


目前的問題大概如下:

byte [] str_arr = "ABCD".getBytes();
byte [] out_arr = new byte[10];
// 將 str_arr 複制到 out_arr 中
System.out.println(new String(out_arr).length());
^^^^^^^^^^^^^^^
這邊 String 的長度會變成 10

感覺起來一整個怪怪的...:(


會有這個需求,是因為我要把 String 寫到檔案中,而檔案中分配給 String 的空間

是固定的(ex:10),當我寫入後,再讀出來時,String 的長度會不正確,不知道該

怎麼解決才好,目前的想法是碰到 0 之後的 byte 全都不轉成 String,不知道這樣

會不會有問題呢?


先謝了...:)

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.143.232.253
m...
2007-03-13 07:05:28 UTC
Permalink
※ 引述《endl (換行)》之銘言:
: 以往在 C/C++ 中,可以用 \0 當做一個字串的結束符號,或是計算字串的長度
: 想請教的是,在 Java 中的 String,有沒有類似 \0 的字元呢?

  Java 的 String 不像 C 一樣用 \0 作結束符號。

: 目前的問題大概如下:
: byte [] str_arr = "ABCD".getBytes();
: byte [] out_arr = new byte[10];
: // 將 str_arr 複制到 out_arr 中
: System.out.println(new String(out_arr).length());
: ^^^^^^^^^^^^^^^
: 這邊 String 的長度會變成 10

  此時字串內容為 "ABCD\u0000\u0000\u0000\u0000\u0000\u0000",
  所以長度為 10.

: 感覺起來一整個怪怪的...:(
: 會有這個需求,是因為我要把 String 寫到檔案中,而檔案中分配給 String 的空間
: 是固定的(ex:10),當我寫入後,再讀出來時,String 的長度會不正確,不知道該
: 怎麼解決才好,目前的想法是碰到 0 之後的 byte 全都不轉成 String,不知道這樣
: 會不會有問題呢?

  這個你可以自己試試看。

: 先謝了...:)

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.175.153.57

Loading...