Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正确的字符串、变量和循环编码实践-Java(Android)_Java_Android_Performance - Fatal编程技术网

正确的字符串、变量和循环编码实践-Java(Android)

正确的字符串、变量和循环编码实践-Java(Android),java,android,performance,Java,Android,Performance,我是Android开发者,对Java并不陌生,但我对Performance的最佳实践有一些疑问。我将从我的代码中给出一些示例,以便您做出决定 字符串串联 url = "http://www.myserver." + domain + "/rss.php?" + rawType + rawCathegory + rawSubCathegory + rawLocality + rawRadius + rawKeyword + rawPriceFrom + rawPriceto; 据我所知,这将在创

我是Android开发者,对Java并不陌生,但我对Performance的最佳实践有一些疑问。我将从我的代码中给出一些示例,以便您做出决定

字符串串联

url = "http://www.myserver." + domain + "/rss.php?"
+ rawType + rawCathegory + rawSubCathegory + rawLocality
+ rawRadius + rawKeyword + rawPriceFrom + rawPriceto;
据我所知,这将在创建url变量之前创建11个字符串对象,对吗

我学过使用StringBuilder,但我的问题是,concat的最小字符串数量是多少才能使其高效?我认为在两个字符串中使用它没有多大意义,对吗

局部变量

有时我会尝试像这样“链接”方法调用

FilterData.getInstance(context).getFilter(position).setActivated(isActivated);
天真地避免变量分配,但它是否比这更快

FilterData filterData = FilterData.getInstance(context);
Filter filter = filterData.getFilter(position);
filter.setActivated(isActivated);
我认为应该这样做,因为我保存了一个局部变量,但是如果方法名很长,它就变得不可读,等等

循环

说增强的for循环比常规的for循环快3倍,很好,而且更容易编写,但是,如果我需要索引呢?据我所知,在enhaced for循环中,我需要自己跟踪它,就像这样

int index = 0;
for(Object obj : objects) {
    // do stuff
    index++;
}
这仍然比常规循环快吗

for(int i = 0; i < objects.size(); i++) {
   // do stuff
}
for(int i=0;i
我认为增强的for循环可能会对该限制进行优化,因此如果size()优化到这一点

int size = objects.size();
for(int i = 0; i < size; i++) {
   // do stuff
}
int size=objects.size();
对于(int i=0;i
那会怎么样

谢谢,我知道这可能是吹毛求疵,没有多大区别,但我宁愿用正确的方法学习这些常见的任务。

Strings: 除非涉及到循环,否则编译器足够聪明,可以以最佳方式为您执行串联

循环时,请使用StringBuilder或Buffer

局部变量: 你举的两个例子是相同的。内存仍然需要分配,即使您从未给它命名

循环: 根据循环类型的不同,使用增强型循环可以带来巨大或微不足道的改进,最好阅读您正在使用的循环。

Strings: 除非涉及到循环,否则编译器足够聪明,可以以最佳方式为您执行串联

循环时,请使用StringBuilder或Buffer

局部变量: 你举的两个例子是相同的。内存仍然需要分配,即使您从未给它命名

循环:
根据循环类型的不同,使用增强型循环可以带来巨大或微不足道的改进,最好仔细阅读您正在使用的循环。

除非您注意到您的代码速度慢,否则不要为小事操心。不要这样做,特别是如果这会降低代码的可读性。除非你注意到你的代码很慢,否则不要为小事操心。不要这样做,尤其是如果这样会降低代码的可读性。