版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章 Java程序设计基础 本章知识点Java程序的组成结构Java基本数据类型的常量与变量Java的各种运算符与表达式实现三种基本控制结构的Java语句类中方法的定义及调用一维数组和二维数组的定义和使用3.1 Java程序的组成/FileStructure.javapackage myPackage;import javax.swing.JOptionPane; /导入类JOptionPanepublic class FileStructure public static void main( String args) JOptionPane.showMessageDialog( null
2、, 欢迎你学习Java程序基础!); System.exit(0); / 终止应用程序 【例3-1】 Java程序的结构包的认识。此程序编译后生成的字节码文件FileStructure.class放入包myPackage中3.1 Java程序的组成Java源程序的3个要素(1)包声明(package statement)-可选; (2)任意数量的导入语句(import statements)-可选;(3)任意数量的类定义和接口定义。说明3个要素只能按上述顺序出现。每个源文件最多只能有一个public类或接口,且此时源文件只能以这个public类或接口命名。类或接口中包括成员(属性和方法)及语句
3、,组成它们的语言单位包括常量、变量、表达式、关键字等。1、Java字符集大小写的英文字母:A Z,a z数字字符:09特殊字符: 空格 ! # % & $ _(下划线) + * = - / “ ; .,( ) 2、词法记号 关键字:Java预定义的单词。 标识符:程序员声明的单词,命名程序正文中的一些实体。 如类名、变量名、方法名、对象名等。常 量:在程序中直接使用符号表示的数据。 (文字)包括:数字、字符、字符串和布尔型文字。 如:123,4.56,A,”Hello”,true操作符:用于各种运算的符号,如:+,-,*等。分隔符:用于分隔各个词法记号或程序正文。 如:( ) , : ; 空白
4、符:用于指示单词的开始和结束位置。 空格(space)、制表符(TAB键产生的字符)、 换行符(Enter键所产生的字符)和注释的总称。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
5、 protected returnswitch synchronized short static super try true this throw throws thread safe transient void while4、标识符(identifier)Java标识符的构成规则:以字母、下划线(_)或美元符$开始。 可以由大写字母、小写字母、下划线(_)、数字09组成。 不能是Java的关键字。 大写字母和小写字母代表不同的标识符。 标识符的长度是任意的。不要使用系统预定义的符号,以免引起混淆。例如:true、false、null代表的是特殊的值,不是关键字,但用户也不要使用这些名字
6、。标识符的作用:用于标记程序中的名字,类名、变量名、常量名、方法名等。4、标识符identifier ,userName , User_Name, _sys_value, $change2mail, room#, class合法的标识符非法的标识符4、标识符Java中的命名规则类名:使用名词,含有大小写字母,每个词的首字母大写。如HelloWorld。方法名:使用动词,含有大小写字母,首字母小写,其余各词的首字母大写。大写字母做词之间的间隔。不要使用下划线。如getName、setAddress、search。简单类型常量名:应该全部为大写字母,词与词之间用下划线分隔。如PI、TIME_COM
7、PAROR。所有的对象、类和全局变量名:使用混合大小写,首字母小写,变量中不要使用下划线。3.2 基本数据类型、变量与常量 Java的数据类型基本数据类型:Java语言本身定义的数据类型。 复合数据类型(引用类型):用户根据自己的需要定义的数据类型。 Java的数据类型数据类型基本数据类型复合数据类型类:class布尔类型:boolean数组接口:interface字符类型:char数值类型浮点数类型:float,double整数类型byte,short,int,long数据类型关键字占用位数取值范围布尔型boolean8true, false字符型char16u 0000 u FFFF 字节
8、型byte8-128127短整型short16-3276832767整型int32-2147483648 2147483647长整型long64-2-63263-1浮点型float321.40129846432481707e-453.40282346638528860e+38 双精度型double644.94065645841246544e-3241.79769313486231570e+308d 3.2.1 基本数据类型3.2.2 常量常量: 在程序运行的整个过程中其值始终不可改变的量。例如,123,5.6,B都是常量。Java中的常量分类整型常量浮点型常量布尔常量字符常量字符串常量1. 整
9、型常量包括正整数、负整数和零 Java的整型常量的表示形式十进制八进制十六进制 整型常量的不同进制的表示形式十进制形式 : 若干个09的数字 如:100,-50, 0 八进制形式: 以0开头的若干个07的数字 如:0123表示十进制数83, -011表示十进制数-9。 十六进制形式:用0 x或0X开头的若干个 09, af, AF的的数字 如:0 x2F代表十进制的数字47。 0 x123表示十进制数291, -0X12表示十进制数-18。 整型常量的类型整型常量按照所占用的内存大小分类整型(int)常量:占用32位。 如123,-34 长整型(long)常量:占用64位,长整型常量的尾部有一
10、个大写的L或小写的l。 如-386L,017777l说明:java中的整型常量默认为int,表示long型整数后面加后缀。2. 浮点型常量浮点型常量:表示可以含有小数部分的数值常量。根据占用内存长度的不同分类单精度浮点常量:占用32位内存,用F、f表示。如:19.4F,3.0513E3,8701.52f双精度浮点常量:占用64位内存,用带D或d或不加后缀的数值表示, 如:2.433E-5D,700041.273d,3.1415。说明:在java中的实型常量默认为double,所以写单精度的实数时要在数字后面写f,如3.14f。浮点型常量的表示形式浮点常量两种表示形式 一般形式:由数字和小数点组
11、成。 如0.123, 1.23, 123.0。指数形式: 如:0.123e3表示0.123103, -35.4E-5表示-35.410-5, 注意:其中e或E之前必须有数字,且e或E后面的指数必须为整数。 3.字符常量字符常量:用一对单引号括起的单个字符。可见字符:a,Z,8,# 转义字符nt ddd : 八进制表示一个字符uxxxx: 十六进制无符号整数,表示Unicode码。 如: 101 用八进制表示一个字符A u0041 用Unicode码表示一个A3.字符常量3.字符常量字符数据在内存中的存储形式:一个字符用两个字节的Unicode码表示。Unicode码与ASCII的对应关系:高2
12、位字节00,低2位字节是ASCII值。4.字符串常量字符串常量是用双引号括起的一串字符(可以0个)。 例子:Hello, My nJava, How old are you? 1234, My + name注意:字符串常量是String类的对象。5.布尔常量布尔常量:true(真)和false(假)。在流控制中经常用到布尔常量。 if (条件) 动作1 else 动作2注意:Java是一种严格的类型语言,它不允许数值类型和布尔类型之间进行转换。 3.2.3 变量变量:在程序的运行过程中数值可变的数据, 用来记录运算中间结果或保存数据。变量的声明数据类型 变量名1,变量名2,变量名n;例如:in
13、t num,total;double d1;给变量分配 空间num:total:d1:4字节8字节byte,short,int,long, float,double,char,boolean复合类型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不同类型变量占用的存储空间数据类型关键字占用位数取值范围布尔型boolean8true, false字符型ch
14、ar16u 0000 u FFFF 字节型byte8-128127短整型short16-3276832767整型int32-2147483648 2147483647长整型long64-2-63263-1浮点型float321.40129846432481707e-453.40282346638528860e+38 双精度型double644.94065645841246544e-3241.79769313486231570e+308d 3.2.3 变量变量的初始化 :声明变量时指定变量初值。例如: char a= a, b; double d1, d2=0.0; boolean flag=t
15、rue; byte b1=255; byte b2=289; /Error!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被动态初始化3.2.4 符号常量 符号常量:为常量起的名字。符号常量声明 final 数据类型 常量名=缺省值;注意:符号常量声明时一定要赋初值
16、,而在程序的中间不能改变其值。例如: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(String args) final int PRICE=30; /声明整型常量 long l=1234l; /声明长整型变量并赋值 int num,total; /声明整型变量 float r,v,h = 3.5f; /声
17、明浮点型变量,并给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; false1 = 6 7; / 给布尔类型变量赋值 String s=I am a student; /给字符串引用变量赋值 【例3-2】变量声明和赋值。3.3 运算符与
18、表达式 运算符: 指明对操作数的运算方式。 按操作数的个数分:单目运算符(如-a),双目运算符(如a+b),三目运算符(如e1?e2:e3)。按功能分类算术运算符: +,*,/,%,+,关系运算符: ,=,b;3.3 运算符与表达式表达式:由运算符、操作数(常量、变量、方法调用)和圆括号组成的式子。算术表达式赋值表达式3.3.1 算术运算符与算术表达式 算术运算符:对整型或实型数据的运算。 算术运算符分类双目运算符单目运算符3.3.1 算术运算符与算术表达式运算符运算例功能+加a + b求a与b相加的和-减a - b求a与b相减的差*乘a * b求a与b相乘的积/除a / b求a除以b的商%取
19、余a % b求a除以b所得的余数双目算术运算符双目算术运算符注意 (1)与C不同的是,Java中的“%”两个运算对象可以是实数。 13%5=3 23.6%12=11.6 (2)两个整型的数据做“/”运算时,结果是截取商的整数部分,而小数部分被截断。 2/4=0 2.0/4=0.5 算术运算符与算术表达式单目运算符:操作数只有一个。运算符运算例功能等价+自增a+或+aa = a + 1-自减a-或-aa = a - 1-求负数-aa = -a单目算术运算符例如: int x=-1; x = -x ; 前缀(+,-): 先执行单目运算,修改变量的值后用这个 新值参与表达式的运算。 后缀(+, -)
20、: 先计算表达式的值,最后再修改变量的取值。 自增和自减的操作对象只能是变量。 int y=(+x)*3; int y = (x+)*3; 例如: int x = 5 ; int y = (-x) * 3; 前缀和后缀运算符举例x为4 y为12x为4 y为15替换为 int y = (x-) * 3;【例3-3】算术运算符的应用。编写一个Java应用程序,在对话框中输入两个数字,输出其+、-、*、/、%运算的计算结果。利用对话框,接受用户从键盘输入的两个数字组成的字符串。把两个数字字符串转化为整型数值,并赋值给两个整型变量a和b。以a和b为操作数进行算术运算,并在对话框中输出运算结果。程序运行
21、时,可输入任意两个整数,观察程序运行的不同结果。 【例3-3】算术运算符的应用。利用对话框输入数据的方法 String JOptionPane.showInputDialog(String)String:对话框中的提示文字返回值:对话框接收的数据为字符串类型将数字串转化为数字的方法int Integer.parseInt(String)在对话框中显示数据的方法 JOptionPane.showMessageDialog(Compoment, object, String ,JOptionPane.PLAIN_MESSAGE);【例3-3】算术运算符的应用。import java.util.Sc
22、anner;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 + = + (a*
23、b) + n; str = str + a + / +b + = + (a/b) + n; str = str + a + % +b + = + (a%b) + n; System.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)
24、*(k=2); Java中提供了复合赋值运算符形式 = /表达式值为1 /表达式值为1 ,i,j,k的值为1/表达式值为6, 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 常用的复合赋值运算符例:a+=3 等价于 a=a+3 x*=y+8 等价于 x=x*(y+8)3.3.3 关系运算符与关系表达式关系运算:比较两个数据之间的大小关系的运
25、算。关系运算的结果:布尔型的量(true或false)。 例如: int x = 5, y = 7 ; boolean b = ( x = = y ) ;关系运算符 运算符运算例= =等于a=b! =不等于a!=b大于ab小于a=大于等于a=b=小于等于a1) & (5-4)! false3.3.4 逻辑运算符与逻辑表达式逻辑运算符与布尔逻辑运算符的区别逻辑运算符: & | 利用它们做逻辑运算时,运算时右边的表达式有可能被忽略(短路)而不加执行。布尔逻辑运算符:&、| 、 利用它们做与、或、异或运算时,运算符左右两边的表达式总会被运算执行,然后再对两表达式的结果进行与、或运算。e1 & e2e
26、1 & e2false3.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为false 短路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 )3.3.6 其它运算符 条件运算符与条件表达式 e1?e2:e3e1 为
27、boolean 类型e2与e3的类型相同执行顺序若e1的值为true,e2的值为最终结果若e1的值为false,e3的值为最终结果例如: y= x=0 ? x: -x max= xy ? x: y3.3.6 其它运算符括号 ( )方括号 对象运算符 instanceof boolean b = MyObject instanceof TextField; instanceof用来测定一个对象是否是某一个指定类或其子类的实例。3.3.7 运算符的优先级与结合性表达式的运算次序:取决于表达式中各种运算符的优先级。优先级高的运算符先运算,优先级低的运算符后运算,同一行中的运算符的优先级相同。运算符的
28、结合性:决定了并列的相同运算符的先后执行顺序。Java运算符的优先级与结合性 高低Java运算符的优先级与结合性例如 x y & ! z 相当于 ( x y ) & ( ! z ) x + y + z 等价于 ( x + y ) + z ! !x 等价于 !( ! x ) 3.3.8 混合运算时数据类型的转换 当表达式中出现了多种类型数据的混合运算时,需要进行类型转换。Java的类型转换是一种加宽转换隐含转换:从占用内存较少的短数据类型转化成占用内存较多的长数据类型时,可以不做显式的类型转换声明。例如,long lVal=1000;int ival=200;lVal=ival;double d
29、1=123.5f;基本类型数据占有的内存宽度数据类型关键字占用位数取值范围布尔型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 隐含转换算术运算符、赋值运算符
30、、关系运算符、逻辑运算符和位运算符,这些二元运算符要求两个操作数的类型一致。如果类型不一致,编译系统会自动对数据进行类型转换。 隐含转换的规则 低 高 byte short char int float double强制类型转换强制类型转换从较长的数据类型转换成较短的数据类型时,必须做强制类型转换。 即将表达式的类型强制性地转换成某一数据类型。强制类型转换的格式 (数据类型)表达式 【例3-6】数据转换类型的代码。public static void main(String args) int iVal=258;long lVal=1000;short sVal=12;byte bVal =
31、2;char cVal = a;float fVal = 5.67f;double dVal = .1234;lVal=iVal; dVal = fVal; System.out.println(lVal+,+dVal);/自动转换, lVal的值是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.ou
32、t.println(lVal);bVal = (byte) (bVal * 2);System.out.println(bVal); 【例3-6】数据转换类型的代码。/强制转换/自动转换。 将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】数据转换类型的代
33、码。3.3.9 语句和块一个基本的语句以分号;结尾。语句表达式语句空语句复合语句声明语句选择语句循环语句跳转语句方法调用语句语句和块1、表达式语句:一个合法的表达式加上分号。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 算法的基本控制结构 算法的基本控制结构有3种 顺序结构 选择结构
34、 循环结构三种基本结构就构成了程序的控制流程truefalsefalsetrue3.4 算法的基本控制结构3.4 算法的基本控制结构与算法的基本控制结构相关的Java语句分支语句:if-else, switch循环语句:while, do-while, for与程序转移有关的其它语句:break, continue, return3.4.1 分支语句 分支语句提供了一种控制机制,使得程序根据相应的条件去执行对应的语句。if语句switch语句1. if 语句的3种形式(1) if (表达式) 语句例:if ( x y) z=x; else z=y;(3) if (表达式1) 语句1 else
35、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=+ grade);3.4.2 循环语句 循环结构
36、是在一定条件下,反复执行某段程序的流程结构,被反复执行的程序被称为循环体。Java的循环语句共有3种while语句do-while语句for语句 1. while 语句while 语句形式 while (条件表达式) 语句执行顺序循环体可以是复合语句,其中必须含有改变条件表达式值的语句。while 语句的使用【例3-10】用while语句求1+2+100的和。 当 i=n 时 sumsum+i i+sum 0, i 1输出sum循环前的初始化循环体循环后的处理public class WhileTry public static void main(String args) int i,sum
37、; 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=100)i=i+2; i=2;while 语句的使用2. do-while 语句一般形式do 语句while (表达式)循环体可以是复合语句,其中必须含有改变条件表达式值的语句。执行顺序 与while语句的比较public class DoWhileTry public
38、 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】输入一个整数,将各位数字反转后输出。 例如:12345 54321 分析: 采用不断除以10取余数的方法,直到商数等于0为止。并规定整数n为0,输出0。输入n;rightDigit=n%10; 重复此过程直到n等于0为止输出rightDigit;n=n/10;String output=;
39、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 rightDigit; Scanner scn = new Scanner(System.in); System.out.println(输入一个数); int n= scn.nextInt(); do rightDigit=n%10; System.out.pri
40、nt(rightDigit); n=n/10; while (n!=0); 【例3-12】输入一个整数,将各位数字反转后输出。3. for语句语法形式: for (表达式1;表达式2;表达式3) 语句 为true时执行循环体每次执行完循环体后求解.用于改变循环控制变量的值 执行顺序循环前先求解, 完成初始化循环变量和其他变量例: 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(Stri
41、ng args) int i,sum; sum=0; for(i=1; i=100; i+) sum+=i; System.out.println(sum=+sum); 【例3-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) S
42、ystem.out.print(k+ ); 关于for语句的几点说明 (1)for语句的三个表达式可以为空(但分号不能省略) 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 sum=0
43、; i=1 /在for语句之前给循环控制变量赋初值 for (; 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语句的几点说明4、循环的嵌套 循环的嵌套:一个循环体内又包含另一个完整的循环结构。三种循环语句(wh
44、ile循环, do-while循环和for循环)它们可以相互嵌套使用。 【例3-15】打印出星星菱型图案。 分析 画出上半部分4行图案:i =1 to 4 画出下半部分3行图案: i=3 to 1 画空格:4-i 个; 画星号:2*i-1 个 换行 画空格:4-i 个; 画星号:2*i-1 个 换行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.println(); 5、跳转语句用于改变程序控制流break语
45、句continue语句return循环 break体循环条件true循环 continue体循环条件true(1) continue语句 continue语句只能出现在循环体中结束本轮循环,接着开始判断决定是否执行下一轮循环。continue语句的语法格式 continue 标号;continue语句不带标号的continue语句:终止当前这一轮循环,跳过本轮剩余的语句,直接进入当前循环的下一轮。 在for循环中,不带标号的continue语句会跳转至表达式3,计算修改循环变量后再判断循环条件。 在while或do while循环中,不带标号的continue语句会使流程直接跳转至条件表达式。
46、 【例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 count=11 (2)break语句 break语句仅出现在switch语句或循环体中。作用:使程序的流程从一个语句块内部跳转出来,即从switch语句的分支中跳出,或从循环体内部跳出。 break语句的语法格式bre
47、ak 标号;循环 break体循环条件true【例3-18】使用不带标号的break语句的一个程序段。int count;for (count=1; count=10; count+) if (count=5) break; System.out.println(count + ); System.out.println(count=+count);程序段的运行输出结果如下:1 2 3 4 count=5【例3-19】使用带标号的break语句的一个程序段。 stop:for (int i=1; i=10; i+) for (int j=1; j=5; j+) if (i=5) break s
48、top; System.out.print( * ); System.out.println(); * 3.5 方法对象的行为在Java中由方法来实现。一个方法(在其它语言中也称做函数或过程)往往完成一个具体的、独立的功能。方法编写好后,可以被重复地使用;使用时只关心方法的功能和使用方法,而不必关心方法功能的具体实现,这样可有利于代码的重用,提高程序的开发效率。-对不同的数据进行相同的加工处理。3.5 方法方法的声明方法的调用方法的参数传递方法的重载方法的嵌套与递归3.5.1 方法的声明 方法的声明格式: 返回值类型 方法名(形式参数表) /方法头 语句序列 /方法体(1)返回值类型:规定了方
49、法返回给调用者的结果值类型。若方法无返回值,必须写void。方法的返回类型不是void类型,则这个方法的方法体中必须包含一个 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);3.5.1 方法的声明(4)方法头与方法体:方法声明的第一行是方法头,花括号中的语句序列构成了方法体。方法头定义了方法的名称、怎样调用它、返回什么类型的数据。方法体定义具体实现功能的代码
50、,对调用者而言,只需要关心方法头,而无需关心方法体。3.5.2 方法的调用 方法调用的格式 (1) 方法名(实参表) (2) 通过对象调用非静态方法 对象的引用名.方法名(实参表) (3) 通过类名调用静态方法 类名.方法名(实参表) 实参表是用逗号分开的实参。要求实参表和方法声明中的形参表的形参类型和形参个数完全相同。 如果方法的调用无返回值(void), 方法调用可作为一条语句单独出现在程序中。 System.out.println( factor(5) ); String s=“ab”; /s=new String(“ab”); System.out.println( s.length(
51、) ); JOptionPane.showInputDialog( Input a integer number:);方法的声明和调用例子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
52、i=max(1, 2);合法,系统会进行隐含类型转换【例3-20】输出10000之内的所有完全数。完全数:所有因子和(包括1但不包括这个数本身)与其自身相同的数。例如6123,6123,则6是一个完全数。定义两个方法: boolean isPerfect(int x):用于判断x是否完全数。 void displayPerfect(int x):用于输出x的因子之和的公式。 在main()方法中使用一个for循环,检查1到10000之间的所有整数是否是完全数。 【例3-20】输出10000之内的所有完全数。public static void main(String args) for(int
53、 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(int x)int sum=0;for(int i=1; i1)求阶乘n!的递
54、归方法的声明:long factorial(int n) /方法声明 if(n = 1) return 1; /递归终结点 else return n*factorial (n-1); /递归调用自身递归调用语句y=factorial(5);的执行过程 long factorial(int n) if(n = 1) return 1; else return n*factorial (n-1); 3.5.6 变量声明的作用域(1)参数声明的作用域是声明方法所在的方法体。(2)局部变量在方法或方法中的一块代码中声明,它的作用域为它所在的代码块(整个方法或方法中的某块代码)。(3)在带标号的bre
55、ak和continue语句中,标号的作用域是带标号结构范围的语句(即带标号语句的主体)。(4)出现在for结构头初始化部分的局部变量,其作用域是for结构体和结构体头中的其它表达式。(5)catch语句中的异常处理参数将传递给异常处理代码块,它的作用域就是catch的异常处理块。(6)类中的方法和属性,它们的作用域是整个类。这种作用域使一个类的方法可以用简单的名称调用类中声明的其它方法以及该类继承的方法,并使之能直接访问在该类中声明的属性。class C1 int g; /类中的属性 void method1(int k) /类中的方法,k是参数 int i; /方法中的局部变量 i=k+g;
56、 void method2(int k) int g; int j=0; g=j+k; this.g=j+g; i=10; 通过this.g调用类的属性变量g3.5.6 变量声明的作用域3.6 数组数组:一组相同数据类型的元素按一定顺序线性排列。数组的特点(1) 数组是相同数据类型的元素的集合。(2) 数组中的各元素是有先后顺序的。它们在内存中按照这个顺序连续存放在一起。(3) 每个数组元素用整个数组的名字和它自己在数组中的位置表达(此位置被叫做下标)。 例如,定义一个包含5个整型元素的数组a: int a = new int5; a0 a1 a2 a3 a4 a5 3.6 数组数组便于组织循
57、环。Java中的数组是对象,因此属于引用类型,数组对象需要使用new关键字来创建。数组一维数组多维数组3.6.1 一维数组 1. 声明数组格式 数组元素类型 数组名;或 数组元素类型 数组名;例如:int intArray; 2. 创建数组空间 数组名 = new 数组元素类型 数组元素的个数 ; 例如:intArray = new int 10 ; 为整型数组intArray分配10个整数元素所占据的内存空间。每个元素初值为0。即intArray0, intArray1, intArray9的值各为0。3.6.1 一维数组int intArray;intArray = new int 10
58、;int intArray = new int 10;合二为一String stringArray = new String5; / 初值为null3.6.1 一维数组 用new关键字为一个数组分配内存空间后,系统将为每个数组元素都赋予一个初值,这个初值取决于数组的类型。 所有数值型数组元素的初值为0 字符型数组元素的初值为一个Unicode编码为0的不可见的控制符(u0000) 布尔型数组元素的初值为false 类的类型的数组在创建时,元素的初值为null 注意:Java中的数组对象一旦创建之后,在程序整个执行期间,就不能再改变数组元素的个数。String stringArray = new
59、 String5; / 初值为null3.6.1 一维数组3. 数组的初始化(1)在声明数组时,进行初始化。数组元素的个数由初始化列表中数据个数决定。int a=1,2,3,4,5; 一维数组(2)在声明创建数组之后,用赋值语句为每个元素赋值。String stringArray; /定义一个String类型的数组变量stringArray = new String3; /给数组stringArray分配3个元素空间stringArray0=new String(“how”); /初始化各数组元素stringArray1=new String(“are”);stringArray2=new S
60、tring(“you”);3.6.1 一维数组4. 数组元素的使用一维数组元素的使用方式 数组名下标下标必须是整型或者可以转化成整型的量。下标的取值范围:从0开始到数组的长度减1。 例如, int intArray=new int10; intArray0, intArray1,., intArray9所有的数组都有一个属性length,这个属性存储了数组元素的个数。intArray.length 的值为10。intArraylength-13.6.1 一维数组Java系统能自动检查是否有数组下标越界的情况。 如果在程序中使用intArray10,就会发生数组下标越界,此时Java系统会自动终
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024工程项目协议条款与监管办法
- SaaS平台定制技术开发服务协议
- 2023-2024学年重庆市永川北山中学高三二轮检测试题(二模)数学试题试卷
- 2024定制出租车辆运营协议典范
- 2024年履约担保协议范本下载指南
- 2024锅炉维修工程协议格式
- 2024年度汽车租赁协议格式
- 2024商业秘密保护竞业限制协议样本
- 2024年仓库转租协议条款
- 动产资产抵押协议范例2024年
- 停车场施工方案及技术措施范本
- 高考地理一轮复习课件【知识精讲+高效课堂】美食与地理环境关系
- 分居声明告知书范本
- 2023年04月山东济南市槐荫区残联公开招聘残疾人工作“一专两员”公开招聘笔试参考题库+答案解析
- 消失的13级台阶
- 营销管理知识点
- 船体强度与结构设计课程设计
- 不宁腿综合征诊断与治疗
- 初中英语教学活动设计
- 三写作的载体与受体
- GB/T 451.3-2002纸和纸板厚度的测定
评论
0/150
提交评论