AmbitionMxii 2021-07-01 05:38 采纳率: 100%
浏览 16
已采纳

刚学 请问结果为什么不是test and gbc呢?


```public class Sssa {
        String str=new String("good"); 
         char[ ] ch={'a' , 'b' , 'c'};
        public void change(String str,char[ ] ch){ 
         str="test ok"; 
         ch[0]='g'; 
         } 
         public static void main(String args[]){ 
        Sssa ex=new Sssa(); 
         ex.change(ex.str,ex.ch); 
         System.out.print(ex.str+" and ");
         System.out.println(ex.ch ); 
         } 
        }    结果:good and gbc
  • 写回答

2条回答 默认 最新

  • 404警告 2021-07-01 08:44
    关注

    输出的那一句话 ex.str 输出的good因为是取得Sssa类中的变量 而你首先调用方法的虽说给str重新赋值 但是因为string是不可变的这样只不过是给他一个新的引用地址, 但他没有修改外部定义的str的值 除非在方法内使用this.str 改变外部str指向的值 也就是改变他的引用地址就会输出test ok and gbc, abc变gbc因为字符是可变的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥50 请教 麒麟系统挂载怎么安装
  • ¥15 如何在ns3中实现路径的自由切换
  • ¥20 SpringBoot+Vue3
  • ¥15 IT从业者的调查问卷
  • ¥65 LineageOs-21.0系统编译问题
  • ¥30 关于#c++#的问题,请各位专家解答!
  • ¥15 App的会员连续扣费
  • ¥15 不同数据类型的特征融合应该怎么做
  • ¥15 用proteus软件设计一个基于8086微处理器的简易温度计
  • ¥15 用联想小新14Pro