一个简单的java问题~

来源:百度知道 编辑:UC知道 时间:2024/05/29 19:38:16
我学java半年多了,但有些基本问题还不是很清楚~
请问: int a=5 与 int a=new int(5) 是等价的吗?

Integer a = new Integer(5);

a 存在栈内存
new 出来的都是存放在堆内存

java基本数据类型分配到栈上,对象数据分配到堆上:

Java虚拟机是栈式的,它不定义或使用寄存器来传递或接受参数,其目的是为了保证指令集的简洁性和实现时的高效性(特别是对于寄存器数目不多的处理器)。所有寄存器都是32位的。java虚拟机的栈有三个区域:局部变量区、运行环境区、操作数区。 基本数据类型的变量的内容直接存储在栈上。

引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。同时为了面向对象操作的一致性,这些基本类型都有相应的封装类型:Integer、Short、Long、Byte、Float、Double、Character等。 因为封装类型是对象,所以可以进行相应的很多对象能力函数操作,这样就可以提供很多基本类型难以完成的工作的完成和实现。

Java的堆是一个运行时数据区,类的实例(对象)从中分配空间。Java语言具有无用单元收集能力:它不给程序员显式释放对象的能力。Java不规定具体使用的无用单元收集算法,可以根据系统的需求使用各种各样的算法。

int a= new int(5)有语法错误.
int是基本数据类型,不是对象,只有对象才能new

你这么写本身就是错误的

new 后面是对象, int在JAVA中不是对象!
new Integer(5)

int是基本数据类型,不是对象,它默认值为0,创建在栈中.
Integer是个对象,它有自己的方法,默认值为NULL,创建在堆中。

希望我的回答对你有所帮助

写法就是错的

int a=new int(5)
是对象才可以这样写
int 是基本数据类型
不是类,String才是类
Integer也是类