第2章标识符关键字数据类型

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第二章Java中关键字和数据类型一、Java中的标识符、关键字标识符1、标识符的定义用来标识类名,变量名,方法名,类型名,数组名,文件名的有效序列称为标识符。简单地说,标识符就是一个名字。Java语言规定标识符由字母,下划线,美元符号和数字组成,并且第一个字符不能是数字字符。2、标识符的命名规则:(1.)大小写有别,例如a和A是两个变量,Boy和boy是不同的标识符(2.).长度任意(3.)可以任何字母开始,另外还可以以_和$开始,一般$是很多代码生成器用的,人工写出来的代码不鼓励_$(4.).除了第一个字符,后面可以跟任何字母,数字,_和$3、标识符的约定包名的约定:Java包的名字都是由小写单词组成。但是由于Java面向对象编程的特性,每一名Java程序员都可以编写属于自己的Java包,为了保障每个Java包命名的唯一性,在最新的Java编程规范中,要求程序员在自己定义的包的名称之前加上唯一的前缀。由于互联网上的域名称是不会重复的,所以程序员一般采用自己在互联网上的域名称作为自己程序包的唯一前缀。类的命名类的名字必须由大写字母开头而单词中的其他字母均为小写;如果类名称由多个单词组成,则每个单词的首字母均应为大写例如TestPage;如果类名称中包含单词缩写,则这个所写词的每个字母均应大写,如:XMLExample,还有一点命名技巧就是由于类是设计用来代表对象的,所以在命名类时应尽量选择名词。例如:Circle方法的命名方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头。例如:sendMessge常量的命名常量的名字应该都使用大写字母,并且指出该常量完整含义。如果一个常量名称由多个单词组成,则应该用下划线来分割这些单词。例如:MAX_VALUE参数的命名参数的命名规范和方法的命名规范相同,而且为了避免阅读程序时造成迷惑,请在尽量保证参数名称为一个单词的情况下使参数的命名尽可能明确。Javadoc注释Java除了可以采用我们常见的注释方式之外,Java语言规范还定义了一种特殊的注释,也就是我们所说的Javadoc注释,它是用来记录我们代码中的API的。Javadoc注释是一种多行注释,以结束,注释可以包含一些HTML标记符和专门的关键词。使用Javadoc注释的好处是编写的注释可以被自动转为在线文档,省去了单独编写程序文档的麻烦。例如:在每个程序的最开始部分,一般都用Javadoc注释对程序的总体描述以及版权信息,之后在主程序中可以为每个类、接口、方法、字段添加Javadoc注释,每个注释的开头部分先用一句话概括该类、接口、方法、字段所完成的功能,这句话应单独占据一行以突出其概括作用,在这句话后面可以跟随更加详细的描述段落。在描述性段落之后还可以跟随一些以Javadoc注释标签开头的特殊段落,例如上面例子中的@auther和@version,这些段落将在生成文档中以特定方式显示。虽然为一个设计低劣的程序添加注释不会使其变成好的程序,但是如果按照编程规范编写程序并且为程序添加良好的注释却可以帮助你编写出设计完美,运行效率高且易于理解的程序,尤其是在多人合作完成同一项目时编程规范就变得更加重要。俗话说“磨刀不误砍柴工”,花费一点时间去适应一下Java编程规范是有好处的。二、关键字1、关键字就是Java语言中已经被赋予特定意义的一单词。不可以把这类记作为名字来用。Java的关键字有:2、Java关键字速查表(以下关键字不允许作为名字使用)访问控制:private私有的protected受保护的public公共的类、方法和变量修饰符abstract声明抽象class类extends扩允,继承final终极,不可改变的implements实现interface接口native本地new新,创建static静态strictfp严格,精准synchronized线程,同步transient短暂volatile易失程序控制语句break跳出循环continue继续return返回do运行while循环if如果else反之for循环instanceof实例switch开关case返回开关里的结果default默认错误处理catch处理异常finally有没有异常都执行throw抛出一个异常对象throws声明一个异常可能被抛出try捕获异常包相关import引入package包基本类型boolean布尔型byte字节型char字符型double双精度,float浮点int整型long长整型short短整型null空true真false假变量引用super父类,超类this本类void无返回值另外,java保留字goto和constfriendlysizeof不是java的关键字!三、变量变量是Java程序的一个基本存储单元。变量由一个标识符,类型及一个可选初始值的组合定义。此外,所有的变量都有一个作用域,定义变量的可见性,生存期。接下来讨论变量的这些元素。3.1声明一个变量在Java中,所有的变量必须先声明再使用。基本的变量声明方法如下:typeidentifier[=value][,identifier[=value]...];type是Java的基本类型之一,或类及接口类型的名字(类和接口类型在本书第1部分的后部讨论)。标识符(identifier)是变量的名字,指定一个等号和一个值来初始化变量。请记住初始化表达式必须产生与指定的变量类型一样(或兼容)的变量。声明指定类型的多个变量时,使用逗号将各变量分开。以下是几个各种变量声明的例子。注意有一些包括了初始化。inta,b,c;//declaresthreeints,a,b,andc.intd=3,e,f=5;//declaresthreemoreints,initializing//dandf.bytez=22;//initializesz.doublepi=3.14159;//declaresanapproximationofpi.charx=’x’;//thevariablexhasthevalue’x’.你选择的标识符名称没有任何表明它们类型的东西。许多读者记得FORTRAN预先规定从I到N的所有标识符都为整型,其他的标识符为实型。Java允许任何合法的标识符具有任何它们声明的类型。3.2动态初始化尽管前面的例子仅将字面量作为其初始值,Java也允许在变量声明时使用任何有效的表达式来动态地初始化变量。例如,下面的短程序在给定直角三角形两个直角边长度的情况下,求其斜边长度。//Demonstratedynamicinitialization.classDynInit{publicstaticvoidmain(Stringargs[]){doublea=3.0,b=4.0;//cisdynamicallyinitializeddoublec=Math.sqrt(a*a+b*b);System.out.println(Hypotenuseis+c);}}这里,定义了3个局部变量a,b,c。前两个变量a和b初始化为常量。然而直角三角形的斜边c被动态地初始化(使用勾股定理)。该程序用了Java另外一个内置的方法sqrt(),它是Math类的一个成员,计算它的参数的平方根。这里关键的一点是初始化表达式可以使用任何有效的元素,包括方法调用、其他变量或字面量。3.3变量的作用域和生存期到目前为止,我们使用的所有变量都是在方法main()的后面被声明。然而,Java允许变量在任何程序块内被声明。在第2章中已解释过了,程序块被包括在一对大括号中。一个程序块定义了一个作用域(scope)。这样,你每次开始一个新块,你就创建了一个新的作用域。你可能从先前的编程经验知道,一个作用域决定了哪些对象对程序的其他部分是可见的,它也决定了这些对象的生存期。大多数其他计算机语言定义了两大类作用域:全局和局部。然而,这些传统型的作用域不适合Java的严格的面向对象的模型。当然将一个变量定义为全局变量是可行的,但这是例外而不是规则。在Java中2个主要的作用域是通过类和方法定义的。尽管类的作用域和方法的作用域的区别有点人为划定。因为类的作用域有若干独特的特点和属性,而且这些特点和属性不能应用到方法定义的作用域,这些差别还是很有意义的。因为有差别,类(以及在其内定义的变量)的作用域将被推迟到第6章当讨论类时再来讨论。到现在为止,我们将仅仅考虑由方法或在一个方法内定义的作用域。方法定义的作用域以它的左大括号开始。但是,如果该方法有参数,那么它们也被包括在该方法的作用域中。本书在第5章将进一步讨论参数,因此,现在可认为它们与方法中其他变量的作用域一样。作为一个通用规则,在一个作用域中定义的变量对于该作用域外的程序是不可见(即访问)的。因此,当你在一个作用域中定义一个变量时,你就将该变量局部化并且保护它不被非授权访问和/或修改。实际上,作用域规则为封装提供了基础。作用域可以进行嵌套。例如每次当你创建一个程序块,你就创建了一个新的嵌套的作用域。这样,外面的作用域包含内部的作用域。这意味着外部作用域定义的对象对于内部作用域中的程序是可见的。但是,反过来就是错误的。内部作用域定义的对象对于外部是不可见的。为理解嵌套作用域的效果,考虑下面的程序://Demonstrateblockscope.classScope{publicstaticvoidmain(Stringargs[]){intx;//knowntoallcodewithinmainx=10;if(x==10){//startnewscopeinty=20;//knownonlytothisblock//xandybothknownhere.System.out.println(xandy:+x++y);x=y*2;}//y=100;//Error!ynotknownhere//xisstillknownhere.System.out.println(xis+x);}}正如注释中说明的那样,在方法main()的开始定义了变量x,因此它对于main()中的所有的随后的代码都是可见的。在if程序块中定义了变量y。因为一个块定义一个作用域,y仅仅对在它的块以内的其他代码可见。这就是在它的块之外的程序行y=100;被注释掉的原因。如果你将该行前面的注释符号去掉,编译程序时就会出现错误,因为变量y在它的程序块之外是不可见的。在if程序块中可以使用变量x,因为块(即一个嵌套作用域)中的程序可以访问被其包围作用域中定义的变量。变量可以在程序块内的任何地方被声明,但是只有在他们被声明以后才是合法有效的。因此,如果你在一个方法的开始定义了一个变量,那么它对于在该方法以内的所有程序都是可用的。反之,如果你在一个程序块的末尾声明了一个变量,它就没有任何用处,因为没有程序会访问它。例如,下面这个程序段就是无效的,因为变量count在它被定义以前是不能被使用的。//Thisfragmentiswrong!count=100;//oops!cannotusecountbeforeitisdeclared!intcount;另一个需要记住的重要之处是:变量在其作用域内被创建,离开其作用域时被撤消。这意味着一个变量一旦离开它的作用域,将不再保存它的值了。因此,在一个方法内定义的变量在几次调用该方法之间将不再保存它们的值。同样,在块内定义的变量在离开该块时也将丢弃它的值。因此,一个变量的生存期就被限定在它的作用域中。如果一个声明定义包括一个初始化,那么每次进入声明它的程序块时,该变量都要被重新初始化。例如,考虑这个程序://Demonstratelifetimeofavariable.classLifeTime{publicstaticvoidmain(Stringargs[]){intx;for(x=0;x3;x++){inty=-1;//yisinitializedeachtimeblockisenteredSystem.out.println(yis:+y);//t

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功