比如定义一个类 class Time。数据成员中hour,minute,sec 这些不占用存储空间吗?比如hour,这四个字符不占用空间?
楼主不要将抽象的内存存储空间跟实际的物理存储混淆。
教材中是为了说明内存的存储空间的,你声明了一个类,他是抽象的,看不到也摸不到,没有实例化时是无法进行数据的存储的,因此“无处容纳数据”,也就是不占用存储空间;
而你定义了这个类,当将其保存到本地目录D盘下面时,你写的越长,他占用的物理存储也就越多,这个是实际的物理存储,比如你定义hour类型,他占用的物理存储肯定比你没有定义hour前占用的物理存储空间要大。
我们学程序,很少关注物理存储空间,一般教材中说的都是跟内存相关的。
类只是定义,只有真正加载内,实例化对象的时候,才会分配空间。
当然占用存储。
如果这些字段是值类型,那么占用它本身长度的存储。如果是引用类型,占用4个字节。
怎么不占用,你new的时候都要分配空间给各个成员
这只是一个概念上的意思,就是类需要跟实例对象绑定,定义一个类的对象,然后才来说它的占有空间等。
对于C++来说,你定义的字段,对于对象,都是需要分配内存的,无论是堆上还是栈上
你可以用sizeof看下。
静态定义,不参于编译
定义类的时候,如果不是静态类,理论上不会占用内存空间,当实例化后会分配内存空间
当然占用存储。
如果这些字段是值类型,那么占用它本身长度的存储。如果是引用类型,占用4个字节。
定义类的时候,如果不是静态类,理论上不会占用内存空间,当实例化后会分配内存空间
这个应该是从堆或栈的角度考虑的,类不占用堆或栈的空间而对象需要占用。
楼主说的应该是指编译的时候系统为其分配的内存吧
指的是不占堆的空间(heap),也就是new 操作以后,会被分配的区域。
类的定义是在栈中(Stack)
建议你网上搜搜 Java内存管理
定义一个类的过程,是定义了这个类的表示方式,以及包含的成员。
类本身只是描述了这个类应该如何表达。是一种描述。
类的实例,则是按照类的描述为一个对象在内存中分配空间。
所以只定义一个类是不占用空间的,因为定义的过程只是描述了这个对象,而并没有为对象生成任何实例。
当我们为类声明一个实例时,空间的分配才真正的发生。
一个例外就是静态的类,或静态的类成员。他们在声明是就已经在内存中开辟了空间。
就和你定义一个结构体一样,会占用内存的