A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 宋浩 中级黑马   /  2012-6-7 10:18  /  2004 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 宋浩 于 2012-6-8 12:05 编辑

String str="base";
str.concat("ket");
System.out.print(str);
最后输出的结果是base 这是为什么 不应该是baseket么?

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 鼓励下,多看看毕老师关于String类的视频.

查看全部评分

7 个回复

倒序浏览

String str="base";

本帖最后由 刘克方 于 2012-6-7 10:32 编辑

你的问题:String str="base";
str.concat("ket");
System.out.print(str);
最后输出的结果是base 这是为什么 不应该是baseket么?
解答:str.concat("ket");该方法返回一个String对象来保存串接后的字符串,而原来的str字符串不会有变化;
所以你可以定义一个新的字符对象来接收串联后的结果:String str2=str.concat("ket");
然后System.out.print(str2);这样就可以得到你想要的结果了



评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
兄弟  你没有 赋值回去  
应该这么写
String str="base";
str=str.concat("ket");
System.out.print(str);
这样就是baseket

回复 使用道具 举报
  String str="base";
  str=str.concat("ket");
  System.out.print(str);
  这样就是你想要的结果了。
回复 使用道具 举报
concat()方法是有在传入参数字符串长度是0的时候才返回此 String 对象。否则创建一个新的 String 对象,所以你这里str.concat("ket")是一个新的字符串对象,你打印的还是以前的str对象,第二句改成str = str.concat("ket");就可以了
回复 使用道具 举报
package luntantest;

public class Test6 {
        public static void main(String[] args) {
                String str="base";
            String  str1 = str.concat("ket");
         System.out.println(str);
         System.out.println(str.concat("ket"));
         
         System.out.println(str1);
        }
       
       
         }
输出结果是
base
baseket
baseket
你看了这个应该明白了吧
回复 使用道具 举报
public static void main(String[] args) {
        String str = "base";
        str=str.concat("ket");
        str=str.concat("ball");
        System.out.print(str);
}
这么写就好了,因为String是不可变的,直接给str添加是不行的,可以重新给赋值;
str=str.concat("ket");相当于给str重新赋值了;
回复 使用道具 举报
String str="base";
str=str.concat("ket");// 赋值回str
System.out.print(str);
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马