Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.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 使用if条件检查和replaceAll进行代码优化_Java_String_If Statement_Replace - Fatal编程技术网

Java 使用if条件检查和replaceAll进行代码优化

Java 使用if条件检查和replaceAll进行代码优化,java,string,if-statement,replace,Java,String,If Statement,Replace,我有一个字符串,其中我必须检查一些if条件,并执行一些替换操作,如下所示 for(int i =0; i<10;i++){ if(name[i].contains("sometext")){ name[i] = name[i].replaceAll("someregexpattern","replacementtexthere"); } } for(int i =0; i<10;i++){ name[i] = name[i].replac

我有一个字符串,其中我必须检查一些if条件,并执行一些替换操作,如下所示

for(int i =0; i<10;i++){
    if(name[i].contains("sometext")){
       name[i] = name[i].replaceAll("someregexpattern","replacementtexthere");
    }
}
for(int i =0; i<10;i++){
       name[i] = name[i].replaceAll("someregexpattern","replacementtexthere");
}

for(int i=0;i仅当
sometext
someregexpatern
相同时,此选项才有效。否则,
if
条件确实重要

假设字符串中确实存在
SomeRegExpatern
,但是如果
条件求值为
false
,则不应进行替换。但是如果删除
if
语句,则会发生替换,这与此不完全相同

例如:-帮助您更好地理解

String testCondition = "dontReplace";
        String myString = "Hi, I'm SO";
        String regex = "SO";
        String replacement = "Not SO";

        if(myString.contains(testCondition)){
            myString = myString.replaceAll(regex, replacement); // stays "Hi, I'm SO"
        }

        myString = myString.replaceAll(regex, replacement); // Becomes "Hi, I'm Not SO"
如您所见,要求不应发生
字符串
替换,因为条件是
dontReplace
,但由于
if
已被删除,因此即使不应该发生替换,也会发生替换。

如果“if”本身不会影响性能。 虽然现在函数调用非常便宜,但String.contains()将再进行4-5次函数调用

但是,前一种变体可读性更好,更不容易出现错误。

“性能方面的任何意义”也取决于整个过程在软件中执行的频率

运行探查器(通过或其他方式)将向您显示执行时间的很大一部分是否花在
String#replaceAll()
上。如果不是,您将无法通过优化它获得显著的改进。这听起来很明显,但却常常被遗忘


如果优化不会带来显著的收益,那么选择可读性更高的代码变体几乎总是会更好。

这可能取决于if条件为真的频率(假设
.contains
.replaceAll
便宜).methinks.replaceall应该是replaceall。您的代码编译?@Achintya Jha-这是一个拼写错误。更正。谢谢:)谢谢!这对我帮助很大:)