两道面试题! 1、String a="abc" 和 String a = new String("abc")的区别?2、有一个字符串只想去掉右边的空格怎么做?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 String a="abc"只创建了一个对象a;String a = new String("abc")创建了两个对象 第一个问题回答的太简单了我也是这么回答的人家摇摇头。第二个问题trim()去所有的空格现在是只去右边的。 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取前面的字符串 不明白可以看下trim的源代码,写得很好,它是先取左边,在取右边, 第二个问题,我觉得可以现调用reverse方法,然后substring第一个非空字符开始的子串,然后再reverse,这样效率不是很高,抛砖引玉勒 2:StringBuffer sb=new StringBuffer(" aa "); while(sb.lastIndexOf(" ")==sb.length()-1) sb.deleteCharAt(sb.length()-1); string s = "abc";是创建一个对象,他把字符串放到了字符串池里面,该字符串池是公用的....string s = new string ("abc");是创建一个引用, 他只是将abc的指针放到了 s ,要用的时候是将指针去出来,用指针去取值. 第二个自己写吧 比如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);} pengranxiang() ( ) 信誉:100 ----------------你这个方法很好,但这里有点小小的错.我改了.public String trim(String str) {char[] charArray = str.toCharArray();int len = charArray.length;int end = len;for(int i=len-1; i>0; i--) {if(charArray[i] != ' ') break;elseend--;}return str.substring(0, end);} str = " abc ";str = "1" + str;str = str.trim().substring(1); IhaveGotYou(扬扬) 的方法不错 public static void testTrimRight() { String a = " abc " ; char[] array = a.toCharArray() ; int i ; for(i=array.length-1 ;i>=0 ;i--) { if(array[i] != ' ') break ; } System.out.println(a.substring(0, i+1)); } 简单Table例子,就是不能正常显示表格及内容还报错! 关于Java构造函数的问题 Java类的放置顺序 关于条件运算符的结合性,很困惑的例子,谁能解释一下? java中如何在E:\\下写一个123.txt文件? 正则表达式 str.startsWith()的使用? socket断开连接 Java如何跳出多重循环? 请问怎么在applet中打开一个新的窗口呢? 把java文件编译成可执行文件的工具是什么? 请教以下题目 Jmail如何得到对方未受到邮件的信息
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 = new String("abc") 克隆“abc”對象,a引用此克隆對象new String("abc")用split()先切判斷最后子串后再拼
第二个 有两个对象 一个是"abc" 一个是new String("abc")
第二个 :不管有没有存在abc,都会在堆中建立一个String对象。
String a = new String("abc");创建了两个对象.堆中"abc",栈中创建一个 a 的引用.2. String sTemp = "abc ";
去掉空格: sTemp.trim();
StringBuffer sb=new StringBuffer(" aa ");
while(sb.lastIndexOf(" ")==sb.length()-1)
sb.deleteCharAt(sb.length()-1);
是创建一个对象,他把字符串放到了字符串池里面,该字符串池是公用的....string s = new string ("abc");
是创建一个引用, 他只是将abc的指针放到了 s ,要用的时候是将指针去出来,用指针去取值.
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);
}
----------------你这个方法很好,但这里有点小小的错.我改了.
public String trim(String str) {
char[] charArray = str.toCharArray();
int len = charArray.length;
int end = len;
for(int i=len-1; i>0; i--) {
if(charArray[i] != ' ')
break;
else
end--;
}
return str.substring(0, end);
}
str = "1" + str;
str = str.trim().substring(1);
的方法不错
{
String a = " abc " ;
char[] array = a.toCharArray() ;
int i ;
for(i=array.length-1 ;i>=0 ;i--)
{
if(array[i] != ' ')
break ;
}
System.out.println(a.substring(0, i+1));
}