Java语言程序设计基础教程课件(第2章).ppt

上传人:本田雅阁 文档编号:3481910 上传时间:2019-09-01 格式:PPT 页数:57 大小:145.52KB
返回 下载 相关 举报
Java语言程序设计基础教程课件(第2章).ppt_第1页
第1页 / 共57页
Java语言程序设计基础教程课件(第2章).ppt_第2页
第2页 / 共57页
Java语言程序设计基础教程课件(第2章).ppt_第3页
第3页 / 共57页
Java语言程序设计基础教程课件(第2章).ppt_第4页
第4页 / 共57页
Java语言程序设计基础教程课件(第2章).ppt_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《Java语言程序设计基础教程课件(第2章).ppt》由会员分享,可在线阅读,更多相关《Java语言程序设计基础教程课件(第2章).ppt(57页珍藏版)》请在三一文库上搜索。

1、第2章 Java基本的程序设计结构,标识符和关键字 Java的基本数据类型 运算符、表达式和语句 语句 输入输出 数组,2.1 标识符和关键字,在Java中的标识符和关键字统称为保留字。,2.1.1 标识符,标识符是赋予常量、变量、方法、类或者接口的名称,可以由用户自行定义,无长度限制,但要符合以下规则: 1、标识符可以由一个或多个字符组成 2、标识符必须以字母、下划线_或$为开头,后面可以包含数字、字母但不包含空格。 3、标识符中大小写字母有区别,但长度没有限制 4、关键字不能做为标识符使用 5、用以命名类、方法和变量、以及包遵守JAVA的命名规范,类名称的每个单词都以大写字母开头。方法和变

2、量第一个字母不大写,其他照旧。,2.1.2 关键字,Java中的关键字,它是Java特意保留的,具有特殊的意义和用途,不可以任意使用或更改,当我们在编写程序时要注意不要使用它作为变量或方法名称,以免造成程序编译的错误。 Java的关键字有: Abstract、default、if、package、this、Boolean、do、implements、private、throw、Break、double、import、protected、throws、Byte、else、instanceof、public、transient、Case、false、interface、short、try、Catc

3、h、final、long、static、void、Char、finally、native、super、volatile、 Class、float、new、switch、while、Continue、for、null、synchronized。 goto和const在Java中虽然不再使用,但是还作为关键字存在。,2.2 Java的基本数据类型,Java严格规定每个数据类型的大小,而且不允许任意更换变量的数据类型。也就是说如果A变量我们声明为整数类型后,就不能再将A变量改为其它类型,而且所占的空间就是32位,无法更改。,表2-1 Java的基本数据类型,2.2.1 布尔型,布尔型,也就是我们所说

4、的真或假,使用关键字boolean来定义逻辑变量,值为常量:true、false。 【例2-1】一个布尔型应用的示例。 定义了一个布尔类型变量y,起初给它赋值false,然后又赋值为true,在if条件判断中,因为y是true,条件满足,执行语句所以执行System.out.println(“y is true“);,最后是一个表达式109,结果为真,所以显示true。,public class BoolTest public static void main(String args) boolean y; y = false; System.out.println(“y is“ + y);

5、y = true; if (y) System.out.println(“y is true“); System.out.println(“109?“ + (10 9); ,2.2.2 字符型,字符型在C语言中占8位,而Java中由于使用的是unicode,所以占16位。 【例2-2】举个例子说明一下字符型数据的使用。 public class CharDemo public static void main(String args) char ch1, ch2; ch1 = 65; ch2 = B; System.out.print(“ch1 and ch2“); System.out.pr

6、intln(ch1 + “ “ + ch2); ,大写的A在ASCII字符集中的值为65,因为ASCII中的字符集占了Unicode中的前127个字符,所以ASCII中的技巧这里面一样用。从上面可以看出,给字符型变量ch1赋值65和A作用是一样的。程序2-2运行结果如下所示。,图2-2 字符型数据应用示例运行结果,2.2.3 整数型,Java定义了四种整数型,即字节型(byte),短整型(short),整型(int),长整型(long)。在Java语言中没有无符号这个关键字(unsigned),这个有区别于C语言,也就是说所有的数都为有符号数。,2.2.4 浮点型,浮点型,也就是所说的实数,其

7、中单精度数float占4个字节,双精度数占8个字节,当需要保持多次反复迭代的计算的精确性时或操作值很大时,是最好的选择了。 【例2-4】下面例子是一个双精度数计算圆面积的例子。 /计算圆的面积 public class Area public static void main(String args) double pi, r, a; r = 0.3; /半径 pi = 3.1416; a = pi * r * r; /面积 System.out.println(“面积为:“ + a); ,2.2.5 基本数据类型的转换,在Java中类型由低到高的顺序为:byte、short、char、int

8、、long、float、double。 1、自动转换:当由低到高时可以自动转换,比如: byte b;int i=b;long l=b;float f=b;double d=b; 那么这些都可以自动转换,是合法的,但byte、short、char是平级的不能自动转换,必须使用强制转换。 2、强制转换:由高级到低级时,必须使用强制转换。 int i=99;byte b=(byte) i;char c=(char) i;,【例2-5】下面例子说明这两种转换。 public class ChangeTest public static void main(String args) byte b =

9、15; int i = b; long l = b; float f = b; double d = b; System.out.println(b); System.out.println(i); System.out.println(l); System.out.println(f); System.out.println(d); int s = 99; byte n = (byte) s; System.out.println(s); System.out.println(n); ,注意:在强制转换时有时会导致溢出或降低精度,比如整型值赋给byte时,如果整型值大了,会自动取模再赋值,而

10、浮点数赋值给整数时会去掉小数点。,3、字符串型数据与其他数据类型转换:在Java中是通过toString()方法来实现的。 【例2-6】字符串型数据与其他数据类型转换的例子。 public class ChangeTest1 public static void main(String args) int i1 = 10; float f1 = 3.14f; double d1 = 3.1415926; /注意大小写 Integer I1 = new Integer(i1); /生成integer类 Float F1 = new Float(f1); / 生成float类 Double D1

11、= new Double(d1); /生成double类 /分别调用包装类的tostring()方法转换为字符串 String si1 = I1.toString(); /toString在此完成integer类型转换为字符串 String si2 = F1.toString(); String si3 = D1.toString(); System.out.println(si1); System.out.println(si2); System.out.println(si3); ,4、将CHAR型值直接做为数值转换为其他数据类型 【例2-7】CHAR型值直接做为数值转换为其他数据类型的例

12、子。 public class ChangeTest2 public static void main(String args) int i; char c1 = A; i = c1; System.out.println(i); char c2 = (char) (i + 2); / 此处要强制转换 System.out.println(c2); ,2.3 运算符、表达式,Java提供了丰富的运算符,如算术运算符、关系运算符、逻辑运算符、位运算符等。,2.3.1算术运算符与算术表达式,在Java中提供运算功能的就是运算符(Operator),例如与算术相关的有加(+)、减(-)、乘(*)、除

13、(/)这类的运算符。另外还有一个也很常用的取模运算符(%)。这类以数学运算为主的运算符称为算术运算符(Arithmetic Operator)。 算术运算符的使用基本上与加减乘除一样,也是先乘除后加减,必要时加上括号表示运算的先后顺序。,2.3.2比较和条件运算,数学上有比较的运算,像大于、等于、小于等运算,Java中也提供了这些运算符,这些运算符称为“比较运算符”(Comparison Operator)。它们有大于()、大于等于(=)、小于()、小于等于(=)、等于(=)和不等于(!=)。 在Java中,比较条件成立时以true表示,比较条件不成立时以false表示。,【例2-8】一个比较

14、运算的示例。,public class ComparisonOperator public static void main(String args) System.out.println(“10 5 结果 “ + (10 5); System.out.println(“10 = 5 结果 “ + (10 = 5); System.out.println(“10 5 结果 “ + (10 5); System.out.println(“10 = 5 结果 “ + (10 = 5); System.out.println(“10 = 5 结果 “ + (10 = 5); System.out.p

15、rintln(“10 != 5 结果 “ + (10 != 5); ,等于运算符=,它由两个连续的等号 = 所组成,而不是一个等号,一个等号是赋值运算,这一点必须特别注意。 若有两个变量x与y要比较是否相等,应该是写成x = y,而不是写成x = y,后者的作用是将y的值指定给x,而不是比较x与y是否相等。 对于对象来说,两个对象参考之间使用=作比较时,是比较其名称是否参考至同一对象,而不是比较其内容。,“条件运算符” 使用方式如下: 条件式 ? 成立返回值 : 失败返回值 返回值依条件式的结果而定,如果条件式的结果为true,则返回冒号前的值;若为false,则返回冒号后的值。,【例2-9】

16、一个条件运算符的示例。,import java.util.Scanner; public class ConditionalOperator public static void main(String args) Scanner scanner = new Scanner(System.in); System.out.print(“请输入学生分数: “); int scoreOfStudent = scanner.nextInt(); System.out.println(“该生是否及格? “ + (scoreOfStudent = 60 ? 是 : 否); ,2.3.3逻辑和位运算,Jav

17、a中也提供这几个基本逻辑运算所需的逻辑运算符(Logical Operator),分别为与( ,2.3.4递增和递减运算,递增(Increment)、递减(Decrement)与赋值(Assignment)运算符,这几种运算符的目的除了让程序看来比较简洁之外,还可以稍微增加一些程序执行的效率。 在程序中对变量递增1或递减1是很常见的运算,例如: int i = 0; i = i + 1; System.out.println(i); i = i - 1; System.out.println(i); 上面这段程序会分别显示变量+1与-1操作的结果,1与0两个数,,【例2-16】递增、递减运算符

18、的示例。,public class IncrementDecrement public static void main(String args) int i = 0; System.out.println(+i); System.out.println(-i); ,2.3.5赋值运算符,到目前为止,只学习过一个赋值运算符,也就是=这个运算符,事实上赋值运算符还有其他几个,如表2-2所示。,表2-2 赋值运算符,2.4语句,在Java语言中,语句可分为以下5类: 1方法调用语句 System.out.println(“Hello”); 2表达式语句 由一个表达式构成一个语句,最典型的是赋值语句

19、,如:x = 23; 一个表达式加上一个分号就构成了一个语句,分号是语句不可缺少的部分。 3复合语句 可以用把一些语句括起来构成复合语句,如: z = 23 + x; System.out.println(“Hello”); 4控制语句 包括条件语句和switch开关语句。 5package语句和import语句 Package语句和import语句与类、对象有关,相关内容在第3章中介绍。,2.4.2 控制语句,Java的控制语句有2种类型,即条件语句和switch开关语句。 1条件控制语句 为了解决“如果”发生了,就要的需要,Java提供了if条件控制语句。它的语法如下: if(条件式) 语

20、句1; else 语句2;,如果在if后有两个以上的语句,称之为复合语句(Compound Statement),此时必须使用 定义程序块(Block)将复合语句包括起来。例如: if(条件式) 语句1; 语句2; else 语句3; 语句4; ,【例2-19】使用if条件式来判断使用者的输入是奇数还是偶数。,import java.util.Scanner; public class OddDecider3 public static void main(String args) Scanner scanner = new Scanner(System.in); System.out.pri

21、nt(“请输入数字: “); int input = scanner.nextInt(); int remain = input % 2; / 求除 2 的余数 if (remain = 1) / 如果余数为1 System.out.println(input + “为奇数“); else System.out.println(input + “为偶数“); ,2switch 条件式,switch只能比较数值或字符,使用适当的话,可比if判断式有效率。switch的语法结构如下: switch(变量名称或表达式) case 符合数字或字符: 语句1; break; case 符合数字或字符:

22、语句2; break; default: 语句3; ,【例2-21】使用switch来改写处理学生的成绩等级问题。,import java.util.Scanner; public class ScoreLevel2 public static void main(String args) Scanner scanner = new Scanner(System.in); System.out.print(“请输入分数: “); int score = scanner.nextInt(); int level = (int) score / 10; switch (level) case 10

23、: case 9: System.out.println(“得A“); break; case 8: System.out.println(“得B“); break; case 7: System.out.println(“得C“); break; case 6: System.out.println(“得D“); break; default: System.out.println(“得E(不及格)“); ,2.4.3 循环语句,1for循环 在Java中如果要进行重复性的指令执行,可以使用for循环式。它的基本语法如下: for(初始式; 判断式; 递增式) 语句1; 语句2; 如果语句只

24、有一个,也就是非复合语句, 可以省略不写。for循环的第一个初始语句只会执行一次,之后每次重新进行循环时,都会根据判断式来判断是否执行下一个循环,而每次执行完循环之后,都会执行递增式。,【例2-22】for循环的功能示例。,public class SimpleLoopFor public static void main(String args) for (int i = 0; i 10; i+) System.out.print(“ “ + i); ,2while循环,Java提供while循环式,它可以根据所指定的条件式来判断是否执行循环体。语法如下: while(条件式) 语句1; 语

25、句2; ,【例2-25】计算输入成绩平均的程序。,import java.util.Scanner; public class ScoreAverage public static void main(String args) Scanner scanner = new Scanner(System.in); int score = 0; int sum = 0; int count = -1; while (score != -1) count+; sum += score; System.out.print(“输入分数(-1结束):“); score = scanner.nextInt()

26、; System.out.println(“平均:“ + (double) sum / count); ,2.4.4 break和continue,break可以离开当前switch、for、while、do while的程序块,并前进至程序块后下一条语句,在switch中主要用来中断下一个case的比较。在for、while与do while中,主要用于中断目前的循环执行,break的例子之前已经看过不少,这里不再举例。 continue的作用与break类似,主要用于循环,所不同的是break会结束程序块的执行,而continue只会结束其之后程序块的语句,并跳回循环程序块的开头继续下一个

27、循环,而不是离开循环。,例如: for(int i = 1; i 10; i+) if(i = 5) break; System.out.println(“i = “ + i); 这段程序会显示i = 1到4,因为当 i 等于5时就会执行break而离开循环。,看下面这个程序: for(int i = 1; i 10; i+) if(i = 5) continue; System.out.println(“i = “ + i); 这段程序会显示1到4,与6到9。当 i 等于5时,会执行continue直接结束此次循环,这次循环中System.out.println()行并没有被执行,然后从程序

28、块开头执行下一次循环,所以5并没有被显示。,2.5输入输出,1)利用System.out.println(),可以非常容易实现输出 【例2-29】一个输出的例子。 public class OutputTest public static void main(String args) float x; x = 100.0f / 3.0f; System.out.println(x); System.out.println(100.0 / 3.0); ,2)格式化输出 在java.text包中,提供了NumberFormat类可以产生这种格式,然后我们再用format方法来得到格式化的字符。,【

29、例2-30】一个格式化输出的例子。,import java.text.*; public class OutputTest1 public static void main(String args) double x; x = 100.0 / 3.0; NumberFormat f1 = NumberFormat.getNumberInstance();/ 数字格式 String s = f1.format(x); System.out.println(s); NumberFormat f2 = NumberFormat.getPercentInstance();/ 百分比格式 s = f2.

30、format(x); System.out.println(s); NumberFormat f3 = NumberFormat.getCurrencyInstance();/ 货币格式,这跟系统区域有关 s = f3.format(x); System.out.println(s); ,3)键盘输入 【例2-31】一个键盘输入的例子。 import javax.swing.*; public class InputTest public static void main(String args) String name = JOptionPane.showInputDialog(“pleas

31、e input you name:“); String input = JOptionPane.showInputDialog(“please input you age:“); int age = Integer.parseInt(input); System.out.println(“your name:“ + name + “ you age:“ + age); System.exit(0); ,2.6 数组,2.6.1数组的概念 数组(Array)是一组相同数据类型数据的有序集合。在Java语言中数组元素可以由简单数据类型组成也可以由对象组成。数组中的每个元素都具有相同的数据类型,可以

32、用一个统一的数组名和一个下标来唯一地确定数组中的元素。,数组主要具有下面的特点: 数组是相同数据类型的元素的集合。 数组中的各元素是有先后顺序的,在内存中按照这个先后顺序连续存放在一起。 数组元素用整个数组的名字和其在数组中的顺序位置来表示。如a0表示名字为a的数组中的第一个元素,a1表示数组a中的第二个元素。 从数组的构成形式上看,可将其分为一维数组和多维数组。,2.6.2一维数组,1 一维数组的定义 type arrayName ; 类型(type)可以为Java中任意的数据类型,包括简单类型和复合类型。 例如: int intArray ; Date dateArray; 2 一维数组的

33、初始化 静态初始化 int intArray=1,2,3,4; String stringArray=“abc“, “How“, “you“;, 动态初始化 1)简单类型的数组 int intArray; intArray = new int5; 2)复合类型的数组 String stringArray ; String stringArray = new String3; /为数组中每个元素开辟引用空间(32位) stringArray0= new String(“How“); /为第一个数组元素开辟空间 stringArray1= new String(“are“); /为第二个数组元素开

34、辟空间 stringArray2= new String(“you“); / 为第三个数组元素开辟空间,3一维数组元素的引用 数组元素的引用方式为: arrayNameindex index为数组下标,它可以为整型常数或表达式,下标从0开始。每个数组都有一个属性length指明它的长度,例如:intArray.length指明数组intArray的长度。,2.6.3多维数组,Java语言中,多维数组被看作数组的数组。 1二维数组的定义 type arrayName ; type arrayName;,2二维数组的初始化 静态初始化 int intArray =1,2,2,3,3,4,5; Ja

35、va语言中,由于把二维数组看作是数组的数组,数组空间不是连续分配的,所以不要求二维数组每一维的大小相同。, 动态初始化 1) 直接为每一维分配空间,格式如下: arrayName = new typearrayLength1arrayLength2; int a = new int23; 2) 从最高维开始,分别为每一维分配空间: arrayName = new typearrayLength1 ; arrayName0 = new typearrayLength20; arrayName1 = new typearrayLength21; arrayNamearrayLength1-1 =

36、new typearrayLength2n;,二维简单数据类型数组的动态初始化如下, int a = new int2 ; a0 = new int3; a1 = new int5; 对二维复合数据类型的数组,必须首先为最高维分配引用空间,然后再顺次为低维分配空间。而且,必须为每个数组元素单独分配空间。 例如: String s = new String2 ; s0= new String2; /为最高维分配引用空间 s1= new String2; /为最高维分配引用空间 s00= new String(“Good“); /为每个数组元素单独分配空间 s01= new String(“Luc

37、k“); /为每个数组元素单独分配空间 s10= new String(“to“); /为每个数组元素单独分配空间 s11= new String(“You“); /为每个数组元素单独分配空间,3二维数组元素的引用 对二维数组中的每个元素,引用方式为: arrayNameindex1index2 例如: num10;,【例2-32】一个二维数组的例子。,public class MatrixMultiply public static void main(String args) int i, j, k; int a = new int23; / 动态初始化一个二维数组 / 静态初始化一个二维

38、数组 int b = 1, 5, 2, 8 , 5, 9, 10, -3 , 2, 7, -5, -18 ; int c = new int24; / 动态初始化一个二维数组 for (i = 0; i 2; i+) for (j = 0; j 3; j+) aij = (i + 1) * (j + 2); for (i = 0; i 2; i+) for (j = 0; j 4; j+) cij = 0; for (k = 0; k 3; k+) cij += aik * bkj; System.out.println(“*Matrix C*“);/ 打印Matrix C标记 for (i

39、= 0; i 2; i+) for (j = 0; j 4; j+) System.out.println(cij + “ “); System.out.println(); ,2.7练习思考题,1、 从下面列表中,选择三个有效的标示符( ) A. IDoLikeTheLongNameClass B. $byte C. const D. _ok E3_case,2、 下面代码执行后,正确的输出结果是:( ) public class Example public static void main(String args) int l = 0; do System.out.println(“Doing it for l is:“ + l); while (-l 0); System.out.println(“Finish“); A. Doing it for l is 3 B. Doing it for l is 1 C. Doing it for l is 2 D. Doing it for l is 0 E. Doing it for l is ?C1 F. Finish,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1