小编Ume*_*esh的帖子

ByteBuffer中编码的字符串的长度是多少

byte[] byteArray = Charset.forName("UTF-8").encode("hello world").array();
System.out.println(byteArray.length);
Run Code Online (Sandbox Code Playgroud)

为什么上面的代码行打印出12,不应该打印11代替?

java character-encoding

8
推荐指数
1
解决办法
1285
查看次数

是否可以重新引用任何最终的String变量.请告诉我在给定的程序中发生了什么

我用两种不同的方式编写了一个相同的程序,两者都给了我不同的输出.我无法理解为什么.请纠正我.在第一个程序中,我得到了这个输出

原文: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)

java

8
推荐指数
1
解决办法
113
查看次数

标签 统计

java ×2

character-encoding ×1