搞不清的问题

crystaldagger 2003-12-25 12:25:13
程序一

class Test17
{
public static void main(String[] args)
{
int i=2;
modify(i);
System.out.println("i="+i);
}

public static void modify(int i)
{
i++;
}
}
结果是i=2

程序二

class Test18
{
public static void main(String[] args)
{
int[] a=new int[1];
modify(a);
System.out.println(a[0]);
}

public static void modify(int[] a)
{
a[0]++;
}
}
结果是1

换言之,在两个程序中,第一个i的值不受静态方法的影响;而第二个数组的值受的静态方法的影响而变化。

...全文
35 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tiger_wkh52741 2003-12-25
  • 打赏
  • 举报
回复
两个值都存入了内存中,
不过.第一个程序表示得是值.
而第二个表示得是个指针!而在内存中
不是看到得结果!
bw78619 2003-12-25
  • 打赏
  • 举报
回复
一。对于原子变量,java语言是传值的,所以传给modify的仅仅是一个数值2,而不是变量i,所以i还是等于2。
二。
1。对于int类型,数组初始化时的默认值为0,所以int[] a = new int[1];使的a[0]==0
2。java对于引用变量是传递地址的,所以传给modify的是数组对象a的地址。

xujie839997 2003-12-25
  • 打赏
  • 举报
回复
就把第二个看成是C中一样就行了
老土豆T 2003-12-25
  • 打赏
  • 举报
回复
第二其实个是指针,

虽然引用是没边,,但实际上a[0]的内存段的值得确实增加了。
所一a[0] 指向的位置是没有变。。。
binny 2003-12-25
  • 打赏
  • 举报
回复
程序二的
int[] a=new int[1];
下面赋个初值
a[0] = 1;
再跑跑看看就知道了

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧