public class Base{
public void test(){
String aStr=" one ";//前后有空格
String bStr=aStr;
aStr.toUpperCase();
aStr.trim();
System.out.println("["+aStr+","+bStr+"]");
}
}
public class Test {
public static void main(String[] args) {
new Base().test();
}}控制台输出的结果是[ one , one ],不明白为什么在执行了toUpperCase()和trim()方法后是这个结果,望指点!
public void test(){
String aStr=" one ";//前后有空格
String bStr=aStr;
aStr.toUpperCase();
aStr.trim();
System.out.println("["+aStr+","+bStr+"]");
}
}
public class Test {
public static void main(String[] args) {
new Base().test();
}}控制台输出的结果是[ one , one ],不明白为什么在执行了toUpperCase()和trim()方法后是这个结果,望指点!
解决方案 »
- Java执行window cmd修改时间问题,谢谢
- 请教一道问题
- 不能以0,1,4,9,20、30、50、60、70、80、66634、6888和86等数字开头的正则表达式???
- 我想用写一个程序,能从本地的一个音乐文件中提取开头的30秒,然后播放它,谁能给点建议如何作
- java大师级进,望指点谜经
- 服务器间歇出现的一个异常,请大家帮助我分析下。
- 刚接触JAVA,想问一下applet,servlet,javabean,struts它们都有什么区别呀?
- 并发内存可见性问题,并发大神请进
- 请问怎么解决刷新问题???????????????????????????????????????????/
- 230分!关于JDBCDriver:如何从ResultSet对象中获得表名(tablename)?
- 一个java和数据库的问题
- 一个奇怪的GC
bstr=astr.trim().toUpperCase();
或者bstr=astr.toUpperCase().trim();
aStr.toUpperCase();
aStr.trim();java是字符串常量,值不可以被修改,楼主可以这样,
String bStr=aStr;
bStr=aStr.toUpperCase().trim();之后就可以了 关于这个问题楼主可以找点资料看一下堆和栈 有助于楼主理解!!!
你可以:aStr=aStr.toUpperCase();
String bStr=aStr; //bStr 是指向astr
aStr.toUpperCase();//aStr是字符串 是不可修改的 虽然这行代码已经修改(在别处进行) 但是不能去覆盖aStr
aStr.trim();
System.out.println("["+aStr+","+bStr+"]");
以前好像哪里看过:破坏性函数和非破坏性函数。这样更好理解吧。以下两个函数属于非破坏性函数,是对副本进行操作,并返回结果,因此需要用变量将结果存起来。
aStr.toUpperCase();
aStr.trim();
应该改为:
aStr=aStr.toUpperCase();
aStr=aStr.trim();
aStr.trim();
这两句只是调用了String类的方法,并没有改变原来aStr的值。
要改变aStr的值应该将调用方法后的值在赋给aStr 即:
aStr = aStr.toUpperCase();
aStr = aStr.trim();