我对你们所有人都有一个愚蠢的问题。鉴于以下Java代码
public void funct(String a) {
byte[] bytearr;
bytearr = new byte[a.getBytes().length];
bytearr = a.getBytes();
}
新通话是否有任何改变?特别是,是否以与
]不同的方式处理代码public void funct(String a) {
byte[] bytearr;
bytearr = a.getBytes();
}
我问是因为,当执行时,两者都呈现相同的结果,如果],我将无法获得>
总的来说,任何建议来观察JVM背后的内存分配/魔术行为都将受到赞赏。
谢谢!
我对你们所有人都有一个愚蠢的问题。给定下面的Java代码public void funct(String a){byte [] bytearr; bytearr =新的byte [a.getBytes()。length]; bytearr = a.getBytes(); } ...
唯一的区别是,您在第一个代码段中创建了一个多余的不必要的对象。如果要证明这一点,可以在第一个指向第二个数组引用,打印出它们的等效性,然后在第一个数组上调用string.getBytes()并再次测试其等效性:
两个代码块的最终结果是相同的。第一个版本做了一些不必要的额外工作。
它们是不同的,让我们看一下字节码: