Lecture2-Fundamental Programming Structures in Java(1)_第1页
Lecture2-Fundamental Programming Structures in Java(1)_第2页
Lecture2-Fundamental Programming Structures in Java(1)_第3页
Lecture2-Fundamental Programming Structures in Java(1)_第4页
Lecture2-Fundamental Programming Structures in Java(1)_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Fundamental Programming Structures in Java (Chapter 3)Hy Mao2021年年11月月16日日华东师范大学软件学院华东师范大学软件学院2021-11-162OutlinepIdentifier(标志符标志符) & Keywords(关键字)(关键字)pData TypepVariables pconstantspOperatorspType Casting2021-11-163Java 的标识符的标识符(1 of 2)p标识符的作用标识符的作用: 表示程序中的类名、域名、方法名、符号常量、局部变量,表示程序中的类名、域名、方法名、符

2、号常量、局部变量,标号标号.pJava标识符标识符(identifiers)规定规定n以字母、下划线、美圆符开始的一个字符序列以字母、下划线、美圆符开始的一个字符序列n除开始的第一个字符外,后面可跟字母、下划线、美圆符和数字除开始的第一个字符外,后面可跟字母、下划线、美圆符和数字n标识符区分大小写标识符区分大小写n没有长度限制没有长度限制n不能与保留字不能与保留字(reserved word)或关键字或关键字(keyword)相同相同p例如例如: n$students, _start, _name, app_numbern1name,2_start, import, main, thenn_,

3、 _, _1 等是正确的吗?上机验证你的答案。等是正确的吗?上机验证你的答案。p 参考参考n 1. 关于每一个关于每一个key words详细用法的说明详细用法的说明 Java Keyword Reference.pdf n 2. Textbook appendix A Java Keywords2021-11-164Java 的标识符的标识符(2 of 2)pJava 编程标识符的命名习惯编程标识符的命名习惯n程序可读性程序可读性p类、接口:类、接口:通常使用名词,且每个单词首字母要大写通常使用名词,且每个单词首字母要大写 Eg HelloWorldApp, PersonApp, etcp方

4、法:方法:可以是动词,首字母小写,其后用大字母分隔可以是动词,首字母小写,其后用大字母分隔每个单每个单 词词 Eg: getValue(); setPersonName(),getRequestId() etcp常量:常量:全部大写,单词之间用下划线分隔全部大写,单词之间用下划线分隔 Eg: TOTAL_STUDENT, FILE_NAME, etcp变量:变量:同方法,应该避免使用同方法,应该避免使用$符号符号 Eg: userId, userName, etc2021-11-165Data TypespJava 中的数据类型分为两大类:中的数据类型分为两大类:n第一类是简单数据类型第一类是

5、简单数据类型p整数类型:整数类型:byte(1), short(2), int(4), long(8)p实数类型:实数类型:float(4), double(8)p字符类型:字符类型:char(2)p布尔类型:布尔类型:boolean(true,false)n第二类是复杂数据类型第二类是复杂数据类型pJava类库中的类类库中的类p用户自定义的类用户自定义的类p接口接口p数组数组2021-11-166Data TypesTypesPrimitivetypesreferencesintegerfloating-pointcharacterbyteshortintegerlongfloatdoubl

6、ebooleanPredefinedclassUser definedclassArrayInterface2021-11-167Java 基本的数据类型基本的数据类型类型类型存储空间大小存储空间大小存储方式存储方式初始值初始值Java整数整数类型类型byte8 位位(bit)2 的补码的补码(byte) 0short16位位2 的补码的补码(short) 0int32 位位2 的补码的补码0long64位位2 的补码的补码0LJava浮点浮点类型类型float32位位IEEE 754浮点数标准浮点数标准 0.0fdouble 64位位IEEE 754浮点数标准浮点数标准 0.0dNote:J

7、ava具有平台无关性具有平台无关性,所以各种数据类型在不同的平台上都具有所以各种数据类型在不同的平台上都具有固定的取值范围固定的取值范围.2021-11-168Java 基本的数据类型基本的数据类型-整型整型p关键字关键字byte, short, int和和long表示整数类型,四种表示整数类型,四种整数类型的区别在于存储空间长度、能表示的范整数类型的区别在于存储空间长度、能表示的范围是不一样的,如下表所示。围是不一样的,如下表所示。2021-11-169Java 基本的数据类型基本的数据类型-整型整型p整数类型的变量可以表示十进制、八进制和十六进制的数整数类型的变量可以表示十进制、八进制和十

8、六进制的数字。字。n首位为首位为“0”表示八进制的数值;表示八进制的数值;n首位为首位为“0 x”表示表示16进制的数值。进制的数值。n例如:例如: 5 表示十进制值表示十进制值5 075 表示八进制数值表示八进制数值75(十进制数(十进制数61) 0 x9ABC 表示十六进制的数值表示十六进制的数值9ABC(十进制数(十进制数39612)p整数缺省为整数缺省为int类型。类型。如在其后有一个字母如在其后有一个字母“L”/”l”表示一表示一个个long类型。(由于小写类型。(由于小写“l”与数字与数字“1”容易混淆,因而,容易混淆,因而,建议大家采用大写)建议大家采用大写)n例如:例如: 5L

9、 表示十进制值表示十进制值5,是一个,是一个long类型的值类型的值 5 表示十进制值表示十进制值5,是一个,是一个int类型的值类型的值2021-11-1610Java 基本的数据类型基本的数据类型-浮点型浮点型p在在Java编程语言中有两种浮点类型:编程语言中有两种浮点类型:float和和double 。nfloat为为32位位(单精度),(单精度),double为为64位位(双精度)。(双精度)。double类型的浮点数具有更高的精度。类型的浮点数具有更高的精度。n类型说明类型说明:p在数字后带有字母在数字后带有字母F或或f(float)表示该数字为)表示该数字为float类型。类型。p

10、在数字后带有字母在数字后带有字母D或或d(double)表示该数字为)表示该数字为double类型。类型。p如果不明确指明浮点数的类型,浮点数缺省为如果不明确指明浮点数的类型,浮点数缺省为double。 3.14159 (double型浮点数)型浮点数) 2.08E25 (double型浮点数)型浮点数) 6.56f (float型浮点数)型浮点数) -6.5F (float型浮点数)型浮点数)2021-11-1611Java 基本的数据类型基本的数据类型-字符型字符型p字符类型字符类型(char)nJava中中char用用Unicode字符集字符集 16bits表示不是表示不是ASCII码码

11、()n不能直接作为整数进行运算,需类型转换不能直接作为整数进行运算,需类型转换n字符常量,用单引号对括住的字符,如字符常量,用单引号对括住的字符,如an定义格式为定义格式为: char charName =b; p特殊字符列表:特殊字符列表:换码序列换码序列名称名称Unicode值值ttabu0009nNewline characteru000a单引号单引号u0027”双引号双引号u0022反斜杠反斜杠u005c2021-11-1612Java 基本的数据类型基本的数据类型-布尔型布尔型p布尔类型布尔类型(boolean)n取值范围:取值范围:true

12、, falsen布尔变量的默认值为布尔变量的默认值为falsen布尔值与数值之间不能进行运算布尔值与数值之间不能进行运算ntrue 和和 false均是布尔类型的均是布尔类型的常量常量,注意大小写,注意大小写n定义格式的示范:定义格式的示范:boolean isChanged = true; boolean isBlack = true;Note:在:在java中基本数据类型的定义和使用与中基本数据类型的定义和使用与C+中是类似的。中是类似的。2021-11-1613Variables( 变量变量)pJava中变量和常量的含义与中变量和常量的含义与C+是一样的。是一样的。p定义一个变量语法为:

13、定义一个变量语法为:nSyntax: 类型类型 变量名;变量名;pE.g. double salary;pint vacationDays;plong earthPopulation;pboolean done;p变量需要重点关注:变量需要重点关注:n变量类型变量类型n变量值变量值n变量作用范围变量作用范围2021-11-1614Variables-Examplebyte b = 12;short s = 31000;long l=53000000L;double d = 2.51d;float f=-2.5f;Byte variableShort variableLong variableD

14、ouble variableFloat variableboolean result=true;Boolean variablechar ch =a;Char variable2021-11-1615Variables-ExamplepYou can assign a variable a value by referring another variable.pjava可以和可以和C+一样同时定义多个变量。一样同时定义多个变量。nE.g. nfloat f=2.5f, g=5.8f; /定义定义f,g为为float型变量,并赋初值型变量,并赋初值int num = 15;int n =num

15、;int n =15;equivalents2021-11-1616VariablespJava中的局部变量中的局部变量n在方法内部或者程序块内部定义的变量为局部变量在方法内部或者程序块内部定义的变量为局部变量nJava中局部变量的作用范围与中局部变量的作用范围与C+中相同,即为变量中相同,即为变量所所在的代码块。在的代码块。p局部变量在定义之后是没有初始值的,必须要在程序中给该变局部变量在定义之后是没有初始值的,必须要在程序中给该变量赋值,然后才能使用,否则编译时会报错。量赋值,然后才能使用,否则编译时会报错。pJava与与C+的不同点在于:的不同点在于:在程序块中定义的变量,不能够与在程序

16、块中定义的变量,不能够与已有的已有的局部变量重名局部变量重名。2021-11-1617Variables-Examplep判断以下代码是否正确:判断以下代码是否正确:public static void main(String args) int i; i=i+1; 原因原因:变量变量i在使用时没有初始化,可以改为:在使用时没有初始化,可以改为:public static void main(String args) int i=0; i=i+1; 2021-11-1618Variables-Examplepublic static void main(String args) int a,b

17、,c; a=b=c=2; if(a=2) int c =5;错误,原因在于:错误,原因在于:if语句中定义的变量语句中定义的变量c,在,在main方法中已方法中已经定义,改正方法,更改经定义,改正方法,更改if语句或者语句或者main方法中的变量名方法中的变量名c,使他们不重复。使他们不重复。2021-11-1619Variables-Examplepublic static void main(String args) char ch1 = 300; /1 char ch2 = 410000;/2 boolean result = 32;/3 float fnum =2.5;/4 2021-

18、11-1620VariablespJava中的类变量中的类变量n在类中直接定义的变量称为类变量或者属性。在类中直接定义的变量称为类变量或者属性。n类变量在定义之后,会有默认值。如果没有初始化也类变量在定义之后,会有默认值。如果没有初始化也可以使用。但是从程序设计的角度来说,还是需要初可以使用。但是从程序设计的角度来说,还是需要初始化之后使用。始化之后使用。n关于类变量我们现在只需要了解,在后续的章节中会关于类变量我们现在只需要了解,在后续的章节中会详细讨论详细讨论2021-11-1621Constants(常量常量)pIn java,you use the keyword final to d

19、enote a constant. e.g.nfinal double CM_PER_INCH=2.54;nfinal int TOTAL_NUM=100;p和和C+一样常量必须在定义的时候赋值;一样常量必须在定义的时候赋值;p在在java中常量一般用大写字母和下划线来表示。中常量一般用大写字母和下划线来表示。p在实际的编程中我们常用类常量,在后面的章节在实际的编程中我们常用类常量,在后面的章节中将说明该问题。中将说明该问题。2021-11-1622Operators (运算符运算符) 见表见表3-4OperatorsAssociativity . () . () (method call)

20、Left to right! + - +! + - + (unary) (unary) () () (cast) newnewRight to left* * / %/ %Left to right+ -+ -Left to right Left to right = instanceof = instanceofLeft to right= != !=Left to right& &Left to right Left to right| |Left to right&Left to right| |Left to right?:?:Right to left= +=

21、 -= = += -= * *= /= %= &= |= = = = /= %= &= |= = = =Right to left优先级高优先级高优先级低优先级低2021-11-1623Operators-examplep(1) Assignment OperatornI=K=10 -I=(K=10)n也等价于也等价于k=10; I=K;p(2) 单目运算符单目运算符: +(正)(正), -(负)(负)nint value = - - 10;n等价于等价于 int value = -(-10);n等价于等价于 int value = 10;nBe aware of the di

22、fference between “- -” and “-”.p-10(为负号);(为负号);-i(i为变量表示为变量表示i=i-1)p(3) + - * / %(取余取余)n10%9=1;n9%9=0;2021-11-1624Operators-Exercise 写出以下表达式的运行结果:写出以下表达式的运行结果: int num = 10; double d = 9.5; System.out.println(10/9 is + num/9); System.out.println(9.5/9 is + d/9); System.out.println(10%9 is + num%9);

23、System.out.println(9.5%9 is + d%9);2021-11-1625Operators-examplep(4) +和和-nint i=10;nint j=i+; / j is 10; i is 11nint k=j+ i-; /k is 21, i is 10ni-; / i is 9p(5)Relational Operator and logic operatorn注意和注意和c+一样,一样,boolean类型的变量在类型的变量在Java中不能够参中不能够参加关系运算(加关系运算(,=,!=,=)p(A=B)=B&BC;rightp(a=b)!=c;err

24、orpa=b&b!=c;right2021-11-1626Operators-examplep(5)Relational Operator and logic operatorn和和C+一样在关系运算时有一样在关系运算时有short-cut evaluationpboolean b1=(4=2)&(18)p/after !false is true, the evaluation is completed For &If the first operand is false, the evaluation is completed,the evaluation resu

25、lts in false.For |If the first operand is true, the evaluation is completed, the evaluation results in true.2021-11-1627Operators-examplep(6) Bit Operators(位运算符位运算符)n按位与运算(按位与运算(&) 0&0=0,0&1=0,1&0=0,1&1=1n按位或运算(按位或运算(|) 0|0=0,0|1=1,1|0=1,1|1=1n按位异或运算(按位异或运算() 00=0,01=1,10=1,11=0n

26、按位取反运算(按位取反运算()0=1,1=0n左移位运算符(左移位运算符()p运算符运算符执行一个左移位。作左移位运算时,右边的空位补执行一个左移位。作左移位运算时,右边的空位补0。在不。在不产生溢出的情况下,数据左移产生溢出的情况下,数据左移1位相当于乘以位相当于乘以2。 int a=64,b; b=a与与) p运算符运算符执行一个右移位(带符号),左边按符号位补执行一个右移位(带符号),左边按符号位补0或或1。 int a=16,b; b=a2; /b=4p运算符运算符执行一个右移位,左边统一补执行一个右移位,左边统一补0。2021-11-1628Operators-example int

27、 i,j;i=2;j=-2; System.out.println(i2 is + (i2); System.out.println(i2 is + (i2); System.out.println(j2 is + (j2); System.out.println(j2 is +(j2);0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 1 1 1 1 1 1 1 1 1 1 1 1 1

28、 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 01 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1i2i2j2j2i=2j=-22021-11-1629Type Casting p实线箭头代表转换过程中不存在精度丢失,而虚线箭头代实线箭头代表转换过程中

29、不存在精度丢失,而虚线箭头代表转换过程中存在精度丢失。表转换过程中存在精度丢失。nint n=123456789; float f =n; /f is 1.23456792E8byteshortcharintfloatlongdouble2021-11-1630Type CastingpJava中的类型转换与中的类型转换与C+中相同。中相同。n低精度的数据类型在运算过程中可以自动转换为高精低精度的数据类型在运算过程中可以自动转换为高精度的问数据,而高精度的数据需要经过强制转换才能度的问数据,而高精度的数据需要经过强制转换才能够变成低精度的数据。够变成低精度的数据。n规则:规则:p(1)整型)整

30、型,实型实型,字符型数据可以混合运算。运算结果的精度由字符型数据可以混合运算。运算结果的精度由表达式中精度最高的变量决定。表达式中精度最高的变量决定。 E.g. double d=15.3; int i=30; d=d+i /结果是一个结果是一个double型的变量型的变量 i=d+i/ error,结果是,结果是double型的不能够赋值给型的不能够赋值给int型的变量。型的变量。2021-11-1631Type Castingp规则规则p(2)byte和和short型的数据参加运算时会自动变为型的数据参加运算时会自动变为int类型。类型。p(3)整数整数(e.g. 10,20) 在在byt

31、e或者或者short的取值范围内时可以直的取值范围内时可以直接赋值给一个接赋值给一个byte或者或者short类型的变量。反之,必须要通过强类型的变量。反之,必须要通过强制类型转换来赋值。制类型转换来赋值。short s = 10; /int vlaue in range. no cast requiredbyte tiny =(byte) 128; / int value not in range, cast requiredchar symbol = 32; / int value in range, no cast required int i=10;byte b=(byte)i; /用

32、变量用变量i来给变量来给变量b赋值时,需要强制转换。赋值时,需要强制转换。 long d=10; int j = d;/error int j = (int)d;2021-11-1632Type Casting-Exercisep请问以下程序能够通过编译?请问以下程序能够通过编译?short a,b,c;a=2;b=3;c=a+b; short a,b,c;a=2;b=3;c=(short)(a+b); 2021-11-1633Type Casting-notep在运用在运用Java解决实际问题时,如果运用类型转换解决实际问题时,如果运用类型转换不慎,可能会导致程序的逻辑错误,因此作为编不慎,

33、可能会导致程序的逻辑错误,因此作为编程人员在类型转换之前一定要小心。程人员在类型转换之前一定要小心。n默认情况下,浮点型数据转换为整型数据时,小数位默认情况下,浮点型数据转换为整型数据时,小数位会自动舍弃。会自动舍弃。pE.g. double x = 9.997; int nx = (int) x; /nx的值为的值为9p如果需要四舍五入,则需要借助于其他的办法。如果需要四舍五入,则需要借助于其他的办法。 E.g. double x = 9.997; int nx = (int) Math.round(x); /Math类在后面介绍,在此仅需了类在后面介绍,在此仅需了解即可解即可n当数据值大于

34、目标类型的取值范围时,高位部分的数当数据值大于目标类型的取值范围时,高位部分的数据会被强制去掉,这样导致数据值发生变化。据会被强制去掉,这样导致数据值发生变化。pE.g. Byte b=(byte)300; /b的值为的值为44,而不是,而不是3002021-11-1634讨论:关于讨论:关于Java中浮点数的运算中浮点数的运算p从以上的测试代码可知,从以上的测试代码可知,Java中的浮点数在参加算术运算时存在一定中的浮点数在参加算术运算时存在一定的精度偏差。的精度偏差。p当遇到上述问题时我们需要借助当遇到上述问题时我们需要借助Java类库中类库中BigDecimal类来解决,在类来解决,在后续的章节我们会讨论。后续的章节我们会讨论。public static void main(String args) double d1,d2,d3; d1=0.02; d2=89.234; d3 = d1+d2; System.out.println(d3 is:+d3); Syste

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论