03变量声明关键字和类型.docx
- 文档编号:23866929
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:19
- 大小:34.65KB
03变量声明关键字和类型.docx
《03变量声明关键字和类型.docx》由会员分享,可在线阅读,更多相关《03变量声明关键字和类型.docx(19页珍藏版)》请在冰豆网上搜索。
03变量声明关键字和类型
模块三变量声明、关键字和类型
模块三变量声明、关键字和类型1
1.基本语法元素2
1.1.注释2
1.2.分号2
1.3.语句块(block)2
1.4.空白3
2.标识符3
3.Java关键字4
4.基本Java数据类型4
4.1.逻辑型──boolean4
4.2.字符型──char5
4.3.文本类──String5
4.4.整数型──byte,short,int,long5
4.5.浮点数──float和double6
5.变量、声明和赋值6
6.引用(Reference)类型7
6.1.创建一个新类型7
6.2.创建并初始化一个对象7
6.3.存储器分配和布局8
6.4.引用类型的赋值8
6.5.值传递9
6.6.this引用10
7.Java编码约定10
8.练习:
使用对象11
8.1.创建一个类和相应的对象11
8.2.检验引用赋值11
9.检查你的进度12
本模块阐述了在Java技术中使用的基本元素,包括变量、关键字、原始类型和类类型。
完成本模块的学习后,你应该能够:
-区分有效和无效标识符
-识别Java技术关键字
-列出八个原始类型
-为数字类型和文本类型定义文字值
-解释术语class、object、membervariable和referencevariable
-为一个简单的包含原始成员变量的类创建一个类定义
-声明类类型变量
-使用new构造一个对象
-描述缺省初始化
-使用点符号访问一个对象的成员变量
-描述一个引用变量的意义
-描述分配类类型变量的结果
1.基本语法元素
1.1.注释
注释是程序员用来标记、说明程序的。
编译器会忽略注释中的内容,注释中的内容不会对程序的运行产生任何影响。
Java语言允许三种风格的注释:
//commentononeline
/*commentonone
ormoreline*/
/**documentingcomment*/
1.2.分号
在Java编程语言中,语句是一行由分号(;)终止的代码。
例如
totals=a+b+c+d+e+f;
与下式相同
total=a+b+c+
d+e+f;
1.3.语句块(block)
语句块(block)也叫做复合语句。
一个语句块(block)是以上括号和下括号()为边界的语句集合;语句块也被用来组合属于某个类的语句。
例如:
publicclassDate
privateintday;
privateintmonth;
privateintyear;
语句块可被嵌套。
HelloWorldApp类由main方法构成,这个方法就是一个语句块,它是一个独立单元,单元本身可作为在类HelloWorldApp块中的一组事务之一。
下面的语句是合法的:
//ablockstatement
{
x=y+1;
y=x+1;
}
//anexampleofablockstatementnestedwithinanotherblockstatement
while(i a=a+i; if(a==max){ b=b+a;//nestedblockishere a=0; } } 1.4.空白 空白: 是空格、tabs和新行的统称。 在源代码元素之间允许插入任意数量的空白。 空白可以改善源代码的视觉效果,增强源代码的可读性。 例如: { intx; x=23*54; } intx x=23+54; } 2.标识符 标识符是语言元素的名称,是我们在程序中表示变量、类或方法等等的符号。 标识符可从一个字母、下划线(_)或美元符号($)开始;随后跟随字母、下划线(_)、美元符号($)或数字。 标识符是大小写区别对待的。 标识符未规定最大长度。 下列标识符是有效的: identifier userName User_name _sys_varl $change Java技术源程序采用双字节的“统一字符编码”(Unicode)标准,而不是单字节的ASCII文本。 因而,一个字母有着更广泛的定义,而不仅仅是a到z和A到Z。 标识符不能是关键字,但是它可包含一个关键字作为它的名字的一部分。 例如,thisone是一个有效标识符,但this却不是,因为this是一个Java关键字。 3.Java关键字 表2-1列出了使用在Java编程语言中的关键字。 abstractdoimplementsprivatethrow booleandoubleimportprotectedthrows breakelseinstanceofpublictransient byteextendsintreturntrue casefalseinterfaceshorttry catchfinallongstaticvoid charfinallynativesupervolatile classfloatnewswitchwhile continuefornullsynchronized defaultifpackagethis 关键字对Java技术编译器有特殊的含义,它们可标识数据类型名或程序构造(construct)名。 以下是有关关键字的重要注意事项: -true、false和null为小写,而不是象在C++语言中那样为大写。 -无sizeof运算符;所有类型的长度和表示是固定的,不依赖执行。 -goto和const不是Java编程语言中使用的关键字。 4.基本Java数据类型 Java编程语言定义了八种原始数据类型: 逻辑型boolean 文本型char 整数型byte,short,int,long 浮点型double,float 4.1.逻辑型──boolean 逻辑值有两种状态,即人们经常使用的“true”和“false”。 这样的值是用boolean类型来表示的。 boolean有两个文字值,即true和false。 以下是一个有关boolean类型变量的声明和初始化: booleantruth=true;//declaresthevariabletruth //asbooleantypeandassignsitthevaluetrue 注意: 在整数类型和boolean类型之间无转换计算。 有些语言(特别值得强调的是C和C++)允许将数字值转换成逻辑值,这在Java编程语言中是不允许的;boolean类型只允许使用boolean值。 4.2.字符型──char 使用char类型可表示单个字符。 一个char代表一个16-bit无符号的(不分正负的)Unicode字符。 一个char文字必须包含在单引号内(‘’)。 ‘a’ ‘\t’一个制表符 ‘\u? ? ? ? ’一个特殊的Unicode字符。 ? ? ? ? 应严格按照四个16进制数字进行替换。 例如: ’\u03A6’表示希腊字母“Φ” Char类型变量的声明和初始化如下所示: charch=`A';//declaresandinitializesacharvariable charch1,ch2;//declarestwocharvariables 4.3.文本类──String String不是原始类型,而是一个类(class),它被用来表示字符序列。 字符本身符合Unicode标准。 与C和C++不同,String不能用\0作为结束。 String的文字应用双引号封闭,如下所示: “The quickbrownfoxjumpedoverthelazydog.” String类型变量的声明和初始化如下所示: //declaretwoStringvariablesandinitializethem Stringgreeting="GoodMorning! ! \n"; Stringerr_msg="RecordNotFound! "; Stringstr1,str2;//declaretwoStringvariables 4.4.整数型──byte,short,int,long 在Java编程语言中有四种整数类型,它们分别使用关键字byte,short,int和long中的任意一个进行声明。 整数类型的文字可使用十进制、八进制和16进制表示,如下所示: 2十进制值是2 077首位的0表示这是一个八进制的数值 0xBAAC首位的0x表示这是一个16进制的数值 注意──所有Java编程语言中的整数类型都是带符号的数字。 整数类文字被默认为int类型。 整数类文字后面紧跟着一个字母“L”,可以强制它为long型。 例如: 2L十进制值是2,是一个long 077L首位的0表示这是一个八进制的数值 0xBAACL前缀0x表示这是一个16进制的数值 四种整数类型的长度和范围如表3-2所示。 这些长度和范围是按Java编程语言规范定义的,是不依赖于平台。 IntegerLength NameorType Range 8bits byte -27...27-1 16bits short -215...215-1 32bit int -231...231-1 64bits long -263...263-1 表3-2整数数据类型—范围 4.5.浮点数──float和double 如果一个数字文字包括小数点或指数部分,则该数字文字为double型浮点数。 例如: 3.14 3.02E23 如果一个数字文字后带有字母F或f,则该数字文字为float型浮点数。 例如: 2.718F 如果一个数字文字后带有字母D或d,则该数字文字为double型浮点数。 例如: 123.4E-306D 浮点变量可用关键字float或double来声明。 Java技术规范的浮点数的格式是由电力电子工程师学会(IEEE)754定义的,是独立于平台的。 浮点数据类型具有下列范围: 浮点长度 名称或类型 取值范围 32bits float 1.40239846e-45f至3.40282347e+38f 64bits double 4.94065645841246544e-324至1.79769313486231570e+308 5.变量、声明和赋值 变量用于存储信息。 一个变量代表一个特殊类型的存储位置,它指向内存的某个单元,而且指明这块内存有多大。 变量的值可以是基本类型,也可以是对象。 下列程序显示了如何声明及赋值整数、浮点、boolean、字符和String类型变量。 publicclassAssign{ publicstaticvoidmain(Stringargs[]){ intx,y;//declareintvariables floatz=3.414f;//declareandassignfloat doublew=3.1415;//declareandassigndouble booleantruth=true;//declareandassignboolean charc;//declarecharactervariable Stringstr;//declareString Stringstr1="bye";//declareandassignStringvariable c='A';//assignvaluetocharvariable str="Hioutthere! ";//assignvaluetoStringvariable x=6; y=1000;//assignvaluestointvariables } } 6.引用(Reference)类型 早些时候的编程语言和初级程序员将每个变量看作相互无关的实体。 例如,如果一个程序需处理某个日期,则要声明三个单独的整数: intday,month,year; 上述语句作了两件事,一是当程序需要日、月或年的有关信息时,它将操作一个整数;二是为那些整数分配存储器。 尽管这种作法很容易理解,但它存在两个重大缺陷。 首先,如果程序需同时记录几个日期,则需要三个不同的声明。 例如,要记录两个生日,你可能使用: intmyBirthDay,myBirthMonth,myBirthYear; intyourBirthDay,yourBirthMonth,yourBirthYear; 这种方法很快就会引起混乱,因为需要的名称很多。 第二个缺陷是这种方法忽视了日、月和年之间的联系并把每个变量都作为一个独立的值,每个变量都是一个独立单元(在本例中为日期)的一部分并被相应地处理。 6.1.创建一个新类型 为克服上述两种缺陷,Java编程语言使用类来创建新类型。 例如可以用下面的类表示日期: classMyDate privateintday=1; privateintmonth=1; privateintyear=2000; 关键字class是用来声明类的。 MyDate是我们给表示日期的类指定的名称。 一个变量可被声明为归属于类型MyDate,从而日、月和年部分将被隐含声明。 例如: MyDatemyBirth,yourBirth; myBirth=newMyDate(); yourBirth=newMyDate(); 6.2.创建并初始化一个对象 当任何原始类型(如boolean,byte,short,char,int,long,float或double类型)的变量被声明时,作为上述操作的一部分,存储器空间也同时被分配。 使用非原始类型(如String或class)的变量的声明不为对象分配存储器空间。 事实上,使用class类型声明的变量不是数据本身,而是数据的引用(reference)。 引用可以理解为C语言的指针(Pointer),但是不能象C语言那样计算指针。 在你使用引用变量之前,必须为它分配实际存储空间。 这个工作是通过使用关键字new来实现的。 如下所示: MyDatemyBirth; myBirth=newMyDate(); 第一个语句仅为引用分配了空间,而第二个语句则通过调用对象的构造函数MyDate()为对象生成了一个实例。 这两个操作被完成后,MyDate对象的内容则可通过myBirth进行访问。 还可以用一条语句创建并初始化一个对象: MyDatemyBirth=newMyDate(27,1,1964); 6.3.存储器分配和布局 在一个方法体中,做如下声明: MyDatetoday; today=newMyDate(); 语句MyDatetoday;仅为一个引用分配存储器 today 在语句today=newMyDate();中关键字new意味着为对象分配存储器,并初始化: 6.4.引用类型的赋值 在Java编程语言中,一个被类声明的变量,叫做引用类型变量,这是因为它正在引用一个非原始类型,这对赋值具有重要的意义。 请看下列代码片段: intx=7; inty=x; Strings=“Hello”; Stringt=s; 四个变量被创建: 两个原始类型int和两个引用类型String。 x的值是7,而这个值被复制到y。 x和y是两个独立的变量且其中任何一个的进一步的变化都不对另外一个构成影响。 至于变量s和t,只有一个String对象存在,它包含了文本”Hello”,s和t均引用这个单一的对象。 将变量t重新定义,t="world";则新的对象World被创建,而t引用这个对象。 上述过程被描述如下: 6.5.值传递 Java编程语言只由值传递参数,也就是说,参数不能由被调用的方法来改变。 当一个对象实例作为一个参数传递到方法中时,参数的值就是对象的引用。 对象的内容可以在被调用的方法中改变,但对象引用是永远不会改变的。 下面的代码例子可以阐明这一点: publicclassPassTest{ floatptValue; //Methodstochangethecurrentvalues publicvoidchangeInt(intvalue){ value=55; } publicvoidchangeStr(Stringvalue){ value=newString("different"); } publicvoidchangeObjValue(PassTestref){ ref.ptValue=99.0f; } publicstaticvoidmain(Stringargs[]){ Stringstr; intval; PassTestpt=newPassTest();//Createaninstanceoftheclass val=11;//Assigntheint pt.changeInt(val);//Trytochangeit System.out.println("Intvalueis: "+val);//Whatisthecurrentvalue? str=newString("hello");//Assignthestring pt.changeStr(str);//Trytochangeit System.out.println("Strvalueis: "+str);//Whatisthecurrentvalue? pt.ptValue=101.0f;//NowsettheptValue pt.changeObjValue(pt);//Nowchangethevalueofthefloatthroughtheobjectreference System.out.println("CurrentptValueis: "+pt.ptValue);//Whatisthecurrentvalue? } } 这个代码输出如下内容: c: \student\source\>javaPassTest Intvalueis: 11 Strvalueis: hello CurrentptValueis: 99.0 字符串对象是不会被changeStr()改变的,但是,PassTest对象的内容被改变了。 6.6.this引用 关键字this是用来指向当前对象(类实例)的。 这里,this.day指的是当前对象的day字段。 publicclassMyDate{ privateintday,month,year; publicvoidtomorrow(){ intday; day=this.day+1; //wraparoundcode... } } Java编程语言自动将所有实例变量和方法引用与this关键字联系在一起,因此,使用关键字在某些情况下是多余的。 下面的代码与前面的代码是等同的。 publicclassMyDate{ privateintday,month,year; publicvoidtomorrow(){ day=day+1;//no`this.'before`day' //wraparoundcode... } } 也有关键字this使用不多余的情况。 如,需要在某些完全分离的类中调用一个方法并将当前对象的一个引用作为参数传递时。 例如: BirthdaybDay=newBirthday(this); 7.Java编码约定 虽然任何一个合法的标识符都可以用来当作变量、类、方法等的名称,但是Java编程语言极力推荐它的编码约定: classes──类名应该是名词,大小写可混用,但首字母应大写。 例如: classAccountBook classComplexVariable interface──界面(接口)名大小写规则与类名相同。 interfaceAccount method──方法名应该是动词,大小写可混用,但首字母应小写。 在每个方法名内,大写字母将词分隔并限制使用下划线。 例如: balanceAccount() addComplex() Variables──所有变量都可大小写混用,但首字符应小写。 词由大写字母分隔,限制用下划线,限制使用美元符号($),因为这个字符对内部类有特殊的含义。 currentCustomer 变量应该代表一定的含义,通过它可传达给读者使用它的意图。 尽量避免使用单个字符,除非是临时“即用即扔”的变量(例如,用i,j,k作为循环控制变量) constant──原始常量应该全部大写并用下划线将词分隔;对象常量可大小写混用。 HEAD_COUNT MAXIMUM_SIZE controlstructures──当语句是控制结构的一部分时,即使是单个语句也应使用括号({})将语句封闭。 例如: if(condition){ dosomething }else{ dosomethingelse } spacing──每行只写一个语句并使用四个缩进的空格使你的代码更易读。 comments──用注释来说明那些不明显的代码段落;对一般注释使用//分隔符,而大段的代码可使用/*···*/分隔符。 使用/**···*/将注释形成文档,并输入给javadoc以生成HTML代码文档。 //Acommentthattakesuponlyoneline. /*Commentsthatcontinuepastonelineandtakeupspaceonmultiplelines..
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 03 变量 声明 关键字 类型