静态在对象创建中表示什么?

时间:2016-04-22 21:19:48

标签: java

public static int f(String input) {

     public static Stack<Character> stack = new Stack<Character>();

        int n = 0;

        for (int i = 0; i < input.length(); i++) {

                if (input.charAt(i) == 'd')
                        stack.push('d');

                else if (input.charAt(i) == 'b') {

                        if (!stack.empty() && stack.pop() == 'd') n++;
                }
        }  

        return n;
}

我只想知道静态关键字在对象创建中的重要性......只需在此处粘贴整个代码

2 个答案:

答案 0 :(得分:0)

正如@azurefrog所说,那不会起作用 - 我猜你已经复制并粘贴了这行

public static Stack<Character> stack = new Stack<Character>();
为了说明的目的,从你的班级顶部

?如果是这样,你就是这样做了。

假设我正确并且该声明来自您的类,而不是在该静态方法中,那么您的问题的答案将是stack变量只有一个实例,无论您创建的类所在的实例数量如何:即您创建的类的所有实例都将看到/包含stack的相同实例,以及从外部寻址的任何实例(有效) ,鉴于它是公开的),应将其称为ClassName.stack,而不是instanceName.stack

答案 1 :(得分:0)

到目前为止,其他所有人都说的都是准确的,但我会详细说明你在“对象创建中静态关键字的重要性”是什么的问题。

静态变量在类的生命周期中持续存在(因此从程序的开始到结束)。但是在您的代码中,您在方法内部声明了堆栈变量,因此每次运行该方法时都会创建并销毁该变量。因此,给定义关键字static实际上没有任何意义。这些变量旨在在您创建的类的每个实例之间共享。因此,只应在程序运行时创建一次静态变量。

(其他地方有很多资源说明何时/何处使用静态)

以下是我在学习时发现有用的一对: