这个程序是上课时,老师出的小测试题,原题是: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,整个程序应该如何变化。老师改完后,我抄录下来,回家却发现有错误,所以问问大家怎么回事。千万别再晕了

解决方案 »

  1.   

    在MAIN()中引用的函数必须是静态的,这个例子中明显是这个错误。
    只要将
    public void blah(int x, int y){
    该成
    public static void blah(int x, int y){
    就可以了
    但是有位同学提出X=X+1可不可以改为a=x+1。 
    不可以
    a只能用于主函数,用到别的函数中必定会出现变量没有声明的情况。
      

  2.   

    原题运行结果是 
     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);
     }
    }
      

  3.   

    老师出的小测试题证实了基本类型参数传递施是通过值传递的(不会),他的答案应该是:
    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属于类变量。