java中new是运算符么_C中的new运算符与java中的new运算符之间的区别

>在C中,T * p =新T; ……

>为T类型的对象分配足够的内存,

>在该内存中构造一个T类型的对象,可能初始化它,和

>返回指向对象的指针. (指针与标准new的已分配内存的地址具有相同的值,但不一定是新的[]数组的情况.)

如果内存分配失败,则抛出类型为std :: bad_alloc的异常,不构造任何对象且不分配内存.

如果对象构造函数抛出异常,(显然)没有构造对象,则会立即自动释放内存,并传播异常.

否则,构造了一个动态分配的对象,用户必须手动销毁该对象并释放内存,通常是说删除p;.

实际的分配和释放功能可以用C控制.如果没有别的,则使用全局的预定义函数:: operator new(),但这可以由用户替换;如果存在静态成员functionT :: operator new,则将使用该成员.

>在Java中它非常相似,只是new的返回值是可以绑定到T类型的Java变量(或其基础,如Object)的东西,并且你必须总是有一个初始化器(所以你要说) T x = new T();).对象的生命周期是不确定的,但保证至少与任何变量仍引用对象一样长,并且无法(也不需要)手动销毁对象. Java没有明确的内存概念,您无法控制分配的内部.

此外,C允许许多不同形式的新表达(所谓的放置形式).它们都创建动态存储对象,必须手动销毁,但它们可能相当随意.据我所知,Java没有这样的设施.

最大的区别可能就是使用:在Java中,你总是使用new来处理所有事情,而且必须使用new,因为它是创建(类类型)对象的唯一方法.相比之下,在C中,你几乎不应该在用户代码中有裸体新闻. C具有无约束变量,因此变量本身可以是对象,这就是C中通常使用对象的方式.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值