这个程序是上课时,老师出的小测试题,原题是:public class test1{
public static void main(String []args){
int a;
int b;
a=5;
b=10;
System.out.println(" a:" + a + " b:" + b);
blah(a, b);
System.out.println(" a:" + a + " b:" + b); } public void blah(int x, int y){
System.out.println(" x:" + x + " y:" + y);
x=x+1;
y=y+1;
System.out.println(" x:" + x + " y:" + y);
}
}老师问大家出来的结果应该是什么?但是有位同学提出X=X+1可不可以改为a=x+1。 要是改成a=x+1,整个程序应该如何变化。老师改完后,我抄录下来,回家却发现有错误,所以问问大家怎么回事。千万别再晕了
public static void main(String []args){
int a;
int b;
a=5;
b=10;
System.out.println(" a:" + a + " b:" + b);
blah(a, b);
System.out.println(" a:" + a + " b:" + b); } public void blah(int x, int y){
System.out.println(" x:" + x + " y:" + y);
x=x+1;
y=y+1;
System.out.println(" x:" + x + " y:" + y);
}
}老师问大家出来的结果应该是什么?但是有位同学提出X=X+1可不可以改为a=x+1。 要是改成a=x+1,整个程序应该如何变化。老师改完后,我抄录下来,回家却发现有错误,所以问问大家怎么回事。千万别再晕了
只要将
public void blah(int x, int y){
该成
public static void blah(int x, int y){
就可以了
但是有位同学提出X=X+1可不可以改为a=x+1。
不可以
a只能用于主函数,用到别的函数中必定会出现变量没有声明的情况。
a:5 b:10
x:5 y:10
x:6 y:11
a:5 b:10
不过在main方法中调用blah方法时,一定要先new 一个类的实例出来,用实例来调用blahtest1 test = new test1();
blah(a, b);
还有类名首字母最好大写,
如果要改a=x+1;
当然是可以的,比如说:
public class test1{
static int a;
public static void main(String []args){
int b;
a=5;
b=10;
System.out.println(" a:" + a + " b:" + b);
blah(a, b);
System.out.println(" a:" + a + " b:" + b); } public void blah(int x, int y){
System.out.println(" x:" + x + " y:" + y);
a=x+1;
y=y+1;
System.out.println(" x:" + x + " y:" + y);
}
}
a:5 b:10
x:5 y:10
x:6 y:11
a:5 b:10位同学提出X=X+1可不可以改为a=x+1。 要是改成a=x+1 cyicecream(小舟)已经讲清楚了。你给出的代码很不好,注意要规范(类名大写), static类型不能在函数里声明,public protected private不能用来修饰函数里的东西。调用静态方法可以不用new出实例。我想楼主的意思是想测试blah函数会不会改变static变量,当然不会改变,除非在里头直接改变Test.a 或myTest.a的值。静态的变量可以这么理解,大家公用的东西,调用它可以不用new出实例,因为在 Class.forName既用该类时就由ClassLoader装入内存并初试化了,static属于类变量。