-1

举个例子:在静态方法中使用非静态变量或调用非静态方法(使用对象实例访问)是一种好习惯

公共类 StringTest {

public String string = "helloworld";

public String subString(String str)
{
    str = str.substring(1, 4);
    return str;
}
/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stubs
    StringTest st = new StringTest();
    System.out.println("substring "+st.subString(st.string));
}

我正在使用类的实例调用subString方法。还使用实例传递参数字符串。这是一个好习惯吗?或者静态方法应该只修改静态变量并调用静态方法。

4

6 回答 6

2

一个快速的插图,希望能给你一个单一的视图摘要:

在此处输入图像描述

于 2013-05-05T09:59:45.810 回答
2

如果您尝试这样做,编译器会抱怨。在静态方法中声明的变量是隐式静态的。如果您尝试访问非静态的,您的程序将无法编译。

于 2013-05-05T09:36:42.853 回答
2

试试看,你会发现这是不可能的。您只能从静态方法访问静态成员。

于 2013-05-05T09:36:46.710 回答
0

您可以通过创建实例从静态上下文访问非静态成员,但这不是从非静态上下文调用静态成员的好习惯......
http://javaguideforall.blogspot.in/2013/04/why-non-static-variable-cannot-be.html

于 2013-05-05T09:45:14.353 回答
0

我相信你在调用它的方法时将你的实例传递给静态方法(或有一个指向它的静态字段),如果是这种情况,那么是的,它没关系,它不违反我所知道的任何事情。

于 2013-05-05T09:41:10.617 回答
0

这是一种不好的做法。你不应该那样做。而且,实际上,在 java 中你永远无法做到这一点。

于 2013-05-05T09:42:29.367 回答