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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© che201311 中级黑马   /  2013-11-22 23:23  /  1059 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Example {                      
             String str = "hello,java";                      
              char[] ch ={'a','b','c'};                      
  public void change(String str,char ch[]){                            
            str = "test ok";                            
             ch[0]='G';                         
}
public static void main(String[] args){                     
                Example ex = new Example();                     
                ex.change(ex.str,ex.ch);                   
                 System.out.println(ex.str+"....");                     
                System.out.println(ex.ch);
请问,为什么结果 ex.ch变成了GBA而ex.str却还是 "hello,java"呢?

打印结果是
hello,java....
Gbc

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

3 个回复

正序浏览
String是引用类型,传值相当于内存的一个拷贝,而且String类型是常量,值不会改变。方法change是不
回复 使用道具 举报
你在方法你面在声明一下String str应该就可以改变了吧?
回复 使用道具 举报
因为 String 是 final 的,不能修改对象只能修改引用,
方法的参数是不会改变引用的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马