问题
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
public class Solution {
public String replaceSpace(StringBuffer str) {
if(str==null){
return null;
}
StringBuilder newStr = new StringBuilder();
for(int i=0;i<str.length();i++){
if(str.charAt(i)==' '){
newStr.append("%20");
}else{
newStr.append(str.charAt(i));
}
}
return newStr.toString();
}
}
String
- String是字符串常量,也就是不能更改的对象
-
JVM是这样解析这段代码的:首先创建对象s,赋予一个abcd,然后再创建一个新的对象s用来执行第二行代码,也就是说我们之前对象s并没有变化,所以我们说String类型是不可改变的对象了,由于这种机制,每当用String操作字符串时,实际上是在不断的创建新的对象,而原来的对象就会变为垃圾被GC回收掉,可想而知这样执行效率会有多底。String s = "abcd"; s = s+1;
StringBuffer
- 字符串变量,多线程最适合用的
StringBuilder
- 字符串变量,单线程最适合用(对字符串操作的最好方法,最常用)
-
但是对一个对象操纵的,最好用,效率最高StringBuffer builder = new StringBuilder(“This is only a”).append(“ simple”).append(“ test”);
String.charAt
charAt只要给出索引的值就可以把字符取出来[1],不需要字符串变成字符数组
自己之前还要吧他转化成字符数组是多余的
String.length
字符串的长度,直接可以算出来