Java 如何将静态变量的值传递给方法?
我写了一个简单的程序来演示static关键字的使用。我还键入了一个方法来计算变量的平方,并在主类中初始化了静态变量的值Java 如何将静态变量的值传递给方法?,java,Java,我写了一个简单的程序来演示static关键字的使用。我还键入了一个方法来计算变量的平方,并在主类中初始化了静态变量的值 class staticdemo{ public static int stvar; void square(int stvar){ System.out.println("" + stvar*stvar); } } public class statictest { public static void main(String args[]){ stati
class staticdemo{
public static int stvar;
void square(int stvar){
System.out.println("" + stvar*stvar);
}
}
public class statictest {
public static void main(String args[]){
staticdemo.stvar = 10;
int s = staticdemo.stvar;
square(s); //HERE IS WHERE I GET THE ERROR!
}
}
我得到的确切错误是“类型statictest的方法square(int)未定义”
如何使用静态变量执行方法?您的方法也应该是静态的问题不在于您正在将静态字段(而不是变量)传递到方法中。这是因为您试图在没有实例的情况下调用实例方法 要么:
设为正方形
静态
,这样您就可以从main
调用它,或者main
中创建一个实例来调用它:
new staticdemo().square(staticdemo.stvar);
stvar
)和函数参数(stvar
中的square
)使用相同的名称。这只会引起混乱和麻烦
还建议遵循标准Java命名约定,即使是在您自己的测试代码中,但特别是在请求他人帮助时
所以也许:
class StaticDemo {
public static int stvar;
public static void square(int s) {
// ^^^^^^ ^
System.out.println("" + s * s);
// ^ ^
}
}
public class StaticTest {
public static void main(String args[]) {
StaticDemo.square(StaticDemo.stvar);
// ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^
}
}
或者:
class StaticDemo {
public static int stvar;
public void square(int s) {
// ^
System.out.println("" + s * s);
// ^ ^
}
}
public class StaticTest {
public static void main(String args[]) {
new StaticDemo().square(StaticDemo.stvar);
// ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^
}
}
此方法必须是静态的
voidsquare(int-stvar)
如果要从静态上下文调用它
另一种更优雅且OOP的方法是声明类的对象,通过声明其成员为私有来封装其成员
i、 e
不能直接调用非静态方法。您必须为staticdemo类创建一个对象,然后可以使用OOObject调用该方法。 在主方法中输入 staticdemo st=新的staticdemo();
圣广场(s) JavaScript???使用正确的代码标记标记问题,您将得到一些答案。这不是Javascript。应该是
staticdemo.square
而不是square
。我投票决定以低质量问题结束这个问题。@Everv0id:只有当square
是static
@T.J.Crowder right时。欲速则不达。
public static void main(String args[]){
staticdemo.stvar = 10;
int s = staticdemo.stvar;
staticdemo foo = new staticdemo();
foo.square(s); //HERE will work fine!
}