为什么我可以在没有实例化的情况下调用类上的方法?

时间:2016-04-06 11:13:13

标签: java integer static-methods

例如,我从Integer调用一个方法,如toHexString()

现在我需要通过以下代码将其打印出来。

    int i = 123455;
    System.out.println(Integer.toHexString(i));

我还没有创建一个名为Integer的新对象。为什么我可以直接使用Integer这个对象?

5 个答案:

答案 0 :(得分:8)

您可以这样使用它,因为toHexStringstatic方法。

对于static成员,您不需要实例,可以直接通过该类调用它们。

答案 1 :(得分:3)

Integer.toHexString(i) - 调用类Integer的静态方法。 Static methods不要求创建对象。

您可以在official documentation中阅读更多内容。

答案 2 :(得分:2)

仅仅因为toHexStringstatic方法,所以您可以通过三种方式访问​​它。

第一种方式

Integer.toHexString(i); //static method directly access using Class Name .

第二种方式

Integer v_objInt = null;
    v_objInt.toHexString(i);   //this will also work.
  

选项 B 也可以使用,因为static也可以使用任何null 引用的类对象进行访问。

第三种方式

Integer v_objInt = new Integer();
v_objInt.toHexString(i);   //this will also work.
  

选项 C 也可以使用,因为static也可以使用任何已初始化的引用的类对象进行访问。

答案 3 :(得分:1)

您可以通过引用类名或使用对象引用(通常会导致错误和误解)来执行static方法。所以我建议不要使用第二种方式。

Integer.toHexString(i);

Integer i = new Integer(1);
i.toHexString(i);

在您的情况下,Integer只是一个类名(不是您提到的对象),其中static方法名为toHexString(int i)

答案 4 :(得分:0)

只是加上其他人已经说过的话。

  

隐式导入java.lang。*。

Integer是该软件包中的一个类。因此,这个类不需要import。这就是为什么你可以直接使用这个类而不创建自己的整数类或导入它