double x=4;
double y=Math.sqrt(x);
System.out.println(y);println和sqrt两个方法有差别:
println方法操作一个定义在System类中的System.out对象调用,但是Math类中的sqrt方法操作的不是对象
这个怎么理解,为什么sqrt操作不是对象呢?
谢谢

解决方案 »

  1.   

    println方法是实例方法,就是必须类先要实例化成对象之后,才能由对象调用
    sqrt方法是类方法,不用先实例化成对象再调用,当然也可以实例化成对象再调用,但不太合逻辑!
      方法前加static修饰符,就是类方法
    举个简单的例子,可能不恰当:
      动物类:
      有两个方法 一个为 eatFood()//吃食物,显然只有实例化成具体的动物,才能吃,比如一只小鸟  一个为 static int getAllCount();//得到全部动物的个数,这个就属于类方法,不是一只‘鸟’就能得到全部动物的个数,只有‘动物’这一个大的群体才能知道有多少。例子不是很恰当
      

  2.   

    你的问题很诡异,很难回答.
    我在编译器里看了一下,原型是:Math.sqrt(double x) 
    在C/C++语言中,我们定义一个变量,比如double x;
    其实我们也可以理解为x是double的一个对象而已,在Java
    里,更是如此的理解,我估计你是刚开始学吧,其实我也刚
    开始学,我还是建议Lz在学习的过程中不要拘泥于细节,大
    的方面掌握了,再去研究……
      

  3.   

    受教了。不过看了之后,还是不太理解。以前我都没有见过sqrt这个方法。看来我的路还很久很长啊。
      

  4.   

    system.out被封装为printStream对象,println()方法是printStream类的方法,必须实例化后才能调用;
    sqrt()方法是static的,是类的方法,可以直接调用,即:className.method();不必先实例化对象。
      

  5.   

    这是最基本的语法定义,是公理,不讲道理的。
    总之:静态方法可以通过类名调用,非静态方法只能通过实例化后的对象调用。Math下面的方法基本上都是static的(请查阅帮助文档),所以都是Math.xxx()来调用。
    println()方法是一个非静态方法,所以只能通过一个对象去调用。先照着写吧,写多了,慢慢你就会明白了(大人不是常常说么,等你长大了,你就明白啦)。