包装类Integer
具有静态方法parseInt()
,使用如下:
Integer.parseInt();
我认为只有静态类的方法可以这样调用(即Class.doMethod()
)。所有非静态类都需要实例化对象才能使用它们的方法。
我检查了 API,显然Integer
被声明为public final Integer
- 不是静态的。
任何类都可以同时包含static
非静态方法。当调用static
任何类的方法时——包括你自己的——你不需要实例化类的实例,只需使用类名调用方法:MyClass.methodName()
.
事实上,即使以下方法也可以:
Integer nullInt = null;
nullInt.parseInt("5");
这是因为在调用方法时只有引用的类类型很重要。static
但是考虑一下这种糟糕的风格:总是使用 egInteger.parseInt
代替。
另请注意,无论如何您都不能声明顶级类static
:只有嵌套/内部类可以声明为静态类。
不,你错了。
只有静态方法可以这样调用,但它们可能属于“非静态”类。
在 java 中,可以从对象调用静态方法,但这只会产生警告并且仍然可以编译。非静态类可以具有所有实例共享的静态字段和方法(这就是为什么“共享”在 VB.NET 中意味着静态)。因此,从对象访问静态成员可能会使读者感到困惑,因此必须避免。
一种表达方式: AnInteger
是一个具体的对象;你可以有很多Integer
s。只有一个Integer.MAX_VALUE
。
也就是说,有些东西带有Integer
s 是具体的,而有些东西只需要存在一次,任何地方。