你没有用到static int x这个变量 虽然后面很多地方有Math.sqrt(x),但是此x非彼x,这里的x是方法的参数 碰巧它也叫x罢了 如果这样写 static int x; static int mysqrt() { return (int)Math.sqrt(x); } 那返回的就是static int x的平方根了
你如果这样写 static int x; static int mysqrt(int y) //参变量的名字是y了 { return (int)Math.sqrt(y); //这里使用参变量 } 跟你原来的程序是等价的
static int x;没用到我把他去掉后程序没问题,可是我把所有方法前面的static去掉后为什么就开始报告错误?
非static方法不能直接使用,必须创建对象实例才能使用 就是说,static方法可以这样用int i=BJ.mysqrt(9); 但是如果你去掉static关键字,必须这样用 BJ bj=new BJ(); int i=bj.mysqrt(9);
比如public class Zhaoce{
static int ce;
}
Zhaoce bigZhao;
Zhaoce smallZhao;
Zhaoce saZhao;
bigZhao.ce=10;
System.out.println("傻Zhaoce的ce是:"+saZhao.ce);输出的结果是10也就是所无论你修改了哪一个类对象里的static变量
其它的类对象里的该static变量都会做相应的更改
smallZhao.ce的值也是10
简而言之,就是所有的类对象共享一个static变量
另外,static变量还可以通过类名直接访问
Zhao.ce的值也是10
有static的话就可以直接用了
因为你根本就没有定义你的BJ类的对象
static int x;没用到啊
编译器没对你说?
虽然后面很多地方有Math.sqrt(x),但是此x非彼x,这里的x是方法的参数
碰巧它也叫x罢了
如果这样写
static int x;
static int mysqrt()
{
return (int)Math.sqrt(x);
}
那返回的就是static int x的平方根了
static int x;
static int mysqrt(int y) //参变量的名字是y了
{
return (int)Math.sqrt(y); //这里使用参变量
}
跟你原来的程序是等价的
就是说,static方法可以这样用int i=BJ.mysqrt(9);
但是如果你去掉static关键字,必须这样用
BJ bj=new BJ();
int i=bj.mysqrt(9);