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;
}
我只想知道静态关键字在对象创建中的重要性......只需在此处粘贴整个代码
答案 0 :(得分:0)
正如@azurefrog所说,那不会起作用 - 我猜你已经复制并粘贴了这行
public static Stack<Character> stack = new Stack<Character>();
为了说明的目的,从你的班级顶部?如果是这样,你就是这样做了。
假设我正确并且该声明来自您的类,而不是在该静态方法中,那么您的问题的答案将是stack
变量只有一个实例,无论您创建的类所在的实例数量如何:即您创建的类的所有实例都将看到/包含stack
的相同实例,以及从外部寻址的任何实例(有效) ,鉴于它是公开的),应将其称为ClassName.stack
,而不是instanceName.stack
答案 1 :(得分:0)
到目前为止,其他所有人都说的都是准确的,但我会详细说明你在“对象创建中静态关键字的重要性”是什么的问题。
静态变量在类的生命周期中持续存在(因此从程序的开始到结束)。但是在您的代码中,您在方法内部声明了堆栈变量,因此每次运行该方法时都会创建并销毁该变量。因此,给定义关键字static实际上没有任何意义。这些变量旨在在您创建的类的每个实例之间共享。因此,只应在程序运行时创建一次静态变量。
(其他地方有很多资源说明何时/何处使用静态)
以下是我在学习时发现有用的一对: