Java面试宝典-变量声明和定义

转载 2015年11月21日 19:29:36

我们在程序设计中,时时刻刻都用到变量的定义和变量的声明,可有些时候我们对这个概念不是很清楚,知道它是怎么用,但却不知是怎么一会事,下面我就简单的把他们的区别介绍如下:(望我的指点对你受益)

变量的声明有两种情况:

1、一种是需要建立存储空间的。例如:int a 在声明的时候就已经建立了存储空间。

2、另一种是不需要建立存储空间的。 例如:extern int a 其中变量a是在别的文件中定义的。

前者是“定义性声明(defining declaration)”或者称为“定义(definition)”,而后者是“引用性声明(referncing declaration)”,从广义的角度来讲声明中包含着定义,即定义是声明的一个特例,所以并非所有的声明都是定义,例如:int a 它既是声明,同时又是定义。然而对于 extern a 来讲它只是声明不是定义。一般的情况下我们常常这样叙述,把建立空间的声明称之为“定义”,而把不需要建立存储空间的声明称之为“声明”。很明显我们在这里指的声明是范围比较窄的,即狭义上的声明,也就是说非定义性质的声明,例如:在主函数中:

int main() {
extern int A;
//这是个声明而不是定义,声明A是一个已经定义了的外部变量
//注意:声明外部变量时可以把变量类型去掉如:extern A;
dosth(); //执行函数
}
int A; //是定义,定义了A为整型的外部变量

外部变量的“定义”与外部变量的“声明”是不相同的,外部变量的定义只能有一次,它的位置是在所有函数之外,而同一个文件中的外部变量声明可以是多次的,它可以在函数之内(哪个函数要用就在那个函数中声明)也可以在函数之外(在外部变量的定义点之前)。系统会根据外部变量的定义(而不是根据外部变量的声明)分配存储空间的。对于外部变量来讲,初始化只能是在“定义”中进行,而不是在“声明”中。所谓的“声明”,其作用,是声明该变量是一个已在后面定义过的外部变量,仅仅是为了“提前”引用该变量而作的“声明”而已。extern 只作声明,不作任何定义。

(我们声明的最终目的是为了提前使用,即在定义之前使用,如果不需要提前使用就没有单独声明的必要,变量是如此,函数也是如此,所以声明不会分配存储空间,只有定义时才会分配存储空间。)

用static来声明一个变量的作用有二:

(1)对于局部变量用static声明,则是为该变量分配的空间在整个程序的执行期内都始终存在。

(2)外部变量用static来声明,则该变量的作用只限于本文件模块。


本文来自:http://www.cnblogs.com/GavinDai/archive/2011/10/24/2222735.html

【JAVA程序员面试宝典】2天看完了-谈谈我的理解吧

今天开启阅读了这本书,中断了原计划中算法中级层次的系统性训练,我觉得先看看面试题吧。先给这本书A掉再说。 阅读了一天,大概阅读了一半,有点失望,因为这本书讲解的面试都是基础中的基础,我看着都着急,作者...
  • superMarss
  • superMarss
  • 2014年09月07日 23:44
  • 5344

2017 java程序员面试宝典

转自点击打开链接 1:JDK与JRE JDK:JAVA Development Kit, java开发工具包; 包括各种类库和工具,当然也包括JRE JRE:JAVA Runtime Environm...
  • bigheadyushan
  • bigheadyushan
  • 2017年08月30日 00:09
  • 973

Java面试宝典2017版

一. Java基础部分............................................................................................
  • longyajidi
  • longyajidi
  • 2017年06月19日 08:53
  • 53701

《Java面试宝典2016》学习实践与笔记

11、“==”和“equal”方法究竟有什么区别 如下编码所示,相同的字符串,两次不同的声明,分配的地址不一样。除非编译器有优化。 package somethingelse; public...
  • stubbornying
  • stubbornying
  • 2016年06月15日 22:52
  • 6538

Java面试宝典 Beta5.0版 (2018年最新公测版)

第一章 内容介绍 该宝典是一份知识点全面又能不断更新,与时俱进的学习手册,不仅收录了作者亲身面试遇到的问题,还收录了近上万名黑马学子面试时遇到的问题。我们会一直不断地更新和充实该宝典,同时也希望读者...
  • antaojin
  • antaojin
  • 2018年01月19日 12:06
  • 113

java面试宝典超长完整版(续)

http://blog.csdn.net/qiyuexuelang/article/details/8826770 三. html&JavaScript&ajax部分 1. 判断第...
  • hhhuuu2020
  • hhhuuu2020
  • 2016年04月01日 01:21
  • 6901

《Java程序员面试宝典(第4版)》 试读感想

《Java程序员面试宝典(第4版)》 试读感想         谈到Java程序员面试这个话题,我想,每个从事java开发的人都有一套自己的见解,特别是工作3年以上的。对于学校里将要毕业即将开始找工...
  • chwshuang
  • chwshuang
  • 2015年11月06日 18:11
  • 2781

Java面试宝典2015版(绝对值得收藏超长版)(四)

72、java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类? 字节流,字符流。字节流继承于InputStream OutputStream,字符流继承于In...
  • yunyoujiutianya
  • yunyoujiutianya
  • 2016年03月16日 10:39
  • 2593

Kindle pdf电子书 Java程序员面试宝典

适合应届生面试用,因为缺乏项目经验。 夯实一下基础。 临时抱抱佛教也可以。PDF清晰文字版 http://www.rcdisk.com/index.php/group/topic/id-62...
  • yagamil
  • yagamil
  • 2015年05月19日 22:06
  • 2426

Java面试宝典-2017

目录(?)[-] Java基础部分 一个java源文件中是否可以包括多个类不是内部类有什么限制Java有没有goto说说和的区别在JAVA中如何跳出当前的多重嵌套循环switch语句能否作...
  • lcn_Lynn
  • lcn_Lynn
  • 2017年11月04日 21:53
  • 446
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java面试宝典-变量声明和定义
举报原因:
原因补充:

(最多只允许输入30个字)