JAVA俩类,用类的时候为什么Math类不需要new 呢

JAVA里面有StringBuffer类,append为里面的一个方法。下面俩程序为什么StringBuffer需要new,而Math,不需要new呢为什么Mathss=... JAVA里面有StringBuffer类,append为里面的一个方法。下面俩程序为什么StringBuffer 需要new ,而Math,不需要new 呢 为什么Math ss=new Math();就会报错呢 StringBuffer类:public class T1 {
public static void main(String[] args) {
String str = "123张三丰";
StringBuffer bb = new StringBuffer ();
bb.append(str);
bb.append("aaa");
bb.append("shike");
System.out.println("dddd==="+bb.toString());

}
} Math类:public class Ddd {
public static void main(String[] args){
double d = Math.abs(-211.09);
System.out.println("d=="+d);
}
}
展开
 我来答
百度网友3390853
2017-07-28 · 超过10用户采纳过TA的回答
知道答主
回答量:24
采纳率:100%
帮助的人:10.5万
展开全部

1.StringBuffer为什么要new?

答:java是面向对象语言,简单的来说,就是化执行者为指挥者。而类的对象就是通过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 < 0) ? -a : a;
    }

源码中的方法都是静态方法,所以,这部分静态的方法在类加载的时候已经在方法区中申明出来了,不回参与你的对象实例化的过程,和对象创建没有关系。所以,静态的方法都是通过类型直接引用的,和你创不创建对象没有关系。这就是我为什么在上面写成员方法,为了和这里的静态方法区分开。

百度网友e753446
2015-06-20 · TA获得超过931个赞
知道小有建树答主
回答量:96
采纳率:0%
帮助的人:38.5万
展开全部
我想指明一点,那个最快回答,不好意思你答的有些问题。我们查阅java的API文档,里面写得很清楚,public final class Math extends Object,并没有static作修饰,所以Math并非一个静态类,这也是很多人的一个误区。然而,我们继续查阅,public static double abs(double a),原来它的abs方法是静态的。那个根据静态的定义,如果一个方法是静态的,它是属于整个类的,可以用类名.方法来直接访问,也就不用new出一个实例对象来进行访问了,当然这样也是可以,这就能解释您的问题double d = Math.abs(-211.09);为什么不用new了。综上所述,Math类本身不是静态的,但它的方法以及成员变量都是静态的。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
5小情绪520
2016-09-24
知道答主
回答量:1
采纳率:0%
帮助的人:1076
展开全部
我在来补充一@TOT_白鹿巷 的解释,其实他说的都对,但是回答的不够清楚在他的基础上我再来补充一点math类是从属于Java.lang包。Java常用工具包,这个包里的所有类你不用new就可以直接用,因为lang包是常用的包,这样设计就是为了用起来方便,因为它太常用了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-09-22
展开全部
Math是一个静态类哦,也就是用static修饰的,无需实例化,直接调用即可.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-09-22
展开全部
Math.abs是静态方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式