请问为什么在第一个程序中可以出现输出不同值,但是第二个程序不行?class Ref1{
    int temp=10;
}
public class ClassDemo05 {
   public static void main(String[] args) {
   Ref1 ref1=new Ref1();
   ref1.temp=20;
   System.out.println(ref1.temp);
   tell(ref1);
   System.out.println(ref1.temp);
   }        
   public  static void tell(Ref1 ref2) {
   ref2.temp=30;
   }
}
   
   
public class ClassDemo07 {
   public static void main(String[] args) {
       int a=10;
   System.out.println(a);
       tell(a);
   System.out.println(a);
   }
   public static void tell(int b) {
       b =30;
   }
}
                    
                    
                2 回答
 
                    
                    
                            神不在的星期二
                            
                                
                            
                        
                        
                                                
                    TA贡献1963条经验 获得超6个赞
第一个程序输出两个值ref1.temp = 20;,然后tell(ref1);tell方法改变了ref1的temp值为30,所以是2个值
通过建立内部元素的方法,完成了外部元素调用内部元素,且将外部元素全局化
说白了,ref1在main中是有效的,ref1的temp也是有效的,把ref1传给tell,tell修改ref1.temp是可以直接改的,传给tell的是个指针,修改的是指针下面的内存值
第二个元素改变的是局部变量,传递过去以后是个指针,然后指针的值被复制后用了,所以对外部没有产生影响
- 2 回答
- 0 关注
- 426 浏览
添加回答
举报
0/150
	提交
		取消
	
