Java String contains extraneous data -


i have input in utf16le encoding. time input reaches code been through fileinputstream encased in filereader encased in linenumberreader.

the first line read gives string like:

"1 piece of data string"

however, looking string value along lines of:

[, 1, p, i, ...]

notice empty element start.

no string passed through couple of functions here , there, converted object , being put through paces. @ point, should first part of string (the 1 or in case number including decimals) passed function has parse actual number.

the content of string appears "1" in value says:

[, 1, p, i, ...]

so whole string still in there.

in case returns parseexception , print unparseable number exception messages , logging tels me "1" unparseable number.

the real problem appears leading empty element subsequent lines show similar behavior except leading empty element , parse.

a string (at least implementation in openjdk) stores char[], offset , count. actual content of string characters in char[] indices offset offset+count.

that means char[] can hold more characters string represents.

this done in order able share char[]s between different string instances.

for example, if have string value foobar , call .substring(3) on it, resulting string represent bar, may reference same char[]. second string have offset 3 bigger originals string , count that's 3 smaller.

all of works because string objects immutable: since no single string ever modify it's char[] in way, it's safe them share it.

this means inspecting string object in debugger might give false impression. therefore safest thing if want inspect string character-for-character call either tochararray() or call charat() in loop.


Comments

Popular posts from this blog

javascript - Enclosure Memory Copies -

php - Replacing tags in braces, even nested tags, with regex -