【小白求解】关于静态变量的问题,问下代码的问题

laotoulehff 2013-03-03 10:42:22
public class x {
private static int a;

public static void main(String[] args) {

modify(a);
System.out.println(a);
}

public static void modify(int a) {
a++;
}
}
这个要怎么稍作修改能使a=1啊,还有就是private static int a;这一行 为什么与public static void main(String[] args)互换会产生错误?谢谢大虾。。
...全文
217 5 打赏 收藏 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2013-03-04
  • 打赏
  • 举报
回复
引用 2 楼 laotoulehff 的回复:
关于2楼的回答1、原理是什么啊,为什么方法中modify()括号里不是int number 2、为什么private static int a = 0这一行不能放到main方法中
1.思维,要面对对象,而不要面向过程,别几个方法把需要处理的数据传来传去了。 2.类里面声明的static变量为类变量,非static变量为对象变量;方法里声明的变量只能是临时变量。
LCore 2013-03-04
  • 打赏
  • 举报
回复
引用 3 楼 abc41106 的回复:
引用 2 楼 laotoulehff 的回复:关于2楼的回答1、原理是什么啊,为什么方法中modify()括号里不是int number 2、为什么private static int a = 0这一行不能放到main方法中 1、他处理的方法和你不一样。 你是想通过传参修改a(因为是基本数据类型,值传递,所以改不了a),而他的modify是直……
++
abc41106 2013-03-04
  • 打赏
  • 举报
回复
引用 2 楼 laotoulehff 的回复:
关于2楼的回答1、原理是什么啊,为什么方法中modify()括号里不是int number 2、为什么private static int a = 0这一行不能放到main方法中
1、他处理的方法和你不一样。 你是想通过传参修改a(因为是基本数据类型,值传递,所以改不了a),而他的modify是直接修改全局变量a。 2、方法体内不能有权限修饰符
laotoulehff 2013-03-04
  • 打赏
  • 举报
回复
关于2楼的回答1、原理是什么啊,为什么方法中modify()括号里不是int number 2、为什么private static int a = 0这一行不能放到main方法中
oZouBianBian 2013-03-03
  • 打赏
  • 举报
回复
为什么不能打印1,是因为这里是值传递,并不是对象传递,int a,这里的a不是对象,只是代表了一个整数 改成这样:

public class x {


public static void main(String[] args) {

modify();
System.out.println(a);
}
private static int a=0;
public static void modify() {
a++;
}
}
至于你说的互换报错的问题, 没出现这个情况

62,620

社区成员

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

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