方法main中是类计数器,它具有返回给定String中数字量的方法数量。
public static void main(String... args) {
class Counter{
static final String numbers="0123456789";
int quantity(String main){
int i=0;
for (char c:main.toCharArray()){
if (numbers.contains(Character.toString(c)))
i++;
}
return i;
}
}
String str="a0b3s2d6";
Counter c=new Counter();
System.out.println(c.quantity(str));
}
我认为创建Counter的实例是uselles,只调用Counter.quantity(str)
比创建实例更容易。那么为什么我们不能在本地类中使用静态方法呢?
答案 0 :(得分:2)
只能在初始化父类时创建本地类。提到它们静态意味着它们应该在类初始化之前创建,这是不可能的。
有关详细信息,请参阅this
答案 1 :(得分:1)
静态:static关键字,用于创建属于该类的字段和方法,而不是类的实例。我们将成员和方法设置为静态,以便可以在别处使用,并通过使用类名来从任何地方调用,但< / p>
如果我们仍然使内部类的成员静态,我们将无法在该类之外访问它。
在这种情况下,内部类与其外部类的实例相关联,它本身不能定义任何静态方法。静态嵌套类不能直接引用其封闭类中定义的实例变量或方法,它只能通过对象引用来使用它们。
答案 2 :(得分:0)
因为可以从代码的任何地方调用静态方法。
如何调用您无法访问的类Counter
的静态方法,因为它位于其他类的本地范围内?
你做错了什么。
<强> UPD 强>
为什么要尝试实例化静态类?
Counter c=new Counter();
你实际上想要达到什么目标?
答案 3 :(得分:0)
如果你想调用类似Counter.quantity(str)
的方法,你可以用主方法定义类。
public static void main(String... args) {
String str = "a0b3s2d6";
System.out.println(Counter.quantity(str));
}
static class Counter {
static final String numbers = "0123456789";
static int quantity(String main) {
int i = 0;
for (char c : main.toCharArray()) {
if (numbers.contains(Character.toString(c)))
i++;
}
return i;
}
}