1 / 51

第 2 章 Java 基本语法

第 2 章 Java 基本语法. 主要任务 让读者对数据类型、表达式等 Java 基本语法内容有一个了解,这些内容是任何一门程序设计语言都必须包含的部分,可为程序设计打基础。. 本章主要内容. 1.Java 语言的基本元素 2. 数据类型 3. 运算符与表达式 4. 数组. 2.1 Java 语言的基本元素. 通过下面的 Java 源程序,了解 Java 语言有哪些基本元素 。 例 2.1 一个简单的 Java Application 源程序: Welcome2.java 。程序的运行结果是输出一句话“欢迎使用 Java 2” ,如图所示。.

Download Presentation

第 2 章 Java 基本语法

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第2章 Java基本语法 主要任务 让读者对数据类型、表达式等Java基本语法内容有一个了解,这些内容是任何一门程序设计语言都必须包含的部分,可为程序设计打基础。

  2. 本章主要内容 • 1.Java语言的基本元素 • 2.数据类型 • 3.运算符与表达式 • 4.数组

  3. 2.1 Java语言的基本元素 • 通过下面的Java源程序,了解Java语言有哪些基本元素 。 • 例2.1一个简单的Java Application源程序:Welcome2.java。程序的运行结果是输出一句话“欢迎使用Java 2”,如图所示。

  4. //这是一个简单的Java Application源程序 class Welcome2 { public static void main(String args[]) { System.out.println(“欢迎使用Java 2”); } // 结束main方法定义 } // 结束类Welcome2定义

  5. 从以上例子学到什么? • (1)Welcome2是一个Application应用程序 • (2)源程序中有注释语句 • (3)程序的主体声明了一个自定义类 • (4)Welcome2类包含main()方法 因此,可以知道Java语言包含标识符、关键字、运算符和分隔符等元素。这些元素有着不同的语法含义和组成规则,它们互相配合,共同组成Java的语句。

  6. 2.1.1 标识符 • 什么是标识符? 在Java中变量以及类和方法都需要一定的名称,这种名称就叫做标识符 • 标识符命名的基本规则: 所有的标识符都必须以一个字母、下划线或美元符号“$”开头,后面的字符可以包含字母、数字、下划线和美元符号。

  7. 标识符是由程序员自己定义的名称,可按上面的规则随意选取。不过,Java中有一个标识符命名约定:常量用大写字母,变量用小写字母开始,类以大写字母开始。如果一个变量名由多个单词构成,第一个单词后面的单词以大写字母开始,例如anInt。下划线虽然可以作为标识符的一员,但常用于常量名的单词分隔,因为常量名都是以大写字母单词命名的。标识符是由程序员自己定义的名称,可按上面的规则随意选取。不过,Java中有一个标识符命名约定:常量用大写字母,变量用小写字母开始,类以大写字母开始。如果一个变量名由多个单词构成,第一个单词后面的单词以大写字母开始,例如anInt。下划线虽然可以作为标识符的一员,但常用于常量名的单词分隔,因为常量名都是以大写字母单词命名的。 • 还要注意一点,Java严格区分字母大小写,标识符中的大小写字母被认为是不同的两个字符。例如以下是四个不同的合法标识符:ad,Ad,aD,Da。

  8. 2.1.3 分隔符 • 分隔符是用来区分源程序中的基本成份,可使编译器确认代码在何处分隔。 • 分隔符有三种 ☆注释符 ☆空白符 ☆普通分隔符

  9. 1.注释符 • 注释是程序员为了提高程序的可读性和可理解性,在源程序的开始或中间对程序的功能、作者、使用方法等所写的注解。注释仅用于阅读源程序,系统编译程序时,忽略其中的所有注释。注释有两种类型: ·// 注释一行 以“//”开始,最后以回车结束。一般作单行注释使用,也可放在某个语句的后面; ·/*… */一行或多行注释 以“/*”开始,最后以“*/”结束,中间可写多行。

  10. 2.空白符 • 空白符包括空格、回车、换行和制表符(Tab键)等符号,用来作为程序中各种基本成份之间的分隔符。各基本成份之间可以有一个或多个空白符,其作用相同。和注释一样,系统编译程序时,只用空白符区分各种基本成份,然后忽略它。

  11. 3.普通分隔符 • 普通分隔符和空白符的作用相同,用来区分程序中的各种基本成份,但它在程序中有确定的含义,不能忽略。Java有以下普通分隔符: . 句号,用于分隔包、类或分隔引用变量中的变量和方法; ;分号,是Java语句结束的标志; ,逗号,分隔方法的参数和变量说明等; :冒号,说明语句标号; {} 大括号,用来定义复合语句、方法体、类体及数组的初始化; [] 方括号,原来定义数组类型,及引用数字的元素值; () 小括号,用于在方法定义和访问中将参数表括起来,或在表达式中定义运算的先后次序。

  12. 例2.2 标识符、关键字和分隔符的使用。 • public class Example { public static void main(String args[]) { int i, c; ... } }

  13. 2.2 数据类型 • Java的数据类型可分为: ☆·基本类型,包括整型、浮点型、布尔型和字符型; ☆·数组类型,包括一维数组和多维数组; ☆·复合类型,包括类、接口。

  14. 2.2.1 基本数据类型

  15. 2.2.2 直接量与常量 • 直接量(literal)是指在程序中直接给出的一个符号串,作用是为变量赋值或参与表达式运算。 • 直接量可以是一个具体的数值或字符串,也称常量。但Java中的常量另有所指,是用final说明的一个标识符,在很多教科书中往往不加区分地统称为常量。 • 直接量或常量在程序执行过程中是不可更改的,它们与变量的区别是不占用内存。

  16. 1.布尔常量 • 布尔常量只有两个值true和false,代表了两种状态:真和假,书写时直接使用true和false这两个英文单词,不能加引号。

  17. 2.整型常量 • 整型常量是不含小数的整数值,书写时可采用十进制、十六进制和八进制形式。十进制常量以非0开头后根多个0~9之间的数字;八进制以0开头后根多个0~7之间的数字;十六进制则以0X开头后根多个0~9之间的数字或a~f之间的小写字母或A~F之间的大写字母。

  18. 3.浮点型常量 • Java的浮点型常量有两种表示形式: ☆·十进制数形式,由数字和小数点组成,且必须有小数点,如.123,0.123,123.0; ☆·科学计数法形式,如123e3或123E-3,其中e或E之前必须有数,且e或E后面的指数必须为整数。

  19. 4.字符常量 • 字符常量是由一对单引号括起来的单个字符。它可以是Unicode字符集中的任意一个字符,如:’a’,’Z’。对无法通过键盘输入的字符,可用转义符表示。 • 字符常量的另外一种表示就是直接写出字符编码,如字母A的八进制表示为 ’\101’,十六进制表示为 ’\u0041’。

  20. 5.字符串常量 • 字符串常量是用一对双引号括起来的字符序列。当字符串只包含一个字符时,不要把它和字符常量混淆,例如 ’A’ 是字符常量,而 "A" 是字符串常量。字符串常量中可包含转义字符,例如 "Hello \n world!" 在中间加入了一个换行符,输出时,这两个单词将显示在两行上。 • 声明常量的格式: final 类型 常量名[,常量名]=值;

  21. 2.2.3 变量 • 变量在程序中为一个标识符,在内存中是一块空间,它提供了一个临时存放信息和数据的地方,具有记忆数据的功能。变量是可以改变的,它可以存放不同类型的数据,通常用小写字母或单词作为变量名。 • 变量具有三个元素:名字、类型和值。

  22. 1.变量的声明 • 在Java中存储一个数据,必须将它保存到一个变量中。变量在使用前必须有定义,即有确定的类型和名称。声明变量的格式为: 类型 变量名[,变量名][=初值]; • 该语句告诉编译器以给定的数据类型和变量名建立的一个变量。

  23. 例2.3 变量声明示例 • public class V { public static void main(String args[]) { byte b=0x55; short s=0x55ff; int i=1000000; long l=0xffffL; char c='c'; float f=0.23F; double d=0.7E-3; boolean B=true; String S="This is a string";

  24. 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); } }

  25. 2.变量的使用范围 • 当你声明了一个变量后,它将被引入到一个范围当中。也就是说,该变量只能在程序的特定范围内使用,出了这个范围,变量就消失了。 • 在类中声明的变量是称为成员变量,通常在类的开始处声明,可在整个类中使用。在方法和块中声明的变量叫局部变量,使用范围是从它声明的地方开始到它所在那个块的结束处,块是由两个大括号所定义的,看下面例子。

  26. 例2.4 变量的使用范围。 public class V2 { static int i=10; public static void main(String args[]) { int k=10; System.out.println("i="+i); System.out.println("k="+k); } System.out.println("k="+k); //编译时将出错,已出k的使用范围 }

  27. 编译 V2.java时出现错误,如图所示。因为变量k在方法块中声明,在方法块之外它是不存在的,所以编译时会出错。编译 V2.java时出现错误,如图所示。因为变量k在方法块中声明,在方法块之外它是不存在的,所以编译时会出错。

  28. 3.变量类型的转换 • 当有一个整数而你需要把它变成一个字符型数据使用时该怎么办呢?需要将整数类型数据强制转换为字符型数据。 • 变量类型强制转换的格式为: (数据类型)数据表达式

  29. 2.3 运算符与表达式 • Java的运算符代表着特定的运算指令,程序运行时将对运算符连接的操作数进行相应的运算。运算符和操作数的组合构成表达式,表达式代表着一个确定的数值。 • 按照运算符功能来分,运算符有七种:赋值运算符、算术运算符、关系运算符、条件运算符、逻辑运算符、位运算符和其它运算符。 • 按照连接操作数的多少来分,有一元运算符、二元运算符和三元运算符。

  30. 2.3.1 赋值运算符 • 表2.6给出了赋值运算符和功能说明(未列出包含位运算符的赋值运算符)。(见课本31页) • 由赋值运算符构成的表达式称为赋值表达式。赋值运算符的右边是一个表达式,这个表达式还可以包含一个表达式。例如:a=b=c=0,相当于三个表达式c=0,b=c,a=b。

  31. 2.3.2 算术运算符 • 表2.7给出了算术运算符和功能说明。(见课本31页) • 算术运算符按操作数的多少可分为一元运算符和二元运算符,一元运算符(+、-、++、--)一次对一个操作数进行运算,二元运算符一次对两个操作数进行运算。 • 求余运算在判断两个数是否成倍数时很有用,余数为0则两数成倍数,否则两数不成倍数。 • 一元运算i++和i--比传统写法的加减运算速度要快很多,常用作循环结构中的计数器。

  32. 2.3.3 关系运算符 • 有一些运算符能产生布尔类型的结果,称它们为关系运算符,表2.8列出了这些运算符。(见课本32页) • 关系运算符用于两个操作数之间关系的比较。关系表达式的运算结果为布尔值,不是true就是false,操作数可以是常量、变量和表达式。关系表达式常常用作分支结构或循环结构的控制条件。

  33. 2.3.4 条件运算符 • 条件运算符有一个“?”和一个“:”,条件运算符与上面的运算符略有不同,是三元运算符,有三个操作数。条件表达式的格式为: 条件表达式 ? 结果1: 结果2; • 条件运算符的计算过程为:首先计算作为条件的逻辑表达式或关系表达式,条件表达式返回值为true时整个表达式的值为结果1,返回值是false时整个表达式的值为结果2。

  34. 2.3.5 逻辑运算符 • 表2.9列出了逻辑运算符。 (见课本33页) • 关系运算只能解决一些简单条件的判定问题,对较为复杂的条件可用逻辑运算来判定。逻辑表达式通常由多个关系表达式构成,最终运算结果为布尔值true或false。

  35. 例2.5 下面的程序说明了关系运算符和逻辑运算符的使用方式。输出结果如图所示。

  36. public class RAL { public static void main(String args[]) { int a=25, b=3, e=3, f=0; boolean d=a<b; System.out.println("a=25,b=3,e=3,f=0"); System.out.println("a<b = "+d); if (e!=0 && a/e>5) System.out.println("a/e = "+a/e); if (f!=0 && a/f>5) System.out.println("a/f = "+a/f); else System.out.println("f = "+f); } }

  37. 2.3.6 位运算符 • 表2.10列出了位运算符。(见课本34页) • 位运算表示按每个二进制位(bit)进行计算。位运算的操作数仅限于整数(char、short、int、long),以二进制形式进行,运算结果为一个整数。位运算主要是为了满足编程中的特殊要求,如测试设备、与硬件通讯等高级编程内容。一般计算机中8个位为1个字节,数据保存在1个或多个字节中,所以位运算要求程序员必须熟悉数的二进制表示,并且知道位运算以后的结果是什么。

  38. 2.3.7 其它运算符 • 在Java中还有一些特殊的运算符,如表2.11。(见课本36页)

  39. 2.3.8 运算优先级 • 知道了许多运算符,那么当表达式里有多种运算符号的时候,运算的次序如何区分呢?表2.12从高到低列出了运算符的优先级,同一行中的运算符优先级相同。(见课本36页) • 优先级是指同一式子中多个运算符被执行的次序。同一级别里的运算符具有相同的优先级,算术运算符具有左结合性,

  40. 2.4 数组 • 数组是有序数据的集合,数组中的每个元素具有相同的数组名,根据数组名和下标来唯一地确定数组中的元素。 • 数组有一维数组和多维数组,使用时要先声明后创建。

  41. 2.4.1 一维数组的声明 • 数组是Java语言中的特殊数据类型,它们保存着能通过下标索引来引用的一组同类数据。一维数组是指一个线性数据序列,声明格式为: 数据类型 数组名[]; 或 数据类型[] 数组名;

  42. 2.4.2 一维数组的创建与赋值 • 1.用运算符new分配内存再赋值 格式如下: 数组名= new 数据类型[size] • 2.直接赋初值并定义数组的大小 第二种方法是直接赋初值并定义数组的大小。初值必须用大括号括起,用逗号作分隔符,初值的个数表示数组的大小。

  43. 例2.6 一维数组的使用。该程序对数组中的每个元素赋值,结果如图所示。

  44. public class A1 { public static void main(String args[]) { int a[]=new int[5]; a[0]=1; a[1]=2; a[2]=3; a[3]=4; a[4]=5;

  45. System.out.println("a["+0+"] = "+a[0]); System.out.println("a["+1+"] = "+a[1]); System.out.println("a["+2+"] = "+a[2]); System.out.println("a["+3+"] = "+a[3]); System.out.println("a["+4+"] = "+a[4]); } }

  46. 2.4.3 多维数组 • Java将多维数组看作数组的数组。例如二维数组就是一个特殊的一维数组,它的每个元素是一个一维数组。 • 二维数组的声明与一维数组基本相同,只是后面再加上一对“[]”。创建二维数组时,可指定各维的长度或至少指定第一维的长度,也可采用直接赋值的方法确定二维数组的长度。此时,按照给定的值序依次填满数组每一行中的元素。更高维的情况是类似的。下面以二维数组为例来进行说明。

  47. 习 题 1.Java有哪些基本数据类型? 2.float和double型数据在赋值时有哪些注意事项? 3.Java的字符常量和字符串常量有何区别? 4.数据类型转换有何作用? 5.说明System.out.println(“This character “+’A’+” has the value:“+(int)’A’) 的输出结果。 6.说明表达式3*9*(3+(9*3/ (-3))) 的计算次序。 7.计算表达式的值:x+a%3*(int)(x+y)%2/4,设x=2.5,a=7,y=4.7。

  48. 8.设x的值为10,写出表达式运算后x的值: x+=x x-=3 x*=1+2 x%=5 9.设a=6、b=-4,计算表达式的值: --a%++b (--a)<<a (a<10 && a>10 ? a: b)

  49. 10.指出下面哪些是合法的标识符,说出为什么。10.指出下面哪些是合法的标识符,说出为什么。 A. $persons B. TwoUsers C. *point D. this E. _endline 11.指出下面哪些是将一个十六进制值赋值给一个long型变量,说出为什么。 A. long number = 345L; B. long number = 0345; C. long number = 0345L; D. long number = 0x345L.

More Related