• 19.11 MB
  • 2022-04-29 14:33:16 发布

java教学全套课件PPT第2章 Java基本语法.ppt

  • 52页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'第二章JAVA基本语法 本章主要任务认识Java语言的基本元素1了解Java的标识符、关键字、分隔符2了解变量、成员变量与局部变量5如何声明与定义变量、数组6理解Java的基本数据类型3了解Java的运算符与表达式4 本章目录3需求分析这用于解释这个概念2.1标识符、关键字与分隔符2.2基本数据类型与变量2.3表达式与运算符2.4数组2.5知识拓展——foreach语法与枚举 2.1标识符、关键字与分隔符本节的内容主要介绍什么是Java的标识符、关键字与分隔符。 引例例2.1了解Java源程序的基本元素。//这是一个简单的Java源程序classexp2_1{publicstaticvoidmain(Stringargs[]){intv1=0,v2=10,v3=v1+v2;System.out.println("v1+v2="+v3);}//结束main方法}//结束类exp2_1其中有哪些基本元素呢? 说明:第1行为注释语句,使用注释符”//”,属于分隔符。第2行为声明类语句,使用类声明关键字class创建一个名为exp2_1的类;使用了标识符exp2_1。第3行为声明方法语句,使用方法关键字main声明了main()方法,并使用关键字publicstaticvoid指定main是公有的、静态的、无返回值的。在小括号中使用数据类型String与分隔符[]声明了一个字符串类型、长度未定、名称为args的一维数组“Stringargs[]”,args数组称为main方法的命令行参数。第4行为声明变量语句,其中使用了数据类型关键字int声明了3个名为v1,v2,v3的整型变量,用逗号”,”分隔以便一起声明;同时,使用赋值运算符=,将v1、v2赋值为0,使用算术运算符+,构成了一个算术表达式v1+v2。最后的分号”;”声明Java语句结束。通过本例可知,Java语句的基本元素为标识符、关键字、分隔符、运算符。基本元素是不能再分解的元素。引例//这是一个简单的Java源程序classexp2_1{publicstaticvoidmain(Stringargs[]){intv1=0,v2=10,v3=v1+v2;System.out.println("v1+v2="+v3);}//结束main方法}//结束类exp2_1 2.1.1标识符定义:在Java中变量、常量、类、方法与接口等都需要指定名称,这些名称就叫做标识符。命名标识符的基本规则①必须以一个字母、下划线或美元符号“$”开头,后面的字符可以包含字母、数字、下划线和美元符号。②对大小写敏感,但没有长度限制。③可按上面的规则随意选取。7表2.1标识符命名正误对照表合法标识符非法标识符非法原因MyClassclass特殊用途的关键字,不能作为标识符anIntint特殊用途的关键字,不能作为标识符group77group数字不能作为首字母i2数字“2”不能作为标识符$salary-salary不能使用连接线作为首字母ONE_HUNDREDONE-HUNDRED不能使用连接线 2.1.2关键字定义:关键字是Java语言自身使用的标识符,有其特定的语法含义,如public表示公有的,static为静态的。使用规则①Java关键字只能用于特定的位置,不能作为标识符使用。②用英文小写字母表示。8常用的Java关键字abstractdefaultifnullswichbooleandoimplementspackagesynchronizedbreakdoubleimportprivatethisbyteelseinstanceofprotectedthrow/throwscaseextendsintpbulictransientcatchfalseinterfacereturntruecharfinallongshorttryclassfinallynativestaticvoidcontinuefloatnewstrictfpvolatileformainsuperwhile 2.1.3分隔符分隔符是用来区分Java源程序中的基本成分,可使编译器确认代码在何处分隔。有注释符、空白符、普通分隔符三种。1.注释符含义:是为了提高程序的可读性和可理解性,在源程序的开始或中间对程序的功能、作者、使用方法等所写的注解。使用方法:①//注释一行,一般用作单行注释;②/*…*/一行或多行注释,中间可写多行。9 2.1.3分隔符2.空白符含义:空白符包括空格、回车、换行和制表符(Tab键)等符号,用来分隔程序中各种基本成份,帮助Java编译器理解源程序。使用规则:①任意两个相邻的标识符之间至少有一个分隔符,变量名方法名等标识符不能包含空白分隔符。②各基本成份之间可以有一个或多个空白符。③空白分隔符不能用非普通分隔符替换。10 2.1.3分隔符3.普通分隔符与空白符的作用相同,用来区分程序中的各种基本成分,在程序中有确定的含义,不能忽略。Java中的普通分隔符:.用于分隔包、类或分隔引用变量中的变量和方法;;是Java语句结束的标志;,用于分隔方法的参数和变量参数等;:是说明语句标号;{}用来定义复合语句、方法体、类体及数组的初始化;[]用来定义数组类型;()用于在方法定义和变量访问中将参数表括起来,或在表达式中定义运算的先后次序。11 2.1.3分隔符12例2.2分隔符的使用。说明:第1行末尾与最后一行是一对分隔符大括号,表明大括号中的内容为类体。其中的小括号(),用于定义main方法,方括号[]用来定义数组args。第3行的末尾与倒数第2行又是一对分隔符大括号,表明大括号中的内容为方法体。publicclassexp2_2{inti,c;publicstaticvoidmain(Stringargs[]){charb="a";//...}} 2.2基本数据类型与变量Java是严格区分数据类型的语言,代码中使用的任一变量都必须声明数据类型。Java的数据类型可分为基本数据类型和引用数据类型两类。本节的内容主要介绍Java的8种基本数据类型,Java常量与变量声明与初始化的方式,数据类型的转换方式等。 2.2.1基本数据类型基本数据类型可以构造出复杂的数据结构以满足Java程序的各种需要。Java基本数据类型数据类型名称位长默认值取值范围布尔型boolean1falsetrue,false字节型byte80–128~127字符型char16‘u0000’‘u0000’~’uffff’短整型short160–32768~32767整型int320–2,147,483,648~2,147,483,647长整型long640–9,223,372,036,854,775,808~9,223,372,036,854,775,807浮点型float320.0+1.4E–45~+3.4028235E+38双精度型double640.0+4.9E–324~+1.7976931348623157E+308 2.2.2常量常量在程序中是一个标识符,用来记忆一个固定的数值,在程序执行过程中常量是不可更改的数据。1.常量的声明常量用final声明,常量与变量的区别是前者不占用内存。声明一个常量:final类型常量名[,常量名]=值;同时声明多个常量:final常量类型常量标识符1,常量标识符2,常量标识符3;同时声明多个常量并赋值:final常量类型常量标识符1=常量值1,常量标识符2=常量值2,常量标识符3=常量值3; 2.2.2常量2.常量的种类布尔常量只有true(真)和false(假)两个值,直接使用英文单词,不加引号。例:finalbooleanA=true,B=false;整形常量不含小数的整数值,书写时可采用十进制、十六进制和八进制形式。例:finalintI=15;finalintJ=017;finalintK=0xF;浮点型常量浮点型常量主要有十进制数形式和科学计数法形式两种形式 2.2.2常量2.常量的种类字符常量字符常量为一对单引号括起来的单个字符。如“charCH1=‘a’;”。它可以是Unicode字符集中的任意一个字符,如‘Z’。对无法通过键盘输入的字符,可用转义符表示,如“charCH2=‘\’;”,转义符号表见教材。字符常量的另外一种表示就是直接写出字符编码,如字母A的八进制表示为"101",十六进制表示为"u0041",空格为‘u0000’。 2.2.3变量在Java语言中存储一个数据信息,必须将它保存到一个变量中。变量在使用前必须有定义,即有确定的类型和名称。1.变量的声明与初始化声明变量时直接赋初值给变量,变量即被初始化:类型变量名[,变量名][=初值];声明同一类型的多个常量:变量类型变量标识符1,变量标识符2,变量标识符3;变量类型变量标识符4=变量值4,变量标识符5=变量值5,变量标识符6=变量值6; 2.2.3变量例2.3变量的声明与初始化示例。publicclassexp2_3{publicstaticvoidmain(Stringargs[]){byteb=0x55;shorts=0x55ff;inti=1000000;longl=0xffffL;charc="c";floatf=0.23F;doubled=0.7E-3;booleanB=true;Stringstr="Hellonworld!";System.out.println("字节型变量b="+b);System.out.println("短整型变量s="+s);System.out.println("整型变量i="+i);System.out.println("长整型变量l="+l);System.out.println("字符型变量c="+c);System.out.println("浮点型变量f="+f);System.out.println("双精度变量d="+d);System.out.println("布尔型变量B="+B);System.out.println("字符串变量str="+str);}} 2.2.3变量说明:字符串变量。本例中声明了一个String类型的字符串变量str,但String是个类,属于引用数据类型。因为String属于系统类,所以其可以如同基本数据类型一样直接声明类型与赋值。与字符常量的区别:字符串常量是用一对双引号括起来的字符序列。字符常量是单引号,如"A"是字符常量,而"A"是字符串常量。运行结果如下: 2.2.3变量2.变量的使用范围声明一个变量后,该变量只能在程序的特定范围内使用,出了范围,变量就不存在了。成员变量是在类中声明的变量,通常在类开始处声明,使用范围为整个类。局部变量是在方法或块中声明的变量,使用范围从声明处开始到它所在方法或块的结束处。 2.2.3变量例2.4变量的使用范围。说明:编译exp2_4.java时出现错误,如上图。因为变量k是在方法块中声明的,其为成员变量,使用范围为方法块内,在方法块之外它是不存在的,所以编译时会出错。publicclassexp2_4{staticinti=10;//成员变量publicstaticvoidmain(Stringargs[]){intk=10;//局部变量System.out.println("i="+i);System.out.println("k="+k);}System.out.println("k="+k);//编译时将出错,已出k的使用范围} 2.2.3变量3.变量的初值局部变量在声明时一定要初始化,即赋初值。否则,程序运行时将出错。成员变量在声明时可以不初始化,程序运行时,系统会自动进行初始化工作,即给成员变量赋初值。成员变量对应的自动初始化值变量类型初始值变量类型初始值booleanfalselong0.0Lbyte0float0.0fchar‘u0000’double0.0dint0stringnull 2.2.4数据类型的转换1.自动类型转换也称隐式类型转换,是指不需要书写代码,由JVM自动完成的类型转换。自动转换的规则:①转换前的数据类型与转换后数据类型兼容②从存储范围小的类型到存储范围大的类型:byte→short(char)→int→long→float→double例:byteb=10;shortsh=b;byte、short皆为整数类型且short存储范围比byte,可以自动转换。在赋值时,JVM先将b的值转换为short类型,然后再赋值给sh。注意:任何数据类型碰到String类型的变量或常量之后都会转换为String类型。字符串变量使用的连接符”+”进行的是连接运算,不是加法运算,是将两个字符串连接起来。 2.2.4数据类型的转换2.强制类型转换两个整数相除,结果如果为整型会与实际运算不同,例如8/3为2,而不是2.3333…,因此,如果要得到浮点类型数据,需要进行强制类型转换,必须在代码中声明,而且转换顺序不受限制。语法格式为:(数据类型)数据表达式例:将字符型数据强制转换为整型数据:inta;charb;b=’15’;a=(int)b;注意:对于数值型数据,可以将低精度的数字赋值给高精度的数字型变量,反之则需要进行强制类型转换。在执行强制类型转换时,可能会导致数据精度降低,因此对导致精度降低的强制类型转换时建议谨慎使用。 2.3表达式与运算符表达式是操作数(变量、常量和表达式等)和运算符的任意组合。表达式代表着一个确定的数值。Java的运算符代表着特定的运算指令,在程序运行时对运算符连接的操作数进行相应的运算。本节的内容主要介绍Java按照功能划分的7种运算符的使用方式。 2.3.1赋值运算符赋值运算符的作用是将是将数据、变量、对象赋值给相应类型的变量。赋值运算符运算符功能举例等价于=赋值,右边数赋给左边变量x=6,6赋给x+=加和,左右两边数相加,结果赋给左变量x=6,x+=10将16赋给xx=x+16-=减和,左右两边数相减,结果赋给左变量x=20,x-=10将10赋给xx=x-10*=乘和,左右两边数相乘,结果赋给左变量x=2,x*=10将20赋给xx=x*10/=除和,右边数除左边数,结果赋给左变量x=10,x/=5将2赋给xx=x/5%=取模和,左边数除右边数,余数赋给左变量x=20,x%=7将6赋给xx=x%7 2.3.2算数运算符算术运算符会对整数型数据和浮点数型数据进行数学运算,当整数型数据与浮点数型数据之间进行算术运算时,Java会自动转换数据类型为浮点数型。由算术运算符构成的表达式称为算术表达式。算数运算符运算符功能举例说明-取负-x=-10一元运算,将x取负值++自增-操作数的值增加1x++=11一元运算,等价于x=x+1--自减-操作数值减少1x--=9一元运算,等价于x=x-1*乘5*4→20/除8/3→2整数相除取商的整数部分%求余20%3→2两数相除取余数+加2+5→7-减7-5→2 2.3.2算数运算符在使用算数运算符时需要注意以下问题:1.除法运算整数类型的数据和变量之间进行除法运算时,无论能否整除,运算结果都将是一个简单去掉小数部分之后的整数。2.“0”的使用进行整数间除法和求余计算时,0不可以做除数。进行浮点型数据之间的计算时,0可以做除数。3.有小数参与的运算如算术表达式含有double类型的数据或变量,运算结果为double型,否则运算结果为float型。计算机的计算结果可能会在小数点后包含n位小数,计算机的计算结果会与数学运算的结果存在一定的误差。 2.3.2算数运算符例2.5本例用来说明算数运算符的一些注意事项。程序代码及运行结果如下。publicclassexp2_5{publicstaticvoidmain(Stringargs[]){System.out.println(10/4);System.out.println(0/6);System.out.println(8.2/0);System.out.println(-8.2/0);System.out.println(8.2%0);System.out.println(-8.2%0);System.out.println(6/0);}}说明:注意本例在除法运算中0的使用,尤其要区分整数间除法与浮点数类型的数据与0进行运算时的不同。 2.3.3关系运算符关系运算符用于两个操作数之间比较大小,产生布尔类型结果。由关系运算符构成的表达式称为关系表达式。关系表达式成立时,返回的布尔值为true,否则运算结果为false。操作数可以是常量、变量和表达式。关系表达式常作为分支结构或循环结构语句中的控制条件。下表列出了关系运算符和功能说明,变量X的值为10,变量x的值为20。关系运算符含义举例说明>大于X>x→falsex的编码值大于X的编码值<小于X=大于等于X>=x→false<=大于等于X<=x→true==等于X==x→false!=不等于(X+x)!=4→true先计算X+x的值再比较 2.3.4逻辑运算符对较为复杂的条件可用逻辑运算来判定,返回值仍为boolean型。逻辑表达式通常由多个关系表达式构成,最终运算结果为布尔值true或false。下表列出了逻辑运算符和功能说明,其中布尔变量A为true,变量B为false。逻辑运算符含义举例说明&&逻辑与(A&&B)→false仅当两个操作数都为true时值为true!逻辑非!(A&&B)→true与操作数值相反,false值为true(true值为false)||逻辑或(A||B)→true仅当两个操作数都为false时值为false^逻辑异或(A^B)→true仅当两个操作数相异时结果为true&布尔逻辑与同&&在表达式计算上与&&不同|布尔逻辑或同||在表达式计算上与||不同 2.3.4逻辑运算符例2.6本例用来说明逻辑运算符的使用方式。程序代码及输出结果如下图所示。说明:通过本例给出了两个关系表达式组成的逻辑运算表达式,理解多个关系表达式的运算顺序与逻辑顺序,必要时通过使用括号来改变运算顺序。publicclassexp2_6{publicstaticvoidmain(Stringargs[]){booleana=true;booleanb=false;System.out.println("a&&b="+(a&&b));System.out.println("a||b="+(a||b));System.out.println("!(a&&b)="+!(a&&b));System.out.println("a^b="+(a^b));}} 2.3.5条件运算符含义:也被称为三元运算符。有3个操作数,需要判断布尔表达式的值。条件运算符决定哪个值应该赋值给变量。由条件运算符构成的表达式称为条件表达式。格式:条件(逻辑表达式或关系表达式)?结果1:结果2;计算过程:计算作为条件的“逻辑表达式或关系表达式”(操作数1),条件返回值为true时表达式值取“结果1”(操作数2);条件返回值为false时表达式值取“结果2”(操作数3)。例如:a>b?1:0;该语句表明a>b为真时取值为1;a>b为假时取值为0。 2.3.6位运算符含义:位运算表示按每个二进制位(bit)进行计算,以二进制形式进行,运算结果为一个整数。下表列出了几种位运算符和功能说明。假设a=60(A=00111100),b=13(B=00001101)位运算符含义举例说明~取反~a→11000011(-61)按位翻转操作数的每一位&位与a&b→00001100(12)当且仅当两个操作数的某一位都非0时候结果的该位才为1|位或a|b→00111101(61)只要两个操作数的某一位有一个非0时候结果的该位就为1^位异或a^b→00110001(49)两个操作数的某一位不相同时候结果的该位就为1<<位左移a<<2→11110000(240)左操作数按位左移右操作数指定的位数 2.3.7其它运算符下表中是一些Java中的特殊运算符符号功能()表达式加括号则优先运算(参数表)方法的参数传递,多个参数时用逗号分隔(类型)强制类型转换.分量运算符,用于对象属性或方法的引用[]下标运算符,引用数组元素instanceof对象运算符,用于测试一个对象是否是一个指定类的实例new对象实例化运算符,实例化一个对象,即为对象分配内存+字符串合并运算符,如"Hello"+"World!"等于"HelloWorld!"::方法引用运算符,执行一个方法调用 2.3.8运算符的优先级1.运算符的优先级含义:优先级是指同一表达式中多个运算符被执行的先后次序。运算时先执行高优先级的运算。例如,对于表达式a=b+c*d/(e<