声明、定义、初始化

声明、定义、初始化

    声明、定义和初始化是编程中必不可少的步骤,对于每一个编写过程序的人,肯定都经历过对一个变量或函数方法、类进行声明、定义、初始化的操作。但是谈到对这三个概念的认识,许多人还是有很多误区和混淆。因为这三个操作往往是合并在一起操作的,特别是对变量进行操作时。

    例如int a = 0;这一语句在程序中同时完成了声明、定义、初始化三个操作,其实在java中基本类型变量的声明和定义是同时产生的;而对于对象来说,声明和定义是分开的。在java中,成员变量是在构造方法中被初始化的,在定义对象时,程序会自动调用构造方法,也就是说java语言中对象的定义和初始化是捆绑在一起的。

    例如有类A,A a;就是一个声明,而程序中a=new A();就是在定义和初始化这个声明过的对象a。

    下面我们来搞清楚声明和定义的区别。

    声明其实就是向编译器介绍名字,是一种标示符。它的功能就是告诉编译器“这个对象、函数方法、或者变量在某处可以找到,大概是个什么样子”。所以声明是不需要建立存储空间的。它主要是告诉编译器,这个名字已经被预定了,别的地方再也不能用它来作为变量名或对象名。而且这个名字已经匹配到一块内存上了,下面的代码用到变量或者对象是在别的地方定义的。声明是可以反复出现的。

    所谓定义就是(编译器)创建一个对象,为这个对象分配一块内存,并给它取上一个名字,这个名字就是就是我们经常所说的变量名或对象名。意思就是说“在这里建立变量”、“在这里建立类对象”或“在这里建立函数方法”,定义会为被定义的名字分配存储空间。无论定义的是什么,编译器都会为他们在定义点分配存储空间。对于变量,编译器确定变量的大小,然后在内存中开辟相应空间来保存其数据;对于函数,编译器会生成代码,这些代码最终也要占用一定的内存。

    总之就是,将需要建立存储空间的声明称为“定义”,把不需要建立存储空间的称为“声明”。其实声明的最终目的是为了提前使用,即在定义之前使用,如果不需要提前使用就没有单独声明的必要,变量是如此,函数也是如此,所以声明不会分配存储空间,只有定义时才会分配存储空间。

声明和定义最重要的区别就在于定义创建对象并为这个对象分配了内存,声明没有分配内存。并且声明可以出现多次,定义只能进行一次。

    初始化对于一个程序来说就是加载基本的数据,对变量来而言是给它一个初始值,其实就是加载程序基本数据及给变量赋初值。Java对象是在其被创建时初始化的,就是通过new关键字来调用一个类的构造函数,通过构造函数来创建一个对象,这种方式在java规范中被称为“由执行类实例创建表达式而引起的对象创建”。当一个对象被创建之后,虚拟机会为其分配内存,主要用来存放对象的实例变量及其从超类继承过来的实例变量(即使这些从超类继承过来的实例变量有可能被隐藏也会被分配空间)。在为这些实例变量分配内存的同时,这些实例变量也会被赋予默认值即初始化。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值