展开全部
1.StringBuffer为什么要new?
答:java是面向对象语言,简单的来说,就是e68a843231313335323631343130323136353331333363376538化执行者为指挥者。而类的对象就是通过new关键字来创建对象的,再通过对象来引用成员变量和成员方法,这个深层的原因:和java在编译期对new转化的虚拟机指令有关系。这个不多说。
2.Math类为什么不需要new?
答:Math是JDK提供的一个工具类,1.6版本的申明源码如下:public final class Math {
/**
* Don't let anyone instantiate this class.
*/
private Math() {}
如上面源码所示, 构造器私有化,所以无法创建对象,这就好比你使用单例模式,就需要私有化构造器来防止其他的人创建对象。再看方法:public static int abs(int a) {
return (a
}
源码中的方法都是静态方法,所以,这部分静态的方法在类加载的时候已经在方法区中申明出来了,不回参与你的对象实例化的过程,和对象创建没有关系。所以,静态的方法都是通过类型直接引用的,和你创不创建对象没有关系。这就是我为什么在上面写成员方法,为了和这里的静态方法区分开。