




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、3.1 Java程序的组成程序的组成/FileStructure.javapackage myPackage;import javax.swing.JOptionPane; /导入类JOptionPanepublic class FileStructure public static void main( String args) JOptionPane.showMessageDialog( null, 欢迎你学习Java程序基础!); System.exit(0); / 终止应用程序 【例3-1】 Java程序的结构包的认识。此程序编译后生成的字节码文件FileStructure.class
2、放入包myPackage中第1页/共151页3.1 Java程序的组成程序的组成 Java源程序的3个要素(1)包声明(package statement)-可选; (2)任意数量的导入语句(import statements)-可选;(3)任意数量的类定义和接口定义。 说明 3个要素只能按上述顺序出现。 每个源文件最多只能有一个public类或接口,且此时源文件只能以这个public类或接口命名。 类或接口中包括成员(属性和方法)及语句,组成它们的语言单位包括常量、变量、表达式、关键字等。第2页/共151页1、Java字符集字符集 大小写的英文字母:A Z,a z 数字字符:09 特殊字符:
3、 空格 ! ! # # % % & & $ $ _(_(下划线) +) + * * = = - - / / “ ; ; . ., ,( ) 第3页/共151页2、词法记号、词法记号 关键字:Java:Java预定义的单词。 标识符: :程序员声明的单词,命名程序正文中的一些实体。 如类名、变量名、方法名、对象名等。 常 量: :在程序中直接使用符号表示的数据。 (文字)包括: :数字、字符、字符串和布尔型文字。 如:123:123,4.564.56,A A,”HelloHello”,truetrue 操作符: :用于各种运算的符号,如:+,-,*等。 分隔符: :用于分隔各个词法记号或程序正文
4、。 如:( ) , : ; 空白符: :用于指示单词的开始和结束位置。 空格(spacespace)、制表符(TABTAB键产生的字符)、 换行符(EnterEnter键所产生的字符)和注释的总称。第4页/共151页3、关键字、关键字(Keywords)abstract break byte boolean catch caseclass char continue default double doelse extends false final float forfinally final if import implements intinterface instanceof long
5、length native newnull package private public protected returnswitch synchronized short static super try true this throw throws thread safe transient void while第5页/共151页4、标识符、标识符(identifier)JavaJava标识符的构成规则: : 以字母、下划线(_)或美元符$开始。 可以由大写字母、小写字母、下划线(_)、数字09组成。 不能是Java的关键字。 大写字母和小写字母代表不同的标识符。 标识符的长度是任意的。
6、不要使用系统预定义的符号,以免引起混淆。 例如:true、false、null代表的是特殊的值,不是关键字,但用户也不要使用这些名字。标识符的作用:用于标记程序中的名字,类名、变量名、常量名、方法名等。第6页/共151页4、标识符、标识符identifier ,userName , User_Name, _sys_value, $change2mail, room#, class合法的标识符非法的标识符第7页/共151页4、标识符、标识符 Java中的命名规则 类名:使用名词,含有大小写字母,每个词的首字母大写。如HelloWorld。 方法名:使用动词,含有大小写字母,首字母小写,其余各词的
7、首字母大写。大写字母做词之间的间隔。不要使用下划线。如getName、setAddress、search。 简单类型常量名:应该全部为大写字母,词与词之间用下划线分隔。如PI、TIME_COMPAROR。 所有的对象、类和全局变量名:使用混合大小写,首字母小写,变量中不要使用下划线。第8页/共151页3.2 基本数据类型、变量与常量基本数据类型、变量与常量 Java的数据类型 基本数据类型:Java语言本身定义的数据类型。 复合数据类型(引用类型):用户根据自己的需要定义的数据类型。 第9页/共151页Java的数据类型的数据类型数据类型基本数据类型复合数据类型类:class布尔类型:bool
8、ean数组接口:interface字符类型:char数值类型浮点数类型:float,double整数类型byte,short,int,long第10页/共151页数据类型数据类型关键字关键字占用位数占用位数取值范围取值范围布尔型布尔型boolean8true, false字符型字符型char16u 0000 u FFFF 字节型字节型byte8-128127短整型短整型short16-3276832767整型整型int32-2147483648 2147483647长整型长整型long64-2-63263-1浮点型浮点型float321.40129846432481707e-453.40282
9、346638528860e+38 双精度型双精度型double644.94065645841246544e-3241.79769313486231570e+308d 3.2.1 基本数据类型基本数据类型第11页/共151页第12页/共151页第13页/共151页第14页/共151页整型常量的类型整型常量的类型 整型常量按照所占用的内存大小分类 整型(int)常量:占用32位。 如123,-34 长整型(long)常量:占用64位,长整型常量的尾部有一个大写的L或小写的l。 如-386L,017777l 说明:java中的整型常量默认为int,表示long型整数后面加后缀。第15页/共151页2
10、. 浮点型常量浮点型常量 浮点型常量:表示可以含有小数部分的数值常量。 根据占用内存长度的不同分类 单精度浮点常量:占用32位内存,用F、f表示。如:19.4F,3.0513E3,8701.52f 双精度浮点常量:占用64位内存,用带D或d或不加后缀的数值表示, 如:2.433E-5D,700041.273d,3.1415。 说明:在java中的实型常量默认为double,所以写单精度的实数时要在数字后面写f,如3.14f。第16页/共151页第17页/共151页3.字符常量字符常量 字符常量:用一对单引号括起的单个字符。 可见字符:a,Z,8,# 转义字符 n t ddd : 八进制表示一个
11、字符 uxxxx: 十六进制无符号整数,表示Unicode码。 如: : 101101 用八进制表示一个字符AA u0041 u0041 用UnicodeUnicode码表示一个AA第18页/共151页3.字符常量字符常量三位8进制数表示的字符 ddd 四位16进制数表示的字符反斜线单引号双引号回车表格符换行水平制表符tab退格含含义义 u005c u0027 u0022 u000d u000c u000a u0009 u0008对对应应Unicode码码 uxxxx ” r f n t b转转义义字字符符三位8进制数表示的字符 ddd 四位16进制数表示的字符反斜线单引号双引号回车表格符换行
12、水平制表符tab退格含含义义 u005c u0027 u0022 u000d u000c u000a u0009 u0008对对应应Unicode码码 uxxxx ” r f n t b转转义义字字符符第19页/共151页3.字符常量字符常量 字符数据在内存中的存储形式:一个字符用两个字节的Unicode码表示。 Unicode码与ASCII的对应关系:高2位字节00,低2位字节是ASCII值。第20页/共151页4.字符串常量字符串常量 字符串常量是用双引号括起的一串字符(可以0个)。 例子:Hello, My nJava, How old are you? 1234, My + name
13、注意:字符串常量是String类的对象。第21页/共151页5.布尔常量布尔常量 布尔常量:true(真)和false(假)。 在流控制中经常用到布尔常量。 if (条件) 动作1 else 动作2 注意:Java是一种严格的类型语言,它不允许数值类型和布尔类型之间进行转换。 第22页/共151页3.2.3 变量变量 变量:在程序的运行过程中数值可变的数据, 用来记录运算中间结果或保存数据。 变量的声明数据类型 变量名1,变量名2,变量名n;例如:int num,total;double d1;给变量分配 空间num:total:d1:4字节8字节byte,short,int,long, fl
14、oat,double,char,boolean复合类型第23页/共151页3.2.3 变量变量例如:int num,total;double d1;num:total:d1: 变量遵循 “先声明后使用” 的原则。num=5;total=2*num;d1=-234.45;num=6;K=90; /Error!Num=J+90+num; /Error!510-234.456第24页/共151页不同类型变量占用的存储空间不同类型变量占用的存储空间数据类型关键字占用位数取值范围布尔型boolean8true, false字符型char16u 0000 u FFFF 字节型byte8-128127短整型
15、short16-3276832767整型int32-2147483648 2147483647长整型long64-2-63263-1浮点型float321.40129846432481707e-453.40282346638528860e+38 双精度型double644.94065645841246544e-3241.79769313486231570e+308d 第25页/共151页3.2.3 变量变量 变量的初始化 :声明变量时指定变量初值。例如: char a= a, b; double d1, d2=0.0; boolean flag=true; byte b1=255; byte
16、b2=289; /Error!第26页/共151页3.2.3 变量变量 变量的动态初始化: 在变量声明时使用表达式初始化变量。 class DynInit public static void main(String args) double a = 3.0, b = 4.0; double c = Math.sqrt(a * a + b * b); System.out.println(Hypotenuse is: + c); c被动态初始化第27页/共151页3.2.4 符号常量符号常量 符号常量:为常量起的名字。n符号常量声明 final 数据类型 常量名=缺省值;n注意:符号常量声明时
17、一定要赋初值,而在程序的中间不能改变其值。例如:final double PI=3.14159;float r, area;r=4.5;area=3.14159*r*rfloat r, area;r=4.5;area=PI*r*r;PI=3.1415 /错误第28页/共151页【例例3-2】变量声明和赋值。变量声明和赋值。 public class UseVariables public static void main(String args) final int PRICE=30; /声明整型常量 long l=1234l; /声明长整型变量并赋值 int num,total; /声明整型
18、变量 float r,v,h = 3.5f; /声明浮点型变量,并给h赋值 double w = 3.1415; /声明双精度型变量并赋值 boolean truth = true; /声明布尔类型变量并赋值 boolean false1; /声明布尔类型变量 char c; /声明字符类型变量第29页/共151页 c =A; / 给字符类型变量赋值。 num=10; / 给整型变量赋值 total=num*PRICE; r=2.5f; / 给浮点型变量赋值 v=3.14159f*r*r*h; false1 = 6 7; / 给布尔类型变量赋值 String s=I am a student;
19、 /给字符串引用变量赋值 【例例3-2】变量声明和赋值。变量声明和赋值。第30页/共151页3.3 运算符与表达式运算符与表达式 运算符: 指明对操作数的运算方式。 按操作数的个数分: :单目运算符( (如-a)-a),双目运算符( (如a+b),a+b),三目运算符( (如e1?e2:e3)e1?e2:e3)。 按功能分类算术运算符: +,*,/,%,+,关系运算符: ,=,b;第31页/共151页3.3 运算符与表达式运算符与表达式 表达式:由运算符、操作数(常量、变量、方法调用)和圆括号组成的式子。 算术表达式算术表达式 赋值表达式赋值表达式第32页/共151页3.3.1 算术运算符与算
20、术表达式算术运算符与算术表达式 算术运算符:对整型或实型数据的运算。 算术运算符分类 双目运算符 单目运算符第33页/共151页3.3.1 算术运算符与算术表达式算术运算符与算术表达式运算符运算例功能+加a + b求a与b相加的和-减a - b求a与b相减的差*乘a * b求a与b相乘的积/除a / b求a除以b的商%取余a % b求a除以b所得的余数 双目算术运算符第34页/共151页双目算术运算符双目算术运算符 注意 (1)与C不同的是,Java中的“%”两个运算对象可以是实数。 13%5=3 23.6%12=11.6 (2)两个整型的数据做“/”运算时,结果是截取商的整数部分,而小数部分
21、被截断。 2/4=0 2.0/4=0.5 第35页/共151页算术运算符与算术表达式算术运算符与算术表达式 单目运算符:操作数只有一个。运算符运算例功能等价+自增a+或+aa = a + 1-自减a-或-aa = a - 1-求负数-aa = -a第36页/共151页单目算术运算符单目算术运算符例如: int x=-1; x = -x ; 前缀(+,-): 先执行单目运算,修改变量的值后用这个 新值参与表达式的运算。 后缀(+, -): 先计算表达式的值,最后再修改变量的取值。 自增和自减的操作对象只能是变量。 int y=(+x)*3; int y = (x+)*3; 第37页/共151页例
22、如: int x = 5 ; int y = (-x) * 3; 前缀和后缀运算符举例前缀和后缀运算符举例x为4 y为12x为4 y为15替换为 int y = (x-) * 3;第38页/共151页【例例3-3】算术运算符的应用。算术运算符的应用。 编写一个Java应用程序,在对话框中输入两个数字,输出其+、-、*、/、%运算的计算结果。 利用对话框,接受用户从键盘输入的两个数字组成的字符串。 把两个数字字符串转化为整型数值,并赋值给两个整型变量a和b。 以a和b为操作数进行算术运算,并在对话框中输出运算结果。 程序运行时,可输入任意两个整数,观察程序运行的不同结果。 第39页/共151页【
23、例例3-3】算术运算符的应用。算术运算符的应用。 利用对话框输入数据的方法 String JOptionPane.showInputDialog(String) String:对话框中的提示文字 返回值:对话框接收的数据为字符串类型 将数字串转化为数字的方法int Integer.parseInt(String) 在对话框中显示数据的方法 JOptionPane.showMessageDialog(Compoment, object, String ,JOptionPane.PLAIN_MESSAGE);第40页/共151页【例例3-3】算术运算符的应用。算术运算符的应用。import jav
24、a.util.Scanner;public class Test public static void main(String args) System.out.println(输入第一个数);Scanner scn = new Scanner(System.in);int a= scn.nextInt();System.out.println(输入第2个数);int b= scn.nextInt();String str = a + + +b + = + (a+b) + n;str = str + a + - +b + = + (a-b) + n; str = str + a + * +b
25、+ = + (a*b) + n; str = str + a + / +b + = + (a/b) + n; str = str + a + % +b + = + (a%b) + n; System.out.println(str);第41页/共151页3.3.2 赋值运算符与赋值表达式赋值运算符与赋值表达式例如,i=5 /赋值表达式的值是5 Java中赋值运算符:=、+=、-=、*=等。 赋值表达式:带有赋值运算符的表达式。 赋值表达式的含义:等号右边表达式的值赋给等号左边的变量。 赋值表达式的类型:等号左边变量的类型。 赋值运算的结合性:自右向左。第42页/共151页第43页/共151页3
26、.3.2 赋值运算符与赋值表达式赋值运算符与赋值表达式运算符例子等价于+ =x += ax = x + a- =x -= ax = x - a*=x *= ax = x * a/=x /= ax = x / a%=x %= ax = x % a 常用的复合赋值运算符n例:a+=3 等价于 a=a+3 x*=y+8 等价于 x=x*(y+8)第44页/共151页第45页/共151页关系运算符关系运算符 运算符运算例= =等于a=b! =不等于a!=b大于ab小于a=大于等于a=b=小于等于a1) & (5-4)! false第47页/共151页3.3.4 逻辑运算符与逻辑表达式逻辑运算符与逻辑表
27、达式 逻辑运算符与布尔逻辑运算符的区别 逻辑运算符: & | 利用它们做逻辑运算时,运算时右边的表达式有可能被忽略(短路)而不加执行。 布尔逻辑运算符:&、| 、 利用它们做与、或、异或运算时,运算符左右两边的表达式总会被运算执行,然后再对两表达式的结果进行与、或运算。e1 & e2e1 & e2false第48页/共151页3.3.4 逻辑运算符与逻辑表达式逻辑运算符与逻辑表达式boolean b= x y & x+ = y- ; /x为4,y为4,b为false 例如:int x = 3, y = 5 ; boolean b= x y & x+ = y- ; /x为3,y为5,b为fals
28、e 短路第49页/共151页3.3.4 逻辑运算符与逻辑表达式逻辑运算符与逻辑表达式 逻辑表达式:由逻辑运算符、关系表达式、逻辑值构成。例如:int x=12, y=13;float a=1, b=2;x = = y & a b!(a = b)x y & (a+3) b | ! ( x = a )第50页/共151页3.3.6 其它运算符其它运算符 条件运算符与条件表达式 e1?e2:e3 e1 为 boolean 类型 e2与e3的类型相同 执行顺序 若e1的值为true,e2的值为最终结果 若e1的值为false,e3的值为最终结果例如: y= x=0 ? x: -x max= xy ?
29、x: y第51页/共151页3.3.6 其它运算符其它运算符 括号 ( ) 方括号 对象运算符 instanceof boolean b = MyObject instanceof TextField; instanceof用来测定一个对象是否是某一个指定类或其子类的实例。第52页/共151页3.3.7 运算符的优先级与结合性运算符的优先级与结合性 表达式的运算次序:取决于表达式中各种运算符的优先级。优先级高的运算符先运算,优先级低的运算符后运算,同一行中的运算符的优先级相同。 运算符的结合性: :决定了并列的相同运算符的先后执行顺序。第53页/共151页Java运算符的优先级与结合性运算符的
30、优先级与结合性 右左= += -= *= /= %= =赋值运算14右左? :三目条件运算13左右|逻辑或12左右&逻辑与11左右|按位或,布尔逻辑或10左右按位异或9左右&按位与,布尔逻辑与8左右= = !=相等关系运算7左右 =关系运算6左右 移位运算5左右+ -算术加减运算4左右* / %算术乘除运算3右左+(正号) (负号) + - - !强制类型转换符单目运算2左右. ( )最高优先级1结合性运算符描述优先级右左= += -= *= /= %= =赋值运算14右左? :三目条件运算13左右|逻辑或12左右&逻辑与11左右|按位或,布尔逻辑或10左右按位异或9左右&按位与,布尔逻辑与8
31、左右= = !=相等关系运算7左右 =关系运算6左右 移位运算5左右+ -算术加减运算4左右* / %算术乘除运算3右左+(正号) (负号) + - - !强制类型转换符单目运算2左右. ( )最高优先级1结合性运算符描述优先级高低第54页/共151页Java运算符的优先级与结合性运算符的优先级与结合性 例如 x y & ! z 相当于 ( x y ) & ( ! z ) x + y + z 等价于 ( x + y ) + z ! !x 等价于 !( ! x ) 第55页/共151页第56页/共151页基本类型数据占有的内存宽度基本类型数据占有的内存宽度数据类型数据类型关键字关键字占用位数占用
32、位数取值范围取值范围布尔型布尔型boolean8true, false字符型字符型char16u 0000 u FFFF 字节型字节型byte8-128127短整型短整型short16-3276832767整型整型int32-2147483648 2147483647长整型长整型long64-2-63263-1浮点型浮点型float321.40129846432481707e-453.40282346638528860e+38 双精度型双精度型double644.94065645841246544e-3241.79769313486231570e+308d 第57页/共151页第58页/共15
33、1页强制类型转换强制类型转换 强制类型转换 从较长的数据类型转换成较短的数据类型时,必须做强制类型转换。 即将表达式的类型强制性地转换成某一数据类型。 强制类型转换的格式 (数据类型)表达式 第59页/共151页【例例3-6】数据转换类型的代码。数据转换类型的代码。public static void main(String args) int iVal=258;long lVal=1000;short sVal=12;byte bVal = 2;char cVal = a;float fVal = 5.67f;double dVal = .1234;lVal=iVal; dVal = fVa
34、l; System.out.println(lVal+,+dVal);/自动转换, lVal的值是258。dVal的值是5.67第60页/共151页bVal=(byte) iVal; System.out.println(bVal); /当值258被强制转换为byte变量时,其结果是258除以256的余数2iVal=(int)lVal; iVal=cVal+1; System.out.println(iVal);lVal=(long) fVal;System.out.println(lVal);bVal = (byte) (bVal * 2);System.out.println(bVal);
35、 【例例3-6】数据转换类型的代码。数据转换类型的代码。/强制转换/自动转换。 将a对应的16 位的Unicode值97转换为32位的int型 , 与1 相加,iVal的值是98/变量fVal 被强制转换为long型,舍弃了小数部分。LVal的值是5/强制转换第61页/共151页 bVal = bVal * 2 ; /Compiling Error. Cannot assign an int to a bytebVal = (byte) (bVal * 2) ; / /强制转换【例例3-6】数据转换类型的代码。数据转换类型的代码。第62页/共151页第63页/共151页3.3.9 语句和块语句
36、和块 一个基本的语句以分号; ;结尾。 语句 表达式语句 空语句 复合语句 声明语句 选择语句 循环语句 跳转语句 方法调用语句第64页/共151页第65页/共151页语句和块语句和块3、复合语句(语句块) 将多条语句用 括起来,就构成复合语句。例如: int x, y, z; x = 5; y = 6; z = x + y;第66页/共151页例如,根据输入的x 值,求出y值。 - 1 (x0)统计出1+2+3+n之和。sum=0; sum=sum+i; 重复做累加(i从1 到n)3.4 算法的基本控制结构算法的基本控制结构 算法的基本控制结构有3种 顺序结构 选择结构 循环结构 三种基本结
37、构就构成了程序的控制流程第67页/共151页truefalsefalsetrue3.4 算法的基本控制结构算法的基本控制结构第68页/共151页3.4 算法的基本控制结构算法的基本控制结构与算法的基本控制结构相关的Java语句 分支语句:if-else, switch 循环语句:while, do-while, for 与程序转移有关的其它语句:break, continue, return第69页/共151页3.4.1 分支语句分支语句 分支语句提供了一种控制机制,使得程序根据相应的条件去执行对应的语句。 if语句 switch语句第70页/共151页1. if 语句的语句的3种形式种形式(
38、1) if (表达式) 语句例:if ( x y) z=x; else z=y;(3) if (表达式1) 语句1 else if (表达式2) 语句2 else if (表达式3) 语句3 else 语句 n例: if (x0) y=1;else if (x=0) y=0;else if (x-10) y= -1; -10 x=0 & score=100)switch(score/10)case 10: case 9: grade=A; break;case 8: grade=B; break;case 7: grade=C; break;case 6: grade=D; break;def
39、ault: grade=E;System.out.println(grade=+ grade);第78页/共151页3.4.2 循环语句循环语句 循环结构是在一定条件下,反复执行某段程序的流程结构,被反复执行的程序被称为循环体。 Java的循环语句共有3种 while语句 do-while语句 for语句 第79页/共151页1. while 语句语句while 语句形式 while (条件表达式) 语句执行顺序循环体可以是复合语句,其中必须含有改变条件表达式值的语句。第80页/共151页while 语句的使用语句的使用【例3-103-10】用whilewhile语句求1+2+1+2+100+
40、100的和。 当 i=n 时 sumsum+i i+sum 0, i 1输出sum循环前的初始化循环体循环后的处理第81页/共151页public class WhileTry public static void main(String args) int i,sum; sum=0; /累加和变量置0 i=1; /计数器i的初始值为1 while (i=100) sum+=i; i+; System.out.println(sum=+sum); sum=5050 如何求1+3+5+7+.+99=?如何求2+4+6+8+.+100=? while (i100) i=i+2; while (i=
41、100)i=i+2; i=2;while 语句的使用语句的使用第82页/共151页2. do-while 语句语句一般形式do 语句while (表达式)循环体可以是复合语句,其中必须含有改变条件表达式值的语句。执行顺序 与while语句的比较第83页/共151页public class DoWhileTry public static void main(String args) int i,sum; sum=0; /累加和变量置0 i=1; /计数器i的初始值为1 do sum+=i; i+; while (i=100); System.out.println(sum=+sum); 2.d
42、o-while 语句语句第84页/共151页【例3-12】输入一个整数,将各位数字反转后输出。 例如:12345 54321 分析: 采用不断除以10取余数的方法,直到商数等于0为止。并规定整数n为0,输出0。输入n;rightDigit=n%10; 重复此过程直到n等于0为止输出rightDigit;n=n/10;String output=;do rightDigit=n%10; output=output+rightDigit; n=n/10; while (n!=0);当(n!=0)第85页/共151页import javax.swing.JOptionPane; class Reve
43、rseDigits public static void main(String args) int rightDigit; Scanner scn = new Scanner(System.in); System.out.println(输入一个数); int n= scn.nextInt(); do rightDigit=n%10; System.out.print(rightDigit); n=n/10; while (n!=0); 【例3-12】输入一个整数,将各位数字反转后输出。第86页/共151页3. for语句语句语法形式: for (for (表达式1 1;表达式2 2;表达式
44、3) 3) 语句 为true时执行循环体每次执行完循环体后求解.用于改变循环控制变量的值 执行顺序循环前先求解, 完成初始化循环变量和其他变量例: for(i=1; i=100; i+) sum+=i;第87页/共151页【例例3-13】用用for语句求语句求1+2+100的和。的和。如何求1+3+5+7+.+99=?如何求2+4+6+8+.+100=?public class ForTry public static void main(String args) int i,sum; sum=0; for(i=1; i=100; i+) sum+=i; System.out.println(
45、sum=+sum); 第88页/共151页【例3-143-14】输入一个整数,求出它的所有因子。 分析:使用穷举法对1n的全部整数判断,如果能整除n的均是n的因子。 public static void main(String args) Scanner scn = new Scanner(System.in); System.out.println(输入一个数); int n= scn.nextInt(); for(int k=1; k=n; k+) if(n%k=0) System.out.print(k+ ); 第89页/共151页关于关于for语句的几点说明语句的几点说明 (1)for
46、语句的三个表达式可以为空(但分号不能省略) for (; ;) 语句; /相当于 while (true) 语句; for (; i=100;) 语句; /相当于 while (i=100) 语句;(2)在表达式1和表达式3的位置上可包含多个语句 sum=0; for(int i=1; i=100; i+) /在for语句中声明循环控制变量并赋初值 sum+=i; for(sum=0, int i=1; i=100; i+) sum+=i; System.out.println(i); /!Error第90页/共151页 sum=0; i=1 /在for语句之前给循环控制变量赋初值 for (
47、; i100; i+) sum=sum+i; /省略表达式1 i=1 /在for语句之前给循环控制变量赋初值 for (sum=0; i100; i+) /表达式1与循环控制变量无关 sum=sum+i; for (sum=0, i=1; i100; ) /省略表达式3 sum=sum+i; i+; /在循环体中改变循环控制条件 for( i=0, j=10; ij; i+, j-) / 表达式1和表达式3可以是逗号表达式 关于关于for语句的几点说明语句的几点说明第91页/共151页4、循环的嵌套、循环的嵌套 循环的嵌套:一个循环体内又包含另一个完整的循环结构。 三种循环语句(while循环
48、, do-while循环和for循环)它们可以相互嵌套使用。 第92页/共151页【例例3-15】打印出星星菱型图案。打印出星星菱型图案。 分析 画出上半部分4 4行图案: :i =1 to 4 画出下半部分3 3行图案: : i=3 to 1 n 画空格:4-i 个;n 画星号:2*i-1 个n 换行n 画空格:4-i 个;n 画星号:2*i-1 个n 换行for(i=1;i=4;i+) /画上面4行 for(j=1;j=4-i;j+) System.out.print(“ ”); for(j=1;j=2*i-1;j+) System.out.print(“*”); System.out.p
49、rintln(); 第93页/共151页5、跳转语句、跳转语句 用于改变程序控制流 break语句语句 continue语句语句 return循环 break体循环条件true循环 continue体循环条件true第94页/共151页(1) continue语句语句 continue语句只能出现在循环体中 结束本轮循环,接着开始判断决定是否执行下一轮循环。 continue语句的语法格式 continue 标号;第95页/共151页continue语句语句 不带标号的continue语句:终止当前这一轮循环,跳过本轮剩余的语句,直接进入当前循环的下一轮。 在for循环中,不带标号的conti
50、nue语句会跳转至表达式3,计算修改循环变量后再判断循环条件。 在while或do while循环中,不带标号的continue语句会使流程直接跳转至条件表达式。 第96页/共151页【例例3-16】使用不带标号的使用不带标号的continue语句的一个程序段。语句的一个程序段。int count;for (count=1;count=10;count+) if (count=5) continue; System.out.println(count + ); System.out.println(count=+count);程序段的运行输出结果如下:1 2 3 4 6 7 8 9 10 co
51、unt=11 第97页/共151页(2)break语句语句 break语句仅出现在switch语句或循环体中。 作用:使程序的流程从一个语句块内部跳转出来,即从switch语句的分支中跳出,或从循环体内部跳出。 break语句的语法格式 break 标号;循环 break体循环条件true第98页/共151页【例例3-18】使用不带标号的使用不带标号的break语句语句的一个程序段。的一个程序段。int count;for (count=1; count=10; count+) if (count=5) break; System.out.println(count + ); System.o
52、ut.println(count=+count);程序段的运行输出结果如下:1 2 3 4 count=5第99页/共151页【例例3-19】使用带标号的使用带标号的break语句的语句的一个程序段。一个程序段。 stop:for (int i=1; i=10; i+) for (int j=1; j=5; j+) if (i=5) break stop; System.out.print( * ); System.out.println(); * 第100页/共151页第101页/共151页3.5 方法方法 对象的行为在Java中由方法来实现。一个方法(在其它语言中也称做函数或过程)往往完成
53、一个具体的、独立的功能。 方法编写好后,可以被重复地使用;使用时只关心方法的功能和使用方法,而不必关心方法功能的具体实现,这样可有利于代码的重用,提高程序的开发效率。-对不同的数据进行相同的加工处理。第102页/共151页3.5 方法方法 方法的声明 方法的调用 方法的参数传递 方法的重载 方法的嵌套与递归第103页/共151页3.5.1 方法的声明方法的声明 方法的声明格式: 返回值类型 方法名( 形式参数表 ) /方法头 语句序列 /方法体 (1)返回值类型:规定了方法返回给调用者的结果值类型。若方法无返回值,必须写void。方法的返回类型不是void类型,则这个方法的方法体中必须包含一个
54、 return 表达式;方法声明和调用的例子:求阶乘n!long factor(int n) long s; for (i=1; ib) return a; else return b; int x, y, z, m;x=10; y=89; z=-78;m=max(max(x,y),z);第106页/共151页3.5.1 方法的声明方法的声明(4)方法头与方法体:方法声明的第一行是方法头,花括号中的语句序列构成了方法体。 方法头定义了方法的名称、怎样调用它、返回什么类型的数据。 方法体定义具体实现功能的代码,对调用者而言,只需要关心方法头,而无需关心方法体。第107页/共151页3.5.2 方
55、法的调用方法的调用 方法调用的格式 (1) 方法名(实参表) (2) 通过对象调用非静态方法 对象的引用名.方法名(实参表) (3) 通过类名调用静态方法 类名.方法名(实参表) 实参表是用逗号分开的实参。要求实参表和方法声明中的形参表的形参类型和形参个数完全相同。 如果方法的调用无返回值(void), 方法调用可作为一条语句单独出现在程序中。 System.out.println( factor(5) ); String s=“ab”; /s=new String(“ab”); System.out.println( s.length() ); JOptionPane.showInputDi
56、alog( Input a integer number:);第108页/共151页方法的声明和调用例子方法的声明和调用例子int max(int a, int b) if (ab) return a; else return b; int x, y, z, m;x=10; y=89; z=-78;m=max(x,y,x)+2; /errorlong l1=2000, l2=300;l=max(l1,l2)-5; /errorint i=max(1, 2);long max(long a, long b) if (ab) return a; else return b; int i=max(1
57、, 2);合法,系统会进行隐含类型转换第109页/共151页【例例3-20】输出输出10000之内的所有完全数。之内的所有完全数。 完全数:所有因子和(包括1但不包括这个数本身)与其自身相同的数。例如6123,6123,则6是一个完全数。定义两个方法: boolean isPerfect(int x):用于判断x是否完全数。 void displayPerfect(int x):用于输出x的因子之和的公式。 在main()方法中使用一个for循环,检查1到10000之间的所有整数是否是完全数。 第110页/共151页【例例3-20】输出输出10000之内的所有完全数。之内的所有完全数。publ
58、ic static void main(String args) for(int i=1; i=10000; i+)if(isPerfect(i)displayPerfect(i);static void displayPerfect(int x) /输出x的因子之和的公式System.out.print(x+ = );for(int i=1; ix; i+)if(x%i=0) if (i!=1) System.out.print(“+”); /输出因子前的加号 System.out.print(i); System.out.println();static boolean isPerfect
59、(int x)int sum=0;for(int i=1; i1)求阶乘n!的递归方法的声明:long factorial(int n) /方法声明 if(n = 1) return 1; /递归终结点 else return n*factorial (n-1); /递归调用自身第118页/共151页递归递归 调用语句y=factorial(5);的执行过程 long factorial(int n) if(n = 1) return 1; else return n*factorial (n-1); 第119页/共151页3.5.6 变量声明的作用域变量声明的作用域(1)参数声明的作用域是声
60、明方法所在的方法体。(2)局部变量在方法或方法中的一块代码中声明,它的作用域为它所在的代码块(整个方法或方法中的某块代码)。(3)在带标号的break和continue语句中,标号的作用域是带标号结构范围的语句(即带标号语句的主体)。(4)出现在for结构头初始化部分的局部变量,其作用域是for结构体和结构体头中的其它表达式。(5)catch语句中的异常处理参数将传递给异常处理代码块,它的作用域就是catch的异常处理块。(6)类中的方法和属性,它们的作用域是整个类。这种作用域使一个类的方法可以用简单的名称调用类中声明的其它方法以及该类继承的方法,并使之能直接访问在该类中声明的属性。第120页
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 正规担保借款合同模板6篇
- 罕见病门诊管理办法
- 质量改善与管理办法
- 营销人员服装管理办法
- 郑州医院租赁合同范本(含医疗服务协议)
- 预拌混凝土产品质量控制与追溯服务合同
- 【九】建设工程造价咨询合同2篇
- 2026年高考物理一轮复习 力学实验(含解析)
- 5G+环保服务的创新发展-洞察及研究
- 2025年高级卫生专业技术资格考试儿科护理(050)(副高级)试题及解答
- 《班级植物角我养护》(课件)-二年级上册劳动浙教版
- 五金O2O模式-洞察分析
- 《管理咨询实践》课件
- 反恐防暴应急知识培训
- 《跨境电商基础与实务》全套教学课件
- 《网络综合布线系统工程技术实训教程(第5版)》 课件 第2章 网络综合布线系统工程技术常用标准
- GB/T 8574-2024复合肥料中钾含量的测定
- 习作:猜猜他是谁课件
- 2024-2030年中国汽车金融行业市场深度分析及竞争格局与发展前景展望研究报告
- 光伏组件回收再利用建设项目可行性研究报告写作模板-拿地申报
- 舞蹈培训机构用工合同
评论
0/150
提交评论