2016-07-23 69 views
2

为什么在任何类型的包装器类(也是Number类的子类)中存在的toString()方法是静态的,而将number作为参数传递,但在对象上调用时不是这样?
像Float类: -
当经过数浮点类toString方法

static String toString(float num) 

当对象调用: -

String toString() 

回答

2

它们是两种不同的方法。

1.静态方法

public static String toString(float f) 

是一个静态方法,所以相关联的类,而不是实例。 你不需要一个实例来调用它。 所以静态方法是通过做例如Integer.toString(f)


2,实例方法

public String toString() 

是一个实例方法,因此被关联到类的实例,而不是类本身静态调用。 您必须有一个实例来调用它。


要回答你的问题,假设我们希望能够有一个实例方法做静态toString(myLong)方法做什么。我们可以这样做:myLong.toString(myLong)

为了实现它,原来的静态方法应该有两种风格:一种带有静态修饰符,另一种不带静态修饰符(实例方法),而另一种带有静态修饰符实例方法将永远不会使用其实例的状态来执行toString()
那么,为什么我们应该为此创建一个实例方法?