功能上什么是java中的对象?

时间:2014-05-28 17:38:35

标签: java

我仍然不明白对象究竟是什么,我们都知道对象是某个类的实例(蓝图),请参阅以下内容:

class A{
   static int x ;
   int  y;

   static void meth1(){
    int a;
   }

   void meth2(){
     int b; 
   }  

}

我从许多资源中读到:

  • 静态,非静态方法及其局部变量存储在堆栈中。
  • 静态变量存储在堆中。
  • 对象存储在堆中。
  • 实例变量与对象一起存储在堆中。

但问题是:

  • 真正的对象是什么?
  • 根据上面的例子,你能否给出我在堆上的成员和堆栈上的其他成员之间的区别?

提前致谢,

4 个答案:

答案 0 :(得分:1)

真正的对象是什么?

Java中的对象与现实世界中的对象类似。真实对象具有其状态/特征和行为。在java中,特征/状态是字段,行为是对象拥有的方法。

e.g。狗是一个对象,它的年龄,颜色,特别是心情等。这些是狗的状态。行为(方法)是吠叫,改变情绪(如果你宠他)等等。

class Dog{
      int age;
      String colour;
      String mood;

      public void Bark(){
         System.out.print("ruff");
       }

      public void pet(String newMood){
         this.mood=newMood;
      }
}

将Java对象视为真实世界对象,应该有所帮助。

答案 1 :(得分:0)

int a和int b将在堆栈中,而 堆中的其他一切

int x和int y之间的区别在于,在加载类时为前者分配内存,而对于后者,则在创建类A的对象时。

棘手且有趣的是,Class也是Java中的一个对象,你可以通过Object.getClass()方法获得它。

您可以在此处找到更多详细信息:where is a static method and a static variable stored in java. In heap or in stack memory

顺便说一下,方法没有存储在堆栈中,如下面的一些答案所示。

答案 2 :(得分:0)

堆栈:方法,局部变量,变量引用

堆:对象及其变量

答案 3 :(得分:0)

对象只是abstraction。因此,它是您用它做任何事情的工具。

  

真正的对象是什么?

这是一个错误的问题。或者更确切地说,真正的答案是它是你想要的任何东西。真正的问题是,您需要哪些抽象来使您的计算机程序轻松工作?