对于我错误地创建了正则表达式的测试:
|(\\w+)|
Run Code Online (Sandbox Code Playgroud)
我很困惑,这个正则表达式确实有效,我无法解释结果:
public static void main(String[] args) {
String toReplace="Hey I'm a lovely String an I'm giving my |value| worth!";
// String replacement1="2 cent"; // I planned to replace |value| with 2 cent
String replacement1="@"; // to produce a better Output
String regex="|(\\w+)|"; // I forgot to escape the |
replacement1="@";
result=toReplace.replaceAll(regex,replacement1);
System.out.println(result);
}
Run Code Online (Sandbox Code Playgroud)
结果是:
@H@e@y@ @I@'@m@ @a@ @l@o@v@e@l@y@ @S@t@r@i@n@g@ @a@n@ @I@'@m@ @g@i@v@i@n@g@ @m@y@ @|@v@a@l@u@e@|@ @w@o@r@t@h@!@
Run Code Online (Sandbox Code Playgroud)
到目前为止我的想法是java试图替换字符之间的"无",但为什么不是字符本身呢?
\\w+ 应该匹配 'H'
我希望每个字符都被3个符号替换或仅由1个替换,但字符不会被替换为难题.
三元运算符通常只是一个哲学讨论的主题:是否
a=b>5?1:0;
Run Code Online (Sandbox Code Playgroud)
更可读,更快,更酷
if(b>5) { a=1; } else {a=0;}
Run Code Online (Sandbox Code Playgroud)
(带或不带花括号)我通常不在乎.我喜欢我的三元运算符.但我们讨论了这段代码:
BigObject myBigObject=null;
...
do {
myBigObject=
myBigObject==null?
createBigObject():
myBigObject;
...
} while(manyIteration);
Run Code Online (Sandbox Code Playgroud)
同事声称这个构造将创建myBigObject将被复制每个循环(除了第一个),这将浪费宝贵的时间和内存,并且他发现了三元运算符无用的情况.唯一的方法是:
do {
if(myBigObject==null)
myBigObject=createBigObject();
...
} while(manyIteration);
Run Code Online (Sandbox Code Playgroud)
我认为聪明的编译器会看到对象被分配给自己并将其优化出来.
但谁是对的?