Java2程序设计基础第2章Java基本语法.ppt
第第2章章 Java基本语法基本语法 主要任务主要任务l 判别判别Java标识符、基本数据类型标识符、基本数据类型l 判别判别Java常用关键字常用关键字l 使用使用Java运算符与表达式运算符与表达式l 使用使用Java变量与数组变量与数组l 声明声明Java成员变量与局部变量成员变量与局部变量本章主要内容l1.标识符、关键字与分隔符标识符、关键字与分隔符 l2.不同不同数据类型数据类型的的Java常量与变量常量与变量l3.Java的运算符与表达式的运算符与表达式l4.总结提高总结提高l5.知识扩展知识扩展 2.1 Java的标识符、关键字与分隔符的标识符、关键字与分隔符2.1.1 Java的基本元素组成的基本元素组成l任何语言的语句都是由一些基本元素组成的,任何语言的语句都是由一些基本元素组成的,l“Welcome2.java”源程序代码如下:源程序代码如下:/这是一个简单的这是一个简单的Java Application源程序源程序 class Welcome2 public static void main(String args)int v1=0,v2=10,v3=v1+v2;System.out.println(欢迎使用欢迎使用Java 2);/结束结束main方法方法 /结束类结束类Welcome2 归纳分析l从这个例子中可以了解以下内容:从这个例子中可以了解以下内容:(1)源程序第)源程序第1行为行为Java的注释语句,因为使用了的注释语句,因为使用了注释符注释符“/”元素。元素。(2)源程序第)源程序第2行为行为Java的声明类语句,因为使用的声明类语句,因为使用了类声明关键字元素了类声明关键字元素class创建了一个自定义类。创建了一个自定义类。(3)源程序第)源程序第3行为行为Java的声明方法语句,因为使的声明方法语句,因为使用了方法关键字用了方法关键字main声明了声明了main()方法。()方法。(4)源程序第源程序第4行为行为Java的声明变量语句。的声明变量语句。l可见可见Java语句的基本元素为标识符、关键字、分隔语句的基本元素为标识符、关键字、分隔符与运算符。符与运算符。2.1.2 Java标识符的使用规则标识符的使用规则l在在Java程程序序中中需需要要使使用用大大量量的的标标识识符符,标标识识符符就就是是变量、常量、类、方法与接口等使用的名称。变量、常量、类、方法与接口等使用的名称。l标识符的使用标识符的使用:l在在EditPlus主主窗窗口口菜菜单单栏栏单单击击“文文件件”“新新建建”“java”菜菜单单命命令令,在在出出现现的的文文件件编编辑辑区区输输入入如下代码:如下代码:public class Example public static void main(String args)int i=2;int _c=5;String$_表达式表达式=i+c=;System.out.println($_表达式表达式+(i+_c);2.1.3 Java的主要关键字的主要关键字l什么是关键字?什么是关键字?关关键键字字是是Java语语言言自自身身使使用用的的标标识识符符,它它有有其其特特定定的的语语法法含含义义,主主要要用用于于修修饰饰类类、方方法法、变变量量,如如通通过过关关键键字字public定定义义公公有有类类,使使用用关关键键字字static定定义义一一个方法为静态的。个方法为静态的。Java关键字关键字l关键字是关键字是Java语言自身使用的标识符,它有其特定语言自身使用的标识符,它有其特定的语法含义,的语法含义,Java关键字不能用做标识符,如:关键字不能用做标识符,如:for、while、boolean等都是等都是Java语言的关键字。语言的关键字。abstractdefaultIfnullswitchbooleandoImplementspackagesynchronizedbreakdoubleimportprivatethisbyteelseinstanceofprotectedthrow/throwscaseextendsintpublictransientcatchfalseinterfacereturntruecharfinallongshorttryclassfinallynativestaticvoidcontinuefloatnewstrictfpvolatileformainsuperwhile归纳分析l关键字是关键字是Java语言已经规定使用的标语言已经规定使用的标识符,所以识符,所以Java关键字不能用作源程关键字不能用作源程序中类、对象、变量等的标识符。序中类、对象、变量等的标识符。l关键字在关键字在Java源程序中用英文小写字源程序中用英文小写字母表示。母表示。2.1.4 Java分隔符的使用分隔符的使用l分隔符是用来区分分隔符是用来区分Java源程序中的基源程序中的基本成分,本成分,Java编译器在编译时能够编译器在编译时能够识别分隔符,确认代码在何处分隔。识别分隔符,确认代码在何处分隔。l分隔符有注释符、空白符和普通分隔分隔符有注释符、空白符和普通分隔符符3种。种。1注释符l注释是程序员为了提高程序的可读性和可理注释是程序员为了提高程序的可读性和可理解性,在源程序的开始或中间对程序的功能、解性,在源程序的开始或中间对程序的功能、作者、使用方法等所写的注解。注释仅用于作者、使用方法等所写的注解。注释仅用于阅读源程序,系统编译程序时,忽略其中的阅读源程序,系统编译程序时,忽略其中的所有注释。注释有两种类型:所有注释。注释有两种类型:/注释一行注释一行 以以“/”开始,最后以回车结束。一般作开始,最后以回车结束。一般作单行注释使用,也可放在某个语句的后面;单行注释使用,也可放在某个语句的后面;/*/一行或多行注释一行或多行注释 以以“/*”开始,最后以开始,最后以“*/”结束,中间结束,中间可写多行。可写多行。2空白符l空白符包括空格、回车、换行和制表符空白符包括空格、回车、换行和制表符(Tab键)等符号,用来作为程序中各键)等符号,用来作为程序中各种基本成份之间的分隔符。各基本成份种基本成份之间的分隔符。各基本成份之间可以有一个或多个空白符,其作用之间可以有一个或多个空白符,其作用相同。和注释一样,系统编译程序时,相同。和注释一样,系统编译程序时,只用空白符区分各种基本成份,然后忽只用空白符区分各种基本成份,然后忽略它。略它。3普通分隔符l普通分隔符和空白符的作用相同,用来区分程序中普通分隔符和空白符的作用相同,用来区分程序中的各种基本成份。的各种基本成份。.句号,用于分隔包、类或分隔引用变量中的变量和句号,用于分隔包、类或分隔引用变量中的变量和方法;方法;分号,是;分号,是Java语句结束的标志;语句结束的标志;,逗号,分隔方法的参数和变量说明等;,逗号,分隔方法的参数和变量说明等;:冒号,说明语句标号;:冒号,说明语句标号;大括号,用来定义复合语句、方法体、类体及数大括号,用来定义复合语句、方法体、类体及数组的初始化;组的初始化;方括号,原来定义数组类型,及引用数字的元素方括号,原来定义数组类型,及引用数字的元素值;值;()()小括号,用于在方法定义和访问中将参数表括小括号,用于在方法定义和访问中将参数表括起来,或在表达式中定义运算的先后次序。起来,或在表达式中定义运算的先后次序。2.2 Java常量与变量常量与变量2.2.1 2.2.1 基本数据类型基本数据类型lJava的数据类型分为如下的数据类型分为如下3种:种:基本数据类型,包括整型、浮点型、布尔基本数据类型,包括整型、浮点型、布尔型和字符型;型和字符型;数组类型,包括一维数组和多维数组;数组类型,包括一维数组和多维数组;复合类型,包括类、接口等。复合类型,包括类、接口等。基本数据类型基本数据类型数据类型数据类型 名称名称 位长位长 缺省值缺省值 取值范围取值范围布尔型布尔型boolean1falsetrue,false 字节型字节型 byte80128127字符型字符型 char16u0000 u0000uffff短整型短整型short1603276832767整型整型 int3202,147,483,6482,147,483,647长整型长整型 long6409,223,372,036,854,775,8089,223,372,036,854,775,807浮点型浮点型float320.0+1.4E45+3.4028235E+38双精度型双精度型double640.0+4.9E324+1.7976931348623157E+3082.2.2 Java常量常量lJava中的常量在程序中为一个标识符,中的常量在程序中为一个标识符,用来记忆一个固定的数值。在程序执行用来记忆一个固定的数值。在程序执行过程中常量是不可更改的数据,常量用过程中常量是不可更改的数据,常量用final声明,常量与变量的区别是前者不声明,常量与变量的区别是前者不占用内存。占用内存。Java约定常量名称用大写约定常量名称用大写字母。字母。声明常量的格式:声明常量的格式:final 类型类型 常量名常量名,常量名常量名=值值;1布尔常量l布尔常量只有两个值布尔常量只有两个值true和和false,代表,代表了两种状态:真和假,书写时直接使用了两种状态:真和假,书写时直接使用true和和false这两个英文单词,不能加这两个英文单词,不能加引号。引号。2整型常量l整型常量是不含小数的整数值,书写时整型常量是不含小数的整数值,书写时可采用十进制、十六进制和八进制形式。可采用十进制、十六进制和八进制形式。十进制常量以非十进制常量以非0开头后根多个开头后根多个09之之间的数字;八进制以间的数字;八进制以0开头后根多个开头后根多个07之间的数字;十六进制则以之间的数字;十六进制则以0X开头后开头后根多个根多个09之间的数字或之间的数字或af之间的小之间的小写字母或写字母或AF之间的大写字母。之间的大写字母。3浮点型常量lJava的浮点型常量有两种表示形式:的浮点型常量有两种表示形式:十进制数形式,由数字和小数点组十进制数形式,由数字和小数点组成,且必须有小数点,如成,且必须有小数点,如.123,0.123,123.0;科学计数法形式,如科学计数法形式,如123e3或或123E-3,其中,其中e或或E之前必须有数,且之前必须有数,且e或或E后后面的指数必须为整数。面的指数必须为整数。4字符常量l字符常量是由一对单引号括起来的单个字符常量是由一对单引号括起来的单个字符。它可以是字符。它可以是Unicode字符集中的任字符集中的任意一个字符,如:意一个字符,如:a,Z。对无。对无法通过键盘输入的字符,可用转义符表法通过键盘输入的字符,可用转义符表示。示。l字符常量的另外一种表示就是直接写出字符常量的另外一种表示就是直接写出字符编码,如字母字符编码,如字母A的八进制表示为的八进制表示为 101,十六进制表示为,十六进制表示为 u0041。5字符串常量l字符串常量是用一对双引号括起来的字字符串常量是用一对双引号括起来的字符序列。当字符串只包含一个字符时,符序列。当字符串只包含一个字符时,不要把它和字符常量混淆,例如不要把它和字符常量混淆,例如 A 是字符常量,而是字符常量,而 A 是字符串常量。字是字符串常量。字符串常量中可包含转义字符,例如符串常量中可包含转义字符,例如 Hello n world!在中间加入了一个在中间加入了一个换行符,输出时,这两个单词将显示在换行符,输出时,这两个单词将显示在两行上。两行上。l声明常量的格式:声明常量的格式:final 类型类型 常量名常量名,常量名常量名=值值;2.2.3 Java变量变量 l变量在程序中为一个标识符,在内存中变量在程序中为一个标识符,在内存中是一块空间,它提供了一个临时存放信是一块空间,它提供了一个临时存放信息和数据的地方,具有记忆数据的功能。息和数据的地方,具有记忆数据的功能。变量是可以改变的,它可以存放不同类变量是可以改变的,它可以存放不同类型的数据,通常用小写字母或单词作为型的数据,通常用小写字母或单词作为变量名。变量名。l变量具有三个元素:名字、类型和值。变量具有三个元素:名字、类型和值。变量的声明与初始化变量的声明与初始化l在在Java中存储一个数据,必须将它保中存储一个数据,必须将它保存到一个变量中。变量在使用前必须有存到一个变量中。变量在使用前必须有定义,即有确定的类型和名称。声明变定义,即有确定的类型和名称。声明变量的格式为:量的格式为:类型类型 变量名变量名,变量名变量名=初值初值;l该语句告诉编译器以给定的数据类型和该语句告诉编译器以给定的数据类型和变量名建立的一个变量。变量名建立的一个变量。变量声明示例lpublic class V public static void main(String args)byte b=0 x55;short s=0 x55ff;int i=1000000;long l=0 xffffL;char c=c;float f=0.23F;double d=0.7E-3;boolean B=true;String S=This is a string;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(字符串类对象字符串类对象 S=+S);2.2.4 成员变量与局部变量成员变量与局部变量l声明一个变量后,该变量只能在程序的声明一个变量后,该变量只能在程序的特定范围内使用,出了范围,变量就不特定范围内使用,出了范围,变量就不存在了。存在了。l在类中声明的变量称为成员变量,通常在类中声明的变量称为成员变量,通常在类开始处声明,可在整个类中使用。在类开始处声明,可在整个类中使用。在方法或块(块由两个大括号所定义)在方法或块(块由两个大括号所定义)中声明的变量称为局部变量。中声明的变量称为局部变量。成员变量对应的自动初始化值成员变量对应的自动初始化值变量类型变量类型初始值初始值booleanfalsebyte0charu0000int0short0long0.0Lfloat0.0Ldouble0.0dstringnull2.2.5 强制转换基本数据类型强制转换基本数据类型lJava提供的类型强制转换的语法格式提供的类型强制转换的语法格式为:(数据类型)数据表达式为:(数据类型)数据表达式 例如:例如:a=(int)b;其中,其中,(int)告诉编译器把字符型告诉编译器把字符型b强强制转换为整型数据,然后将转换后的整制转换为整型数据,然后将转换后的整型数据值赋给型数据值赋给a。l不用强制类型转换符的数据不用强制类型转换符的数据 Java可以将低精度的数字赋值给高精可以将低精度的数字赋值给高精度的数字型变量。度的数字型变量。l必须使用强制类型转换符的数据必须使用强制类型转换符的数据 对于数值型数据,对于数值型数据,Java将高精度的数将高精度的数字赋值给低精度的数字型变量时,必须字赋值给低精度的数字型变量时,必须进行强制类型转换。进行强制类型转换。l转换后的数据最好能够容纳原数据的所转换后的数据最好能够容纳原数据的所有信息有信息 类型转换时,目标类型最好能够容纳类型转换时,目标类型最好能够容纳原类型的所有信息。原类型的所有信息。不会丢失信息的类型转换不会丢失信息的类型转换原始类型原始类型目目 标标 类类 型型byteshort,char,int,long,float,doubleshortint,long,float,doublecharint,long,float,doubleintlong,float,doublelongfloat,doublefloatdouble2.3 Java的运算符与表达式的运算符与表达式lJava的运算符代表着特定的运算指令。的运算符代表着特定的运算指令。运算符和操作数的组合构成表达式,表运算符和操作数的组合构成表达式,表达式代表着一个确定的数值。达式代表着一个确定的数值。l按照运算符功能来分,运算符有七种:按照运算符功能来分,运算符有七种:赋值运算符、算术运算符、关系运算符、赋值运算符、算术运算符、关系运算符、条件运算符、逻辑运算符、位运算符和条件运算符、逻辑运算符、位运算符和其它运算符。其它运算符。l按照连接操作数的多少来分,有一元运按照连接操作数的多少来分,有一元运算符、二元运算符和三元运算符。算符、二元运算符和三元运算符。2.3.1 赋值运算符及其使用方式赋值运算符及其使用方式l表表2.7给出了赋值运算符和功能说明给出了赋值运算符和功能说明(未列出包含位运算符的赋值运算符)。(未列出包含位运算符的赋值运算符)。(见课本见课本P48页)页)l由赋值运算符构成的表达式称为赋值表由赋值运算符构成的表达式称为赋值表达式。赋值运算符的右边是一个表达式,达式。赋值运算符的右边是一个表达式,这个表达式还可以包含一个表达式。例这个表达式还可以包含一个表达式。例如:如:a=b=c=0,相当于三个表达式,相当于三个表达式c=0,b=c,a=b。2.3.2 算术运算符及其使用方式算术运算符及其使用方式l表表2.8给出了算术运算符和功能说明。(见课给出了算术运算符和功能说明。(见课本本49页)页)l算术运算符按操作数的多少可分为一元运算算术运算符按操作数的多少可分为一元运算符和二元运算符,一元运算符(符和二元运算符,一元运算符(+、-、+、-)一次对一个操作数进行运算,二元运算)一次对一个操作数进行运算,二元运算符一次对两个操作数进行运算。符一次对两个操作数进行运算。l求余运算在判断两个数是否成倍数时很有用,求余运算在判断两个数是否成倍数时很有用,余数为余数为0则两数成倍数,否则两数不成倍数。则两数成倍数,否则两数不成倍数。l一元运算一元运算i+和和i-比传统写法的加减运算速度比传统写法的加减运算速度要快很多,常用作循环结构中的计数器。要快很多,常用作循环结构中的计数器。2.3.3 关系运算符及其使用方式关系运算符及其使用方式l有一些运算符能产生布尔类型的结果,有一些运算符能产生布尔类型的结果,称它们为关系运算符,表称它们为关系运算符,表2.9列出了这列出了这些运算符。(见课本些运算符。(见课本51页)页)l关系运算符用于两个操作数之间关系的关系运算符用于两个操作数之间关系的比较。关系表达式的运算结果为布尔值,比较。关系表达式的运算结果为布尔值,不是不是true就是就是false,操作数可以是常,操作数可以是常量、变量和表达式。关系表达式常常用量、变量和表达式。关系表达式常常用作分支结构或循环结构的控制条件。作分支结构或循环结构的控制条件。2.3.4 逻辑运算符及其使用方式逻辑运算符及其使用方式l表表2.10列出了逻辑运算符。列出了逻辑运算符。(见课本(见课本52页)页)l关系运算只能解决一些简单条件的判定关系运算只能解决一些简单条件的判定问题,对较为复杂的条件可用逻辑运算问题,对较为复杂的条件可用逻辑运算来判定。逻辑表达式通常由多个关系表来判定。逻辑表达式通常由多个关系表达式构成,最终运算结果为布尔值达式构成,最终运算结果为布尔值true或或false。2.3.5 条件运算符及其使用方式条件运算符及其使用方式l条件运算符有一个条件运算符有一个“?”和一个和一个“:”,条件运算符是三元运算符,有三个操,条件运算符是三元运算符,有三个操作数。条件表达式的格式为:作数。条件表达式的格式为:条件表达式条件表达式?结果结果1:结果结果2;l条件运算符的计算过程为:首先计算作条件运算符的计算过程为:首先计算作为条件的逻辑表达式或关系表达式,条为条件的逻辑表达式或关系表达式,条件表达式返回值为件表达式返回值为true时整个表达式的时整个表达式的值为结果值为结果1,返回值是,返回值是false时整个表达时整个表达式的值为结果式的值为结果2。2.4 总结提高总结提高l2.4.1 Java的其他运算符的其他运算符 表表2.11列出了列出了Java的其他运算符的其他运算符(见课本(见课本P55)l2.4.2 Java的运算优先级的运算优先级 表表2.12从高到低列出了从高到低列出了Java运算符运算符115的优先级级别,同一行的运算符的优先级级别,同一行的运算符优先级级别相同。(见课本优先级级别相同。(见课本P55)2.5 知识扩展知识扩展l数组是有序数据的集合,数组中的每个数组是有序数据的集合,数组中的每个元素具有相同的数组名,根据数组名和元素具有相同的数组名,根据数组名和下标来唯一地确定数组中的元素。下标来唯一地确定数组中的元素。l数组有一维数组和多维数组,使用时要数组有一维数组和多维数组,使用时要先声明后创建。先声明后创建。2.5.1 一维数组一维数组l数组是数组是Java语言中的特殊数据类型,语言中的特殊数据类型,它们保存着能通过下标索引来引用的一它们保存着能通过下标索引来引用的一组同类数据。一维数组是指一个线性数组同类数据。一维数组是指一个线性数据序列,声明格式为:据序列,声明格式为:数据类型数据类型 数组名数组名;或或 数据类型数据类型 数组名数组名;一维数组的创建与赋值一维数组的创建与赋值l创建一维数组的格式:创建一维数组的格式:数组名数组名=new 数据类型数据类型n;l声明与创建数组的格式:声明与创建数组的格式:数据类型数据类型 数组名数组名=new 数据类型数据类型n;l数组元素的初始化数组元素的初始化 数组元素的初始化即为数组元素赋初值,声数组元素的初始化即为数组元素赋初值,声明并创建数组后,可直接初始化数组,即为明并创建数组后,可直接初始化数组,即为数组元素赋值,方法与变量赋值相同;数组元素赋值,方法与变量赋值相同;l通过赋初值定义数组长度。初值必须用大括通过赋初值定义数组长度。初值必须用大括号括起,用逗号作分隔符,初值的个数表示号括起,用逗号作分隔符,初值的个数表示数组的长度。数组的长度。2.5.2 多维数组多维数组lJava将多维数组看作数组的数组。例将多维数组看作数组的数组。例如二维数组就是一个特殊的一维数组,如二维数组就是一个特殊的一维数组,它的每个元素是一个一维数组。它的每个元素是一个一维数组。l二维数组的声明与一维数组基本相同,二维数组的声明与一维数组基本相同,只是后面再加上一对只是后面再加上一对“”。创建二。创建二维数组时,可指定各维的长度或至少指维数组时,可指定各维的长度或至少指定第一维的长度,也可采用直接赋值的定第一维的长度,也可采用直接赋值的方法确定二维数组的长度。此时,按照方法确定二维数组的长度。此时,按照给定的值序依次填满数组每一行中的元给定的值序依次填满数组每一行中的元素。素。上机练习上机练习1.编写一个编写一个Java源程序,包含语句源程序,包含语句System.out.println(“This character“+A+”has the value:“+(int)A),编译并运行程序查看输出,编译并运行程序查看输出结果。结果。2.设设a=6、b=-4,编写一个,编写一个Java源程序,输出如下三个源程序,输出如下三个表达式的值:表达式的值:-a%+b (-a)a (a10?a:b)