我是编程新手,正在学习"Head First Java",我刚看到一个问题,就是这样使用了Math类
int x= Math.round(float value);
Run Code Online (Sandbox Code Playgroud)
并且提到我们不需要实例化Math类,因为它的构造函数已设置private.那是什么意思?到目前为止,我读到我们需要实例化该类和引用变量来使用类的方法和实例变量,Math类如何工作?
我们不需要实例化Math类,因为它的Constructor设置为Private
因为Math类中的所有方法都static可以使用类名来调用它们.因此没有用于实例化类,因此声明了构造函数private.它还会阻止对Math类进行子类化,因为它是唯一的构造函数.
看看开源代码:
不要让任何人实例化这个类.
private Math() {} // only constructor defined in Math class
Run Code Online (Sandbox Code Playgroud)
Math类的方法不依赖于类的内部状态,它们就像实用函数一样.所以宣称它们是明智的static.static可以通过直接使用类名来调用方法,因此不使用实例化类.它们属于类,而不属于该类的特定对象.
您可以参考JLS 8.4.3.2:
始终在不引用特定对象的情况下调用类方法.