首页 > 试题广场 >

以下数据类型中,需要内存最多的是()

[单选题]
在Java中,以下数据类型中,需要内存最多的是()
  • byte
  • long
  • Object
  • int
Object 是引用数据类型,只申明而不创建实例,只会在栈内存中开辟空间,默认为空,空占1 bit.
发表于 2016-03-03 20:05:20 回复(11)
JAVA语言中定义了8种基本的数据类型,来保存变量。JAVA要求程序中的每一个变量都规定自己的类型。正因为如此,JAVA属于强类型语言,从而不同于JavaScript这样的弱类型脚本语言。

  下面我们来看看这8种类型:  
byte:8位,最大存储数据量是255,存放的数据范围是-128~127之间。
short:16位,最大数据存储量是65536,数据范围是-32768~32767之间。
int:32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。
long:64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。
float:32位,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。
double:64位,数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加。
boolean:只有true和false两个取值。
char:16位,存储Unicode码,用单引号赋值。
注:一个字节=8位。
所以,整型数据类型中,需要内存空间最多的是long。
编辑于 2015-11-13 11:42:43 回复(0)
基本类型和引用类型只能在栈内存开辟空间?不要误人子弟了。方法是基于栈执行的,因此当进行计算时基本类型的字面值和引用类型的地址值会拷贝一份(dup)传入栈帧进行执行,而作为成员的基本类型和引用类型都是保存在堆内存的。当成员的值和引用初始化时,是在集中在<init>()和<clinit>()方法中赋值的,但是栈中仅仅为值本身开辟了相应了slot,局部变量在栈中也仅仅是一个逻辑上的存在,当方法执行结束栈帧直接  销毁了。而最终值是保存在堆中对象的成员中的。
因此,内存存放是需要分情况讨论的。引用类型存放的是地址值,是要寻址的,它的内存地址范围和jvm的指令位宽有关,但是64位的jvm默认开启压缩指针,因此一般把引用类型看作占用4字节内存空间,null就是地址值是0。规定0地址是不代表内存空间,相当于你每次访问一个null时都是访问基址为0的那块内存。由于0地址不指向内存空间,所以没有数据,不能进行操作。Java对空指针进行操作就会给你一个空指针异常
编辑于 2021-05-20 20:12:30 回复(0)
object来干嘛的
发表于 2016-01-10 22:15:01 回复(4)
题中Object所占的空间,并非指具体对象所占空间,而是指对象的引用本身所占空间;
引用本身存储的则是对象地址,一般为4字节(具体和jvm位数与实现、指针压缩等有关,以下按4字节来举例),例如:
void foo(){
    long num = 1L;
    String s = new String("abc");
}
在调用以上方法时,栈上会给变量num分配8字节,给变量s分配4字节(用于存储堆中String对象的地址);
堆中则是分配了一部分空间来存储具体的String实例对象;
而题目想问的,应该就是上面例子中num和s在栈上占用的这部分空间。
(当然也不一定非得是栈上,堆中的对象内部,也可能存在对其他对象的引用,这些引用也占用4字节的)
发表于 2021-12-17 00:10:17 回复(3)
对象在声明时,不会创建实例,不会占用空间。一定要注意理解。
发表于 2016-06-03 20:36:55 回复(0)
Object如果创建了,java中会在对象前分配一段内存作为对象头,这也是会占内存的啊,及时对象里什么都没有。这道题没有讲清楚啊
发表于 2016-08-31 15:58:28 回复(0)
说实话,我觉得这题真操蛋
发表于 2021-12-08 19:05:57 回复(0)
一个对象包括对象头,对齐填充和实例数据,在64位的操作系统中,不是光对象头就64位了,更何况还有其他,为啥不选object啊
发表于 2022-03-17 08:20:58 回复(1)
object是引用类型,在站上创建,引用类型站4个字节,long站8个字节
发表于 2022-06-28 16:38:50 回复(0)
权威来喽,牛客网最具正能量的金牌解说员MC枫少为您独家解答:
byte short int long float double ,  从左到右,一个比一个胖,需要更大更多的空间
发表于 2022-06-11 16:11:04 回复(1)
B
long        8字节
double    8字节
float        4字节
int           4字节
short       2字节
char        2字节
Objec在这里很另类啊
发表于 2016-08-24 10:09:23 回复(0)
Object 是引用数据类型,只申明而不创建实例,只会在栈内存中开辟空间,默认为空,空占1 bit.
发表于 2018-07-03 20:32:56 回复(0)
JAVA语言中定义了8种基本的数据类型,来保存变量。JAVA要求程序中的每一个变量都规定自己的类型。正因为如此,JAVA属于强类型语言,从而不同于JavaScript这样的弱类型脚本语言。

byte:8位,最大存储数据量是255,存放的数据范围是-128~127之间。 
short:16位,最大数据存储量是65536,数据范围是-32768~32767之间。 
int:32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。 
long:64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。 
float:32位,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。 
double:64位,数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加。 
boolean:只有true和false两个取值。 
char:16位,存储Unicode码,用单引号赋值。
注:一个字节=8位。
所以,整型数据类型中,需要内存空间最多的是long。
发表于 2016-06-20 16:00:49 回复(0)
Object不属于基本数据类型吧
发表于 2016-02-28 09:30:27 回复(0)
炫头像
Object是所有数据类型的基类
发表于 2015-12-08 14:16:49 回复(1)
又不说清楚选项,你就给个Object,那理解成new也没问题。其它几个选项不用new,那Object占用就最多
发表于 2022-11-11 15:16:27 回复(0)
🙃搞的和真的似的,题干中也没体现出只声明啊。。。
发表于 2022-02-08 16:17:02 回复(0)
这题目明显有问题。不同语言的数据类型大小不一样。java中long是8,C/C++中是4.... 
发表于 2017-03-11 17:41:29 回复(2)
16位系统:long是4字节,int是2字节
32位系统:long是4字节,int是4字节
64位系统:long是8字节,int是4字节
发表于 2016-03-22 04:28:32 回复(0)