今天刚看到一片文章是这样写的
String s="a"+"b"+"c";
会被编译为
String s = new StringBuffer().append("a").append("b").append("c").toString();所以有时候没必要刻意的为了追求性能而写成下面一种形式。想确认一下是不是这样的?
顺便问一句:AIX和Windows都是采用little_endian的字节序吗?谢谢
String s="a"+"b"+"c";
会被编译为
String s = new StringBuffer().append("a").append("b").append("c").toString();所以有时候没必要刻意的为了追求性能而写成下面一种形式。想确认一下是不是这样的?
顺便问一句:AIX和Windows都是采用little_endian的字节序吗?谢谢
String s="a"+"b"+"c";
编译器的确很容易对于:
String s="a"+"b"+"c";
编译器的确很容易优化,因为本来就是常量表达式而已嘛,我都怀疑倒底是优化成
String s = new StringBuffer().append("a").append("b").append("c").toString();
还是直接优化成
String s="abc";但问题是对天复杂的情况编译器优化不了怎么办呢?比如:
String s = "a";
if(new Random().nextInt() > 10000) {
s = a + "Hello World";
} else {
if(System.in.Read() > 'A') {
s += s2.toLowerCase();
}
}
s += System.getProperty("user.dir");
.....
但如果你使用Java语言编程,那么不需要考虚这些。
向高手们学习~~~
String对象是常量字符串,一旦被初始化和赋值,它的值和所分配的内存就被固定了.如果硬要改变它的值,将会产生一个包含新值的新String对象.这就是String对象会消耗掉很多资源的原因.而StringBuffer类被设计用与创建和操作动态字符串信息,为该对象分配的内存会自动扩展以容纳新增的文本。
向高手学习中......