1、第第3 3章章 JavaJava程序设计基础程序设计基础 本章知识点本章知识点nJava程序的组成结构nJava基本数据类型的常量与变量nJava的各种运算符与表达式n实现三种基本控制结构的Java语句n类中方法的定义及调用n一维数组和二维数组的定义和使用3.1 Java程序的组成程序的组成/FileStructure.javapackage myPackage;import javax.swing.JOptionPane;/导入类JOptionPanepublic class FileStructure public static void main(String args)JOptionP
2、ane.showMessageDialog(null,欢迎你学习Java程序基础!);System.exit(0);/终止应用程序 【例【例3-1】Java程序的结构包的认识。此程序编译后生成的字节码文件FileStructure.class放入包myPackage中3.1 Java程序的组成程序的组成nJava源程序的3个要素(1)包声明包声明(package statement)-可选;(2)任意数量的导入语句导入语句(import statements)-可选;(3)任意数量的类定义类定义和接口定义接口定义。n说明n3个要素只能按上述顺序出现。n每个源文件最多只能有一个public类或接
3、口,且此时源文件只能以这个public类或接口命名。n类或接口中包括成员(属性和方法)及语句,组成它们的语言单位包括常量、变量、表达式、关键字等。1、Java字符集字符集n大小写的英文字母大小写的英文字母:A Z,a zn数字字符数字字符:09n特殊字符特殊字符:空格 !#%&$_(_(下划线下划线)+)+*=-/“;.,()2、词法记号、词法记号 n关键字关键字:Java:Java预定义的单词。预定义的单词。n标识符标识符:程序员声明的单词,命名程序正文中的一些实体。程序员声明的单词,命名程序正文中的一些实体。如类名、变量名、方法名、对象名等。如类名、变量名、方法名、对象名等。n常常 量量:
4、在程序中直接使用符号表示的数据。在程序中直接使用符号表示的数据。(文字)(文字)包括包括:数字、字符、字符串和布尔型文字。数字、字符、字符串和布尔型文字。如如:123:123,4.564.56,AA,”Hello”Hello”,truetruen操作符操作符:用于各种运算的符号,如:用于各种运算的符号,如:+,-,*等。等。n分隔符分隔符:用于分隔各个词法记号或程序正文。用于分隔各个词法记号或程序正文。如:(如:(),:;n空白符空白符:用于指示单词的开始和结束位置。用于指示单词的开始和结束位置。空格(空格(spacespace)、制表符()、制表符(TABTAB键产生的字符)、键产生的字符)
5、、换行符(换行符(EnterEnter键所产生的字符)和注释的总称。键所产生的字符)和注释的总称。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 length native newnull package private public protected retu
6、rnswitch synchronized short static super try true this throw throws thread safe transient void while4、标识符、标识符(identifier)JavaJava标识符的构成规则标识符的构成规则:n以字母、下划线(_)或美元符$开始。n可以由大写字母、小写字母、下划线(_)、数字09组成。n不能是Java的关键字。n大写字母和小写字母代表不同的标识符。n标识符的长度是任意的。n不要使用系统预定义的符号,以免引起混淆。n例如:true、false、null代表的是特殊的值,不是关键字,但用户也不要使用
7、这些名字。标识符的作用标识符的作用:用于标记程序中的名字,类名、变量名、常量名、方法名等。4、标识符、标识符identifier,userNameidentifier,userName,User_Name,User_Name,_sys_value,$change_sys_value,$change2mail,room#,class2mail,room#,class合法的标识符非法的标识符4、标识符、标识符nJava中的命名规则n类名类名:使用名词,含有大小写字母,每个词的首字母大写。如HelloWorld。n方法名方法名:使用动词,含有大小写字母,首字母小写,其余各词的首字母大写。大写字母做词
8、之间的间隔。不要使用下划线。如getName、setAddress、search。n简单类型常量名简单类型常量名:应该全部为大写字母,词与词之间用下划线分隔。如PI、TIME_COMPAROR。n所有的对象、类和全局变量名所有的对象、类和全局变量名:使用混合大小写,首字母小写,变量中不要使用下划线。3.2 基本数据类型、变量与常量基本数据类型、变量与常量 nJava的数据类型n基本数据类型:Java语言本身定义的数据类型。n复合数据类型(引用类型):用户根据自己的需要定义的数据类型。Java的数据类型的数据类型数据数据类型类型基本数据类型基本数据类型复合数据类型复合数据类型类:类:class布
9、尔类型:布尔类型:boolean数组数组接口:接口:interface字符类型:字符类型:char数值类型数值类型浮点数类型:浮点数类型:float,double整数类型整数类型byte,short,int,long数据类型数据类型关键字关键字占用位数占用位数取值范围取值范围布尔型布尔型boolean8true,false字符型字符型char16u 0000 u FFFF 字节型字节型byte8-128127短整型短整型short16-3276832767整型整型int32-2147483648 2147483647长整型长整型long64-2-63263-1浮点型浮点型float321.40
10、129846432481707e-453.40282346638528860e+38 双精度型双精度型double644.94065645841246544e-3241.79769313486231570e+308d 3.2.1 基本数据类型基本数据类型3.2.2 常量常量n常量常量:在程序运行的整个过程中其值始终不可改变的量。例如,123,5.6,B都是常量。nJava中的常量分类n整型常量n浮点型常量n布尔常量n字符常量n字符串常量1.整型常量整型常量n包括正整数、负整数和零 nJava的整型常量的表示形式n十进制n八进制n十六进制 整型常量的不同进制的表示形式整型常量的不同进制的表示形式
11、n十进制形式:若干个09的数字 如:100,-50,0 n八进制形式:以0开头的若干个07的数字 如:0123表示十进制数83,-011表示十进制数-9。n十六进制形式:用0 x或0X开头的若干个 09,af,AF的的数字 如:0 x2F代表十进制的数字47。0 x123表示十进制数291,-0X12表示十进制数-18。整型常量的类型整型常量的类型n整型常量按照所占用的内存大小分类n整型(int)常量:占用32位。如123,-34 n长整型(long)常量:占用64位,长整型常量的尾部有一个大写的L或小写的l。如-386L,017777ln说明:java中的整型常量默认为int,表示long型
12、整数后面加后缀。2.浮点型常量浮点型常量n浮点型常量:表示可以含有小数部分的数值常量。n根据占用内存长度的不同分类n单精度浮点常量单精度浮点常量:占用32位内存,用F、f表示。如:如:19.4F,3.0513E3,8701.52fn双精度浮点常量双精度浮点常量:占用64位内存,用带D或d或不加后缀的数值表示,如:如:2.433E-5D,700041.273d,3.1415。n说明:在java中的实型常量默认为double,所以写单精度的实数时要在数字后面写f,如3.14f。浮点型常量的表示形式浮点型常量的表示形式n浮点常量两种表示形式 n一般形式一般形式:由数字和小数点组成。如0.123,1.
13、23,123.00.123,1.23,123.0。n指数形式指数形式:如:0.123e3表示0.123103,-35.4E-5表示-35.410-5,注意:其中e或E之前必须有数字,且e或E后面的指数必须为整数。3.字符常量字符常量n字符常量字符常量:用一对单引号括起的单个字符。n可见字符:a,Z,8,#n转义字符nnnt nddd :八进制表示一个字符nuxxxx:十六进制无符号整数,表示Unicode码。如如:101101 用八进制表示一个字符用八进制表示一个字符AA u0041 u0041 用用UnicodeUnicode码表示一个码表示一个AA3.字符常量字符常量三位8进制数表示的字符
14、 ddd 四位16进制数表示的字符反斜线单引号双引号回车表格符换行水平制表符tab退格含含义义 u005c u0027 u0022 u000d u000c u000a u0009 u0008对对应应Unicode码码 uxxxx ”r f n t b转转义义字字符符三位8进制数表示的字符 ddd 四位16进制数表示的字符反斜线单引号双引号回车表格符换行水平制表符tab退格含含义义 u005c u0027 u0022 u000d u000c u000a u0009 u0008对对应应Unicode码码 uxxxx ”r f n t b转转义义字字符符3.字符常量字符常量n字符数据在内存中的存储形
15、式:一个字符用两个字节的Unicode码表示。nUnicode码与ASCII的对应关系:高2位字节00,低2位字节是ASCII值。4.字符串常量字符串常量n字符串常量是用双引号括起的一串字符(可以0个)。例子:Hello,My nJava,How old are you?1234,My+namen注意:字符串常量是String类的对象。5.布尔常量布尔常量n布尔常量:true(真)和false(假)。n在流控制中经常用到布尔常量。if(条件)动作1 else 动作2n注意:Java是一种严格的类型语言,它不允许数值类型和布尔类型之间进行转换。3.2.3 变量变量n变量:在程序的运行过程中数值可
16、变的数据,用来记录运算中间结果或保存数据。n变量的声明变量的声明数据类型 变量名1,变量名2,变量名n;例如:int num,total;double d1;给变量分配 空间num:total:d1:4字节8字节byte,short,int,long,byte,short,int,long,float,double,char,booleanfloat,double,char,boolean复合类型复合类型3.2.3 变量变量例如:int num,total;double d1;num:total:d1:n变量遵循“先声明后使用”的原则。num=5;total=2*num;d1=-234.45;
17、num=6;K=90;/Error!Num=J+90+num;/Error!510-234.456不同类型变量占用的存储空间不同类型变量占用的存储空间数据类型关键字占用位数取值范围布尔型boolean8true,false字符型char16u 0000 u FFFF 字节型byte8-128127短整型short16-3276832767整型int32-2147483648 2147483647长整型long64-2-63263-1浮点型float321.40129846432481707e-453.40282346638528860e+38 双精度型double644.94065645841
18、246544e-3241.79769313486231570e+308d 3.2.3 变量变量n变量的初始化:声明变量时指定变量初值。例如:char a=a,b;double d1,d2=0.0;boolean flag=true;byte b1=255;byte b2=289;/Error!3.2.3 变量变量n变量的动态初始化:在变量声明时使用表达式初始化变量。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(
19、Hypotenuse is:+c);c被动态初始化3.2.4 符号常量符号常量 n符号常量:为常量起的名字。n符号常量声明 finalfinal 数据类型 常量名=缺省值;n注意:符号常量声明时一定要赋初值,而在程序的中间不能改变其值。例如: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 /错误【例【例3-2】变量声明和赋值。】变量声明和赋值。public class UseVariables public static void main(S
20、tring args)final int PRICE=30;/声明整型常量 long l=1234l;/声明长整型变量并赋值 int num,total;/声明整型变量 float r,v,h=3.5f;/声明浮点型变量,并给h赋值 double w=3.1415;/声明双精度型变量并赋值 boolean truth=true;/声明布尔类型变量并赋值 boolean false1;/声明布尔类型变量 char c;/声明字符类型变量 c=A;/给字符类型变量赋值。num=10;/给整型变量赋值 total=num*PRICE;r=2.5f;/给浮点型变量赋值 v=3.14159f*r*r*h
21、;false1=6 7;/给布尔类型变量赋值 String s=I am a student;/给字符串引用变量赋值 【例【例3-2】变量声明和赋值。】变量声明和赋值。3.3 运算符与表达式运算符与表达式 n运算符运算符:指明对操作数的运算方式。指明对操作数的运算方式。n按操作数的个数分按操作数的个数分:单目运算符单目运算符(如如-a)-a),双目运,双目运算符算符(如如a+ba+b),),三目运算符三目运算符(如如e1?e2:e3)e1?e2:e3)。n按功能分类按功能分类n算术运算符:算术运算符:+,*,/,%,+,n关系运算符:关系运算符:,=,b;3.3 运算符与表达式运算符与表达式n
22、表达式表达式:由运算符、操作数(常量、变量、方法调用)和圆括号组成的式子。n算术表达式算术表达式n赋值表达式赋值表达式3.3.1 算术运算符与算术表达式算术运算符与算术表达式 n算术运算符算术运算符:对整型或实型数据的运算。n算术运算符分类n双目运算符n单目运算符3.3.1 算术运算符与算术表达式算术运算符与算术表达式运算符运算例功能+加a+b求a与b相加的和-减a-b求a与b相减的差*乘a*b求a与b相乘的积/除a/b求a除以b的商%取余a%b求a除以b所得的余数n双目算术运算符双目算术运算符双目算术运算符双目算术运算符n注意注意(1)与C不同的是,Java中的“%”两个运算对象可以是实数。
23、13%5=3 23.6%12=11.6(2)两个整型的数据做“/”运算时,结果是截取商的整数部分,而小数部分被截断。2/4=0 2.0/4=0.5 算术运算符与算术表达式算术运算符与算术表达式n单目运算符:操作数只有一个。运算符运算例功能等价+自增a+或+aa=a+1-自减a-或-aa=a-1-求负数-aa=-a单目算术运算符单目算术运算符例如:int x=-1;x=-x;前缀前缀(+,-):(+,-):先执行单目运算,修改变量的值后用这个 新值参与表达式的运算。后缀后缀(+(+,-):先计算表达式的值,最后再修改变量的取值。自增和自减的操作对象操作对象只能是变量。int y=(+x)*3;i
24、nt y=(x+)*3;例如:int x=5;int y=(-x)*3;前缀和后缀运算符举例前缀和后缀运算符举例x为为4 y为为12x为为4 y为为15替换为 int y=(x-)*3;【例【例3-3】算术运算符的应用。】算术运算符的应用。n编写一个Java应用程序,在对话框中输入两个数字,输出其+、-、*、/、%运算的计算结果。n利用对话框,接受用户从键盘输入的两个数字组成的字符串。n把两个数字字符串转化为整型数值,并赋值给两个整型变量a和b。n以a和b为操作数进行算术运算,并在对话框中输出运算结果。n程序运行时,可输入任意两个整数,观察程序运行的不同结果。【例【例3-3】算术运算符的应用。
25、】算术运算符的应用。n利用对话框输入数据的方法 String JOptionPane.showInputDialog(String)nString:对话框中的提示文字n返回值:对话框接收的数据为字符串类型n将数字串转化为数字的方法int Integer.parseInt(String)n在对话框中显示数据的方法 JOptionPane.showMessageDialog(Compoment,object,String ,JOptionPane.PLAIN_MESSAGE);【例【例3-3】算术运算符的应用。】算术运算符的应用。import java.util.Scanner;public cl
26、ass 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+=+(a*b)+n;str=str+a+/+b+=+(a/b)+n;str=str+a+%+b+=+(a%b)+n;Syste
27、m.out.println(str);3.3.2 赋值运算符与赋值表达式赋值运算符与赋值表达式例如,i=5 /赋值表达式的值是5 Java中赋值运算符:=、+=、-=、*=等。赋值表达式:带有赋值运算符的表达式。赋值表达式的含义:等号右边表达式的值赋给等号左边的变量。赋值表达式的类型:等号左边变量的类型。赋值运算的结合性:自右向左。3.3.2 赋值运算符与赋值表达式赋值运算符与赋值表达式i=1;i=j=k=1;i=2+(j=4);i=(j=10)*(k=2);Java中提供了复合赋值运算符形式 =/表达式值为表达式值为1/表达式值为表达式值为1,i,j,k的值为的值为1/表达式值为表达式值为6
28、,j的值为的值为4,i的值为的值为6/表达式值为表达式值为20,j的值为的值为10,k的值为的值为2,i的值为的值为203.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)3.3.3 关系运算符与关系表达式关系运算符与关系表达式n关系运算:比较两个数据之间的大小关系的运算。n关系运算的结果:布尔型的量(true或false)。例如:例如:int x=5,y=7;bool
29、ean b=(x=y);关系运算符关系运算符 运算符运算例=等于a=b!=不等于a!=b大于ab小于a=大于等于a=b=小于等于a1)&(5-4)!false3.3.4 逻辑运算符与逻辑表达式逻辑运算符与逻辑表达式n逻辑运算符与布尔逻辑运算符的区别逻辑运算符与布尔逻辑运算符的区别n逻辑运算符:逻辑运算符:&|利用它们做逻辑运算时,运算时右边的表达式有可能被忽略(短路)而不加执行。n布尔逻辑运算符:布尔逻辑运算符:&、|、利用它们做与、或、异或运算时,运算符左右两边的表达式总会被运算执行,然后再对两表达式的结果进行与、或运算。e1&e2e1&e2false3.3.4 逻辑运算符与逻辑表达式逻辑运
30、算符与逻辑表达式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为false 短路短路3.3.4 逻辑运算符与逻辑表达式逻辑运算符与逻辑表达式n逻辑表达式逻辑表达式:由逻辑运算符、关系表达式、逻辑值构成。例如:例如:int x=12,y=13;float a=1,b=2;x=y&a b!(a=b)x y&(a+3)b|!(x=a)3.3.6 其它运算符其它运算符 n条件运算符与条件表达式条件运算符与条件表达式 e1?e2:e3ne1 为 boolean 类型ne2与e3的类型相同
31、n执行顺序n若e1的值为true,e2的值为最终结果n若e1的值为false,e3的值为最终结果例如:y=x=0?x:-x max=xy?x:y3.3.6 其它运算符其它运算符n括号括号()n方括号方括号 n 对象运算符对象运算符 instanceof boolean b=MyObject instanceof TextField;ninstanceof用来测定一个对象是否是某一个指定类或其子类的实例。3.3.7 运算符的优先级与结合性运算符的优先级与结合性n表达式的运算次序表达式的运算次序:取决于表达式中各种运算符的优先级。优先级高的运算符先运算,优先级低的运算符后运算,同一行中的运算符的优
32、先级相同。n运算符的结合性运算符的结合性:决定了并列的相同运算符的先后执行顺序。Java运算符的优先级与结合性运算符的优先级与结合性 右左=+=-=*=/=%=赋值运算14右左?:三目条件运算13左右|逻辑或12左右&逻辑与11左右|按位或,布尔逻辑或10左右按位异或9左右&按位与,布尔逻辑与8左右=!=相等关系运算7左右 =关系运算6左右 移位运算5左右+-算术加减运算4左右*/%算术乘除运算3右左+(正号)(负号)+-!强制类型转换符单目运算2左右.()最高优先级1结合性运算符描述优先级右左=+=-=*=/=%=赋值运算14右左?:三目条件运算13左右|逻辑或12左右&逻辑与11左右|按位
33、或,布尔逻辑或10左右按位异或9左右&按位与,布尔逻辑与8左右=!=相等关系运算7左右 =关系运算6左右 移位运算5左右+-算术加减运算4左右*/%算术乘除运算3右左+(正号)(负号)+-!强制类型转换符单目运算2左右.()最高优先级1结合性运算符描述优先级高高低低Java运算符的优先级与结合性运算符的优先级与结合性n例如 x y&!z 相当于 (x y)&(!z)x+y+z 等价于 (x+y)+z !x 等价于 !(!x)3.3.8 混合运算时数据类型的转换混合运算时数据类型的转换 n当表达式中出现了多种类型数据的混合运算时,需要进行类型转换。nJava的类型转换是一种加宽转换加宽转换n隐含
34、转换隐含转换:从占用内存较少的短数据类型转化成占用内存较多的长数据类型时,可以不做显式的类型转换声明。例如例如,long lVal=1000;int ival=200;lVal=ival;double d1=123.5f;基本类型数据占有的内存宽度基本类型数据占有的内存宽度数据类型数据类型关键字关键字占用位数占用位数取值范围取值范围布尔型布尔型boolean8true,false字符型字符型char16u 0000 u FFFF 字节型字节型byte8-128127短整型短整型short16-3276832767整型整型int32-2147483648 2147483647长整型长整型long
35、64-2-63263-1浮点型浮点型float321.40129846432481707e-453.40282346638528860e+38 双精度型双精度型double644.94065645841246544e-3241.79769313486231570e+308d 隐含转换隐含转换n算术运算符、赋值运算符、关系运算符、逻辑运算符和位运算符,这些二元运算符要求两个操作数的类型一致。如果类型不一致,编译系统会自动对数据进行类型转换。n隐含转换隐含转换的规则的规则 低 高 byte short char int float double强制类型转换强制类型转换n强制类型转换强制类型转换n从
36、较长的数据类型转换成较短的数据类型时,必须做强制类型转换。即将表达式的类型强制性地转换成某一数据类型。n强制类型转换的格式 (数据类型)表达式【例【例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=fVal;System.out.println(lVal+,+dVal);/自动转换自动转换,l
37、Val的值是的值是258。dVal的值是的值是5.67bVal=(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);【例【例3-6】数据转换类型的代码。】数据转换类型的代码。/强制转换强制转
38、换/自动转换。自动转换。将将a对应的对应的16 位的位的Unicode值值97转换转换为为32位的位的int型型,与与1 相加,相加,iVal的值是的值是98/变量变量fVal 被强制转换为被强制转换为long型,舍弃了小数部分。型,舍弃了小数部分。LVal的值是的值是5/强制转换强制转换 bVal=bVal*2;/Compiling Error.Cannot assign an int to a bytebVal=(byte)(bVal*2);/强制转换强制转换【例【例3-6】数据转换类型的代码。】数据转换类型的代码。3.3.9 语句和块语句和块n一个基本的语句以分号;结尾。n语句n表达式语
39、句n空语句n复合语句n声明语句n选择语句n循环语句n跳转语句n方法调用语句语句和块语句和块1 1、表达式语句:、表达式语句:一个合法的表达式加上分号。2 2、空语句、空语句 例如:a+b;a+b*c+f;语句和块语句和块3、复合语句(语句块)复合语句(语句块)将多条语句用 括起来,就构成复合语句。例如:int x,y,z;x=5;y=6;z=x+y;例如,根据输入的例如,根据输入的x 值,求出值,求出y值。值。-1 (x0)统计出统计出1+2+3+n之和。之和。sum=0;sum=sum+i;重复做累加(i从1 到n)3.4 算法的基本控制结构算法的基本控制结构n 算法的基本控制结构有3种n
40、顺序结构n 选择结构n 循环结构n三种基本结构就构成了程序的控制流程truefalsefalsetrue3.4 算法的基本控制结构算法的基本控制结构3.4 算法的基本控制结构算法的基本控制结构 与算法的基本控制结构相关的与算法的基本控制结构相关的Java语句语句 分支语句:if-else,switch 循环语句:while,do-while,for 与程序转移有关的其它语句:break,continue,return3.4.1 分支语句分支语句 n分支语句提供了一种控制机制,使得程序根据相应的条件去执行对应的语句。nif语句nswitch语句1.if 语句的语句的3种形式种形式(1)if (表
41、达式)语句例: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;default:grade=E;System.out.println(grade
42、=+grade);3.4.2 循环语句循环语句 n循环结构是在一定条件下一定条件下,反复执行某段程序的流程结构,被反复执行的程序被称为循环体。循环体。nJava的循环语句共有3种nwhile语句ndo-while语句nfor语句 1.while 语句语句while 语句形式 while (条件表达式)语句语句执行顺序循环体循环体可以是复合语句,其中必须含有改变条件表达式值的语句。while 语句的使用语句的使用【例【例3-103-10】用】用whilewhile语句求语句求1+2+1+2+100+100的和。的和。当 i=n 时 sumsum+i i+sum 0,i 1输出sum循环前的初始化
43、循环体循环后的处理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)while(i100)i=i+2;while(i=100)i=i+2;i=2;while 语句的使用语句的使用2.do-while 语句语句一般
44、形式do 语句while(表达式)循环体可以是复合语句,其中必须含有改变条件表达式值的语句。执行顺序 与while语句的比较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.do-while 语句语句【例【例3-12】输入一个整数,将各位数字反转后输出。】输入一个整数,将各位数字反转后输出。n 例如:12
45、345 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)import javax.swing.JOptionPane;class ReverseDigits public static void main(String args)int right
46、Digit;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】输入一个整数,将各位数字反转后输出。】输入一个整数,将各位数字反转后输出。3.for语句语句语法形式:for (for (表达式表达式1 1;表达式表达式2 2;表达式;表达式3)3)语句语句 为为true时执行循环体时执行循环体每次执行完循环体后求解每次执行完循
47、环体后求解.用于改变循环控制变量的值用于改变循环控制变量的值 执行顺序循环前先求解循环前先求解,完成初始化循环变量和其他变量完成初始化循环变量和其他变量例例:for(i=1;i=100;i+)sum+=i;【例【例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(sum=+su
48、m);【例【例3-143-14】输入一个整数,求出它的所有因子。】输入一个整数,求出它的所有因子。n分析:使用穷举法对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+);关于关于for语句的几点说明语句的几点说明(1)for语句的三个表达式可以为空(但分号不能省略)for
49、(;)语句;/相当于 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 sum=0;i=1 /在在for语句之前给循环控制变量赋初值语句之前给循环控制变量赋初值 for(;i100;i+)sum=sum+i;/省略表达式省略表达式1
50、 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语句的几点说明语句的几点说明4、循环的嵌套、循环的嵌套 n循环的嵌套:一个循环体内又包含另一个完整的循环结构。n三种循环语句(while