java new 的作用_java中new的作用

Point originOne = new Point(23, 94); 1、声明Declaration:粗体代码是将变量名称与对象类型关联的变量声明。

2、实例化Instantiating :new关键字是一个java运算符,它用来创建对象。

3、初始化Initialization:new运算符,随后调用构造函数,初始化新创建的对象。 1、声明一个变量来指向一个对象,即引用

在此之前,你知道,要声明一个变量,你需要写:

type name;

这将告诉编译器你将使用name引用一个type类型的对象。用一个原始变量,这个声明也保留了适当的内存量的变量。

你也可以在自己的行上声明一个引用变量。例如:

Point  originone;

如果你只是声明一个像originone这样的引用变量,其价值将待定,直到有一个对象真正被创造和分配给它。只是简单地声明一个引用变量而并没有创建一个对象。对于这样,你需要使用new运算符。在你的代码中使用它之前,你必须指定一个对象给originone。否则,你会得到一个编译器错误-----空指针异常。

处于这种状态的变量,目前没有引用任何的对象,可以说明如下(变量名,originone,一个引用没指向任何对象)。

2、实例化一个类对象

new运算符实例化一个类对象,通过给这个对象分配内存并返回一个指向该内存的引用。new运算符也调用了对象的构造函数。

注意:“实例化一个类的对象”的意思就是“创建对象”。创建对象时,你正在创造一个类的“实例”,因而“实例化”一个类的对象。

new运算符需要一个单一的,后缀参数,需要调用构造函数。构造函数的名称提供了需要实例化类的名称。

new运算符返回它所创建的对象的引用。此引用通常被分配给一个合适的类型的变量,如:Point originone =new Point(23,94);

由new运算符返回的引用可以不需要被赋值给变量。它也可以直接使用在一个表达式中。例如: int height = new Rectangle().height; 3、初始化一个类对象

这是Point类的代码

public class Point {

public int x = 0;

public int y = 0;

//constructor

public Point(int a, int b) {

x = a;

y = b;

}

}

这个类包含一个单一的构造函数。你可以识别一个构造函数,因为它的声明使用与类具有相同的名称,它没有返回类型。

Q:Map map=new HashMap() 的类名和构造函数的名字为什么不一样?

答:不能写成Map map = new Map()是因为:Map是接口,hashMap是Map的一种实现。接口不能被实例化,只能使用其实现类来实例化,而Map map=new Map()是错误的

在Java中 Map map = new HashMap()为什么不写成HashMap map = new HashMap()呢?

这是出于代码的维护性来考虑。

对于:Map map = new HashMap()是定义了一个接口,我们直接调用这个接口就可以完成我们想要的动作,别人在使用时调用此接口便可以,而不用管内部实现逻辑。以后如果有变动,不用管这个接口,只需要修改实现这个接口的类即可。

而对于 :HashMap map = new HashMap()我们定义的就是一个实现类,把这个类给别人用,在出现问题和改动的话,那么程序就无法运行,凡是用到这个类的地方都要修改,维护起来很麻烦,而上面的接口,你只需要改你实现这个接口的实现类就可以了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值