两道面试题!
1、String a= "abc " 和 String a = new String( "abc ")的区别?
2、有一个字符串只想去掉右边的空格怎么做??
------解决方案--------------------1、地址不同
2、trim()
------解决方案--------------------String a= "abc "只创建了一个对象a;
String a = new String( "abc ")创建了两个对象
------解决方案--------------------trim() 返回字符串的副本,忽略前导空白和尾部空白。
String aa= " abc ";System.out.println( "=== "+aa.substring(0,aa.length()-1));
String a= "abc " 创建一个引用对象,并且这个引用对象指向abc,
String a=new String( "abc ") 创建一个引用对象,和一个字符串对象,且引用对象指向abc
------解决方案--------------------String a= "abc " 創建 "abc "對象,a引用此對象 "abc "
String a = new String( "abc ") 克隆“abc”對象,a引用此克隆對象new String( "abc ")
用split()先切判斷最后子串后再拼
------解决方案--------------------第一个,楼上说的应该可以了,第二个StringUtils.substringAfter( " aaaa ", " ");
------解决方案--------------------第一个 只有一个对象 "abc " 常量池中
第二个 有两个对象 一个是 "abc " 一个是new String( "abc ")
------解决方案--------------------第一个 :如果栈中已经有abc,他就不会再建一个abc对象,而是直接引用已经存在的abc
第二个 :不管有没有存在abc,都会在堆中建立一个String对象。
------解决方案--------------------1.String a= "abc " 如果堆中已经有abc,他就不会再建一个abc对象,而是直接引用已经存在的abc;
String a = new String( "abc ");创建了两个对象.堆中 "abc ",栈中创建一个 a 的引用.
2. String sTemp = "abc ";
去掉空格: sTemp.trim();
------解决方案--------------------2:找到第一个非空格的字符,从这个位置分开,对后面的str调用trim,和前部分的合并。
复杂了~~~
------解决方案--------------------第2问,从字符串的最后开始,找到第一个非空字符,在用substring取前面的字符串
------解决方案--------------------第二个问题,我觉得可以现调用reverse方法,然后substring第一个非空字符开始的子串,然后再reverse,这样效率不是很高,抛砖引玉勒
------解决方案--------------------2:
StringBuffer sb=new StringBuffer( " aa ");
while(sb.lastIndexOf( " ")==sb.length()-1)
sb.deleteCharAt(sb.length()-1);
------解决方案--------------------oo
------解决方案--------------------很多人对面试题感兴趣?
------解决方案--------------------string s = "abc ";
是创建一个对象,他把字符串放到了字符串池里面,该字符串池是公用的....
string s = new string ( "abc ");
是创建一个引用, 他只是将abc的指针放到了 s ,要用的时候是将指针去出来,用指针去取值.
------解决方案--------------------up
------解决方案--------------------第二个自己写吧 比如
public String trim(String str) {
char[] charArray = str.toCharArray();
int len = charArray.length - 1;
int end = len;
for(int i=len; i> =0; i--) {
if(charArray[i] != ' ')
break;
else
end--;
}
return str.substring(0, end);
}
------解决方案--------------------