日期:2014-05-20  浏览次数:20598 次

看看这个结果怎么出来的
package lianxi;

class Count {
public int num;
Count(int num) {
this.num = num;
}
}

public class test {
public static void main(String[] args) {
Count count1 = new Count(0);
int times = 0;
for (int i = 0; i < 50; i++)

increment(count1, times);
System.out.println(count1.num);
System.out.println(times);
}

public static void increment(Count a, int times) {
a.count++;
times++;
}

}
输出的结果分别为50,0
求教怎么出来的这两个数

------解决方案--------------------
这就是基本数据类型和类类型的区别。
这么说吧:
基本数据类型,比如你这里这个val,就像是一个文本文件a.txt,传参的时候是把这个文本文件复制了一份a1.txt,你改的是复制的那个a1.txt,但是a.txt并没有变
而类类型,比如这个sb2,就像是一个快捷方式b.lnk,它链接的是a.txt,传值的时候是把这个快捷方式b.lnk复制了一份b1.lnk,但是它还是指向a.txt。所以你修改的还是a.txt。所以它的内容变了。

这个比喻不太好,但是好理解。

引用:
不好意思还是想弱弱的问下
class Test
{
 public static void main(String args[])
 {
  int val;
  StringBuffer sb1, sb2;
  
  val = 10;
  sb1 = new StringBuffer("apples");
  sb2 = new StringBuf……

------解决方案--------------------
说说我的看法
int,byte,short,double这些基础类型是值传递
那么什么又是值传递?
说白了就是拷贝一份再给你,比如int a = 3,值传递给int b 的话
其实就是拷贝了a的值给b了,就这么简单,a 和 b 再也没什么联系,对b的任何修改不影响a

对象的话就是传递引用了,那么什么又是传递引用?
简单理解就是取了个别名,和我们人一样,说的都是同一个东西
比如String a = "123" String b = a;  那就是给a取了个别名,对b的操作就是对a操作

OK!!