byte[] byteArray = Charset.forName("UTF-8").encode("hello world").array();
System.out.println(byteArray.length);
Run Code Online (Sandbox Code Playgroud)
为什么上面的代码行打印出12,不应该打印11代替?
我用两种不同的方式编写了一个相同的程序,两者都给了我不同的输出.我无法理解为什么.请纠正我.在第一个程序中,我得到了这个输出
原文:Umesh
改变了:Xmesh
在第二个程序中,我得到了这个输出.
原文:Umesh
改变了:Umesh
计划-1
import java.lang.reflect.Field;
public class SomeClass {
public static void main(final String[] args) throws Throwable {
final String s = "Umesh";
changeString(s);
}
// We need a method so the compiler won't inline "s":
static void changeString(final String s) throws Throwable {
System.out.println("Original: " + s);
final Field field = String.class.getDeclaredField("value");
field.setAccessible(true);
final char[] value = (char[]) field.get(s);
value[0] = 'X';
System.out.println("Changed: " + s);
}
}
Run Code Online (Sandbox Code Playgroud)
计划-2
import java.lang.reflect.Field;
public class SomeClass { …Run Code Online (Sandbox Code Playgroud)