在java编程中new有分配内存的作用,那么为什么要分配内存呢?
5个回答
2013-02-12 · 知道合伙人数码行家
关注
展开全部
您好,提问者:
因为内存是用二进制来表示的,如果是java中int类型的,那么就占2个字节,比如:int a = 1;那么在内存中表示就是0 1!
如果提问者对这块不懂,那么请去看JVM运行原理!
因为内存是用二进制来表示的,如果是java中int类型的,那么就占2个字节,比如:int a = 1;那么在内存中表示就是0 1!
如果提问者对这块不懂,那么请去看JVM运行原理!
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个和国家为什么要分配你房子一个道理
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
吃饭。会占用自己肚子的空间。。为什要占肚子的空间呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
任何程序想要执行,都要转化为进程态,计算机的取指令操作是针对内存里的内容进行操作的,也就是说,所有运行的程序都必须在内存中才可以被CPU读取以及修改等。
在java中,基本数据类型,比如int,double这类,不占用太多内存空间,所以声明的时候也就在虚拟机中分配了一块内存空间。而我们知道java是面向对象的语言,所以类以及对象,是我们操作的主要内容。而一个对象则可能非常复杂,占用的内存空间也可能非常的大。而实际工作中,我们发现,并非所有的对象都需要重新独立的申请一块内存空间,而是有很大一部分对象引用的是用一个对象的数据,所以只需要引用就可以满足,有些对象仅仅是起到了声明作用,也不需要实际分配内存空间。所以,在java中,采用new操作符来分配内存空间,这是对内存优化的一种重要功能。
下面我举个例子:
Employee A = new Employee("Jack");
Employee B = new Employee("Jack");
Employee C = A;
private Employee D;
这四个语句,前两个尽管都创建了同样一个员工对象,名字是JACK,但是在内存中A和B分别被分配了两块不同的区域来存储,对A或者B进行操作不会改变另一个的值和状态。C被赋值为A,而C没有通过new操作符申请新内存,所以他和A共享一块内存空间,修改C的值也会同时改变A的值。
第四条语句,这是一个实例域的声明语句,他只是声明了D标识符可以代表一个Employee对象,而这个语句执行完,没有实际分配内存,只有在程序运行初始化时,通过new操作符才真正的为它开辟一块内存空间。
如果不用new来进行限制,所有的对象都立刻分配内存的话,那么程序启动会会瞬间占满内存,计算机速度性能受到很大影响。
在java中,基本数据类型,比如int,double这类,不占用太多内存空间,所以声明的时候也就在虚拟机中分配了一块内存空间。而我们知道java是面向对象的语言,所以类以及对象,是我们操作的主要内容。而一个对象则可能非常复杂,占用的内存空间也可能非常的大。而实际工作中,我们发现,并非所有的对象都需要重新独立的申请一块内存空间,而是有很大一部分对象引用的是用一个对象的数据,所以只需要引用就可以满足,有些对象仅仅是起到了声明作用,也不需要实际分配内存空间。所以,在java中,采用new操作符来分配内存空间,这是对内存优化的一种重要功能。
下面我举个例子:
Employee A = new Employee("Jack");
Employee B = new Employee("Jack");
Employee C = A;
private Employee D;
这四个语句,前两个尽管都创建了同样一个员工对象,名字是JACK,但是在内存中A和B分别被分配了两块不同的区域来存储,对A或者B进行操作不会改变另一个的值和状态。C被赋值为A,而C没有通过new操作符申请新内存,所以他和A共享一块内存空间,修改C的值也会同时改变A的值。
第四条语句,这是一个实例域的声明语句,他只是声明了D标识符可以代表一个Employee对象,而这个语句执行完,没有实际分配内存,只有在程序运行初始化时,通过new操作符才真正的为它开辟一块内存空间。
如果不用new来进行限制,所有的对象都立刻分配内存的话,那么程序启动会会瞬间占满内存,计算机速度性能受到很大影响。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询