JAVA里有没有动态开辟内存的语法?

鸣鸣Amadues 2015-11-08 05:03:49
类似于C的MALLOC之类的。
还是说必须定义类,然后new?
...全文
260 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
树成 2015-11-11
  • 打赏
  • 举报
回复
当然,对于你的问题,其实是很不好回答的,因为java从整个语言层面都是不关心内存的,它吧对内存分配的理解全部变成的对象来思考,而不是所谓的分配内存——它既不管内存地址,也不管内存回收,更不在乎数据时如何存放在内存中并如何读取的,它只关心它生成了多少对象。因此你所说的什么动态生成内存还是其它什么内存生成方式,在java里面来说都是不正确的。 这不仅仅是说法的问题,而是思考问题的方式不同,你用C或者低级语言来思考java,就会似是而非,好像是对的,但实际上根本就把握不到实质。 如果你的问题说,java除了new能有几种生成对象的方式,这是一个很简单的问题,因为大多数开发java的人应该都知道,但是你说出了new有几种动态分配内存的方式,我只能告诉你,new也不是动态分配内存,因为java里面就没辙概念。如果你非要这么执着的这么想,那我只能告诉你,java每一步都在动态分配内存,包括你定义一个类它也是动态分配内存,因为这个类本身有自己的内存空间分配区域,而且对应这个类也有一个对象,而且类里面的属性,方法都有对应的对象,这些都是所谓动态分配出来的,但是它们不是new的,我这个回答能够解释你的问题了么?
树成 2015-11-11
  • 打赏
  • 举报
回复
我就是想知道你发帖的意义何在?我觉得你在秀你的知识,跟javacoder说,你看咱c有一个malloc,而java没有,对么? 还有,你理解反了,现有概念才有实现,而且java并不像你对C理解的那样。 new关键字在java中表示创建一个对象并为其分配内存,然后执行构造函数。 而malloc在C中是分配一块内存(当然我对C并不太熟悉,我只了解这个程度)。 但是c会生成一个对象么?C会执行构造函数么?而且jvm不一定是C开发的,其它语言都可以实现它,汇编也可以,甚至js都可以,你凭什么说new会和c的malloc一样呢?
鸣鸣Amadues 2015-11-11
  • 打赏
  • 举报
回复
引用 6 楼 spiniper 的回复:
楼主的问题让我疑惑,不过楼主不要用C的想法来思考JAVA,C是过程性语言,包括C++也有过程性的特征,但是JAVA是纯面向对象语言,没有过程性特性的语句,所有的模块都是面向对象的。
这跟面向过程和面向对象没什么关系,JAVA里的new Object()就是动态开辟内存,只不过概念和叫法上有些不同罢了。
树成 2015-11-11
  • 打赏
  • 举报
回复
楼主的问题让我疑惑,不过楼主不要用C的想法来思考JAVA,C是过程性语言,包括C++也有过程性的特征,但是JAVA是纯面向对象语言,没有过程性特性的语句,所有的模块都是面向对象的。
鸣鸣Amadues 2015-11-10
  • 打赏
  • 举报
回复
引用 3 楼 spiniper 的回复:
我想知道所谓动态开辟内存有什么实际的应用么?
有的,其实new对象就是动态开辟内存。
这个逗b 2015-11-09
  • 打赏
  • 举报
回复
举个例子 让我理解下 你说的啥
树成 2015-11-09
  • 打赏
  • 举报
回复
我想知道所谓动态开辟内存有什么实际的应用么?
a327369238 2015-11-08
  • 打赏
  • 举报
回复
有的,Buffer类的静态方法:allocate以及allocateDirect方法 貌似
飏飏一蝶 2015-11-08
  • 打赏
  • 举报
回复
没有,只能new

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧