Java第二章Java程序设计.ppt

上传人:sccc 文档编号:5579823 上传时间:2023-07-30 格式:PPT 页数:140 大小:837.51KB
返回 下载 相关 举报
Java第二章Java程序设计.ppt_第1页
第1页 / 共140页
Java第二章Java程序设计.ppt_第2页
第2页 / 共140页
Java第二章Java程序设计.ppt_第3页
第3页 / 共140页
Java第二章Java程序设计.ppt_第4页
第4页 / 共140页
Java第二章Java程序设计.ppt_第5页
第5页 / 共140页
点击查看更多>>
资源描述

《Java第二章Java程序设计.ppt》由会员分享,可在线阅读,更多相关《Java第二章Java程序设计.ppt(140页珍藏版)》请在三一办公上搜索。

1、第2章 Java基本语法,2.1 Java程序的构成 2.2 数据类型、变量和常量 2.3 运算符和表达式 2.4 流程控制 2.5 数组 习 题,学习目的与要求:深刻理解并熟记Java 的语法规范。熟练使用各种数据类型的定义、表示和引用。熟练使用各种控制语句。熟练使用一维数组,文件命名规则,总则:文件名必须与类名一致。(1)如果文件只有一个类,那么文件名必须与类名完全一致,包括大小写。(2)一个文件中,只能有一个public类;(3)如果文件中不只一个类,那文件名必须与声明为public的类名保持一致;,(4)如果文件不只一个类,没有声明为public类,则文件名可以与其他类的名字中的一个保

2、持一致;(5)如果类中有main方法,并声明为public类,main方法必须位于public类中;(6)如果类中有main方法,没有声明为public类,文件名保存为与含有main方法的类名一致。,/*检测类名与文件名的一致性*/class StudentTest public static void main(String args)Student aStudent=new Student();aStudent.setName(“张楠”);aStudent.setStudentNum(“2010416001”);System.out.println(“学生的姓名是:”+aStudent.g

3、etName()+”,学号是:”+aStudent.getStudentNum();,class People private String name;public String getName()return name;public void setName(String strName)name=strName;,class Student extends People private String studentNum;public String getStudentNum()return studentNum;public void setStudentNum(String strSt

4、udentNum)studentNum=strStudentNum;,文件名只能保存为StudentTest.java才能运行。思考:在class StudentTest前面加上public后,再保存为People.java或Student.java,编译会出现什么情况。,2.1 Java程序的构成,2.1.1 逻辑构成 Java源程序逻辑构成分为两大部分:程序头包的引用和类的定义。1.程序头包的引用 主要是指引用JDK软件包自带的包,也可以是自己定义的类。引用之后程序体中就可以自由应用包中的类的方法和属性等。,2.类的定义 源程序必须有一个主类;在应用程序中,主类为包含main方法的类;在A

5、pplet中,主类为用户自定义的系统Applet类的扩展类。在Java源程序中,主类的名字同文件名一致。类的定义又包括类头声明和类体定义。类体中包括属性声明和方法描述。,2.1.2 物理构成 Java源程序物理上由三部分构成,分别为语句、块和空白。(1)语句指一行以分号“;”结束的语句。(2)块指用括号对界定的语句序列,块可以嵌套使用。(3)空白指语句之间、块内部或者块之间的空白行。空白不影响Java源程序的编译和运行,适当地运用空白,可以形成良好的代码风格。,2.1.3 注释语句行注释为以/开始的行;块注释以/*开始和*/结束例如,下面的语句就是注释语句用来说明程序文件名称的。/程序文件名称

6、为WelcomeApplet.java上述的语句注释可以更改为:/*程序文件名称为WelcomeApplet.java*/或/*程序文件名称为WelcomeApplet.java*/,2.1.4 标识符、关键字和转义符 在Java语言中,标识符是赋予变量、类和方法等的名称。由编程者自己指定,但需要遵循一定的语法规范:(1)标识符由字母、数字、下划线(_)、美元符号($)组成,但美元符号用得较少。(2)标识符从一个字母、下划线或美元符号开始。(3)Java语言中,标识符大小写敏感,必须区别对待。(4)标识符没有最大长度的限制,但最好表达特定的意思。(5)标识符定义不能是关键字。,例如:_abc,

7、$ABC,2A,A#,For,顺时 Java开发的命名习惯所有的命名要望文生义,这样才具有良好的可读性Total,Sum,ShunshiStudent类名,接口名:每个单词的首字母大写,其他字母小写 如类MyFirstJava,Player,Teacher属性,方法,,局部变量名:第一个单词全小写,从第二个单词开始以后每个单词首字母大写,其他字母小写 如方法 getName()setDoctorBirthday()常量:每个单词所有字母全部大写,单词之间用_来连接 java中使用final修饰 final int MARK_GREED=22;包名:所有字母全部小写 如package com.s

8、hunshi.corejava.day01,_abc,$ABC,2A,A#,For,顺时 关键字又称保留字,是指Java语言中自带的用于标志数据类型名或者程序构造名等的标识符,如public、double等。,关键字:对Java技术编译器有特殊的含义,可以被编译器识别执行abstract do implements private throw boolean double import protected throws break else instanceof public transient byte extends int return true case false interface

9、 short try catch final long static void char finally native super volatile class float new switch while continue for null synchronized default if package this,Java关键字特点java关键字与c+很多相似,只要与c+一样的,它的含义都与c+中的相同有些关键字c+有,而java没有sizeof求出某种类型的变量的占内存的大小为什么c+有sizeof?因为不同机器内存占用空间大小不一样 16,32,64位,取决于操作系统平台。为什么Java

10、不需要?因为有JVM。java中的关键字都是小写的true、false和null为小写,而不是象在C+语言中那样为大写。严格地讲,它们不是关键字。,有些关键字java没有取消保留下来,但它自己也不用它也不给程序员用goto和const不是Java编程语言中使用的关键字,而是保留字。什么是保留字?为什么保留下来但不能用?在java中final替代constgoto在c+代表无条件跳转,功能很好,但不能经常用,要谨慎。很多建议去掉goto关键字,没有理解goto真正含义。为什么c+到现在都没有删除掉goto?它有一个特殊使命Java中使用break代替goto跳出一层循环:break跳出多层循环:

11、break outout是一个标号,可以跳到out标识处break避免滥用goto,把goto功能削弱了,只能跳到外层循环java中加入新的关键字enum assertenum:枚举assert:断言,表2.1 转 义 符,转义符是指一些有特殊含义的、很难用一般方式表达的字符,如回车、换行等。所有的转义符以反斜线()开头,后面跟着一个字符来表示某个特定的转义符,如表2.1所示。,2.2 数据类型、变量和常量,2.2.1 数据类型 Java编程语言定义了八种基本的数据类型(见表2.2),共分为四类:整数类(byte、short、int、long)、文本类(char)、浮点类(double、flo

12、at)和逻辑类(boolean)。,表2.2 Java的数据类型,1.整数类(1)采用三种进制十进制、八进制和十六进制。2 十进制值是2;077 首位的0表示这是一个八进制的数值;0 xBAAC 首位的0 x表示这是一个十六进制的数值。(2)具有缺省int。(3)用字母“L”和“l”定义long。(4)所有Java编程语言中的整数类型都是带符号的数字。,2.文本类(1)代表一个16 bit Unicode字符。(2)必须包含用单引号()引用的文字。(3)使用下列符号:a一个字符。t-一个制表符。u?-一个特殊的Unicode字符,?应严格使用四个十六进制数进行替换。,3.浮点类 默认为doub

13、le类型,如果一个数字包括小数点或指数部分,或者在数字后带有字母F或f(float)、D或d(double),则该数字为浮点数。,4.逻辑类boolean数据类型有两种值:true和false。例如:boolean flag=true;上述语句声明变量flag为boolean 类型,它被赋予的值为true。,数据类型转换:分为自动类型转换和强制类型转换自动类型转换:整型、浮点型、字符型数据可以混合运算。在执行运算时,不同类的数据先转化为同一类型,然后进行运算。转换从低级到高级的顺序为:Short或byte int longfloat double char 强制类型转换高级数据要转换成低级数据

14、需用强制类型转换,格式为:(数据类型)数据或(数据类型)(表达式)注:逻辑类数据不能和其它类型的数据转换。,强制类型转换:只要不能自动转换的,则只能是强制转换整型数据之间的强转:改变数据的符号;改变数值int a=0 x2aff;byte b=(byte)a;b为-1强制转换的原理:从最低位开始取到目标类型长度为止整型之间的强转是保留二进制低位,去掉高位,需要考虑在内存中如何存储实型强转整型是保留整数,去掉小数,不考虑实型在内存中的如何存储byte+byte会自动提升为intbyte a1=1,a2=2;byte a3=a1+a2;(精度丢失)+=不进行类型提升byte c=3;c=c+3;c

15、+=3;System.out.println(c);默认整型为int,int,long提升为float有精度丢失float fa=37;System.out.println(fa);int ia=(int)fa;System.out.println(ia);,2.2.2 变量与常量 常量是指整个运行过程中不再发生变化的量 变量是指程序的运行过程中发生变化的量,通常用来存储中间结果,或者输出临时值。变量的声明也指变量的创建。执行变量声明语句时,系统根据变量的数据类型在内存中开辟相应的存储空间并赋予初始值。变量有一个作用范围,超出它声明语句所在的块就无效。,Java的常量Java中的常量分为整数型

16、常量、浮点型常量、布尔型常量、字符型常量和字符串常量 常量的定义格式为:final 常量类型 常量名1=常量值,常量名2=常量值2.final是定义常量的关键字。Java中的常量值区分为不同的类型,类型可以是Java中任何合法的数据类型,Java的变量Java变量定义的格式:类型名 变量名1,变量名2,;或:类型名 变量名1=初值,变量名2=初值,;变量按作用域分类:局部变量:在方法或方法的代码块中声明,作用域从该变量的定义位置起到它所在的代码块结束。方法参数(形式参数):传递给方法的参数,作用域是这个方法。异常处理参数:传递给异常处理代码,作用域是异常处理部分。注意:局部变量必须先赋值再使用

17、局部变量的作用域是从定义它开始到定义它的代码块结束在同一重合范围内不允许有2个同名局部变量出现,类(成员)变量:在类定义中声明,作用域是整个类。在一个确定的域中,变量名应是唯一的。通常,一个域用大括号来划定,下面看一个使用各种类型变量声明并改变的示例。程序中pi为常量,s1、i1、l1、ch1、f1、d1、b1为全局变量,可以在方法change中发生改变,然后在方法main中输出。而s2、i2、l2、ch2、f2、d2、b2是方法main的局部变量,它们的作用范围只局限于方法main中。【例2.2】测试不同数据类型的变量,程序输出如图2.2所示。源程序代码如下:/程序文件名称为SetVaria

18、ble.javapublic class SetVariable/全局变量,static double pi=3.141592654;/数学常量static short s1;static int i1;static long l1;static char ch1;static float f1;static double d1;static boolean b1;public static void main(String args),/局部变量short s2=35;int i2=-32;long l2=34555L;char ch2=A;float f2=897.89F;double d

19、2=34.345;boolean b2=false;/输出常量System.out.println(数学常量pi=+pi);/输出局部变量,System.out.println(*局部变量*);System.out.println(短整型变量s2=+s2);System.out.println(整型变量i2=+i2);System.out.println(长整型变量l2=+l2);System.out.println(字符变量ch2=+ch2);System.out.println(浮点数类型f2=+f2);System.out.println(双精度型变量d2=+d2);System.out

20、.println(布尔型变量b2=+b2);/调用方法修改全局变量的值,change();/输出全局变量的值System.out.println(*全局变量*);System.out.println(短整型变量s1=+s1);System.out.println(整型变量i1=+i1);System.out.println(长整型变量l1=+l1);System.out.println(字符变量ch1=+ch1);System.out.println(浮点数类型f1=+f1);System.out.println(双精度型变量d1=+d1);System.out.println(布尔型变量b1

21、=+b1);,/方法:修改全局变量的值 public static void change()s1=125;i1=88;l1=987654321L;ch1=B;f1=3.2590F;d1=-1.04E-5;b1=true;,图2.2 变量输出结果,2.3 运算符和表达式,Java常用的运算符分为五类:算术运算符、赋值运算符、关系运算符、布尔逻辑运算符、位运算符。表达式是由常量、变量、对象、方法调用和操作符组成的式子。表达式必须符合一定的规范,才可被系统理解、编译和运行。表达式的值就是对表达式自身运算后得到的结果。根据运算符的不同,表达式相应地分为以下几类:算术表达式、关系表达式、逻辑表达式、赋

22、值表达式,这些都属于数值表达式。,2.3.1 算术运算符及算术表达式Java中常用的算术运算符如下:+加运算符-减运算符*乘运算符/除运算符%取模运算(除运算的余数)+增量运算符-减量运算符,【例2.3】测试运算符及表达式,程序输出如图2.3所示。源程序代码如下:/程序文件名称为NumberOper.javapublic class NumberOperpublic static void main(String args)/变量初始化int a=30;int b=20;/定义结果变量int r1,r2,r3,r4,r5,r6,r7,r8,r9;/计算结果r1=a+b;,r2=a-b;r3=a

23、*b;r4=a/b;r5=a%b;r6=a+;r7=b-;r8=+a;r9=-b;/输出结果System.out.println(a=+a+b=+b);/a,b的值System.out.println(a+b=+r1);System.out.println(a-b=+r2);,System.out.println(a*b=+r3);System.out.println(a/b=+r4);System.out.println(a%b=+r5);System.out.println(a+=+r6);System.out.println(b-=+r7);System.out.println(+a=+

24、r8);System.out.println(-b=+r9);,图2.3 程序输出结果,2.3.2 关系运算符 关系运算符用于比较两个数据之间的大小关系,关系运算表达式返回布尔值,即“真”或“假”。Java中的常用关系运算符如下:=等于!=不等于大于=大于等于=小于等于,【例2.4】编写程序,测试关系运算符及其表达式,程序输出如图2.4所示。源程序代码如下:,/程序文件名称为TestRelation.javapublic class TestRelationpublic static void main(String args)/变量初始化int a=30;int b=20;/定义结果变量bo

25、olean r1,r2,r3,r4,r5,r6;/计算结果,r1=a=b;r2=a!=b;r3=a b;r4=a=b;r6=a b=+r3);System.out.println(a=b=+r5);System.out.println(a=b=+r6);,图2.4 程序输出结果,2.3.3 布尔逻辑运算符,表2.3 布尔运算符及规则,例如:Boolean a=false;Boolean b=true;a&b检测到a为假,则无需判断b的值,直接将值置为假;而b|a时检测到b为真,则无需判断a的值,直接将值置为真。,【例2.5】测试布尔表达式,程序输出结果如图2.5所示。源程序代码如下:/程序文件

26、名称为TestLogic.javapublic class TestLogicpublic static void main(String args)/变量初始化boolean a=false;boolean b=true;/定义结果变量boolean r1,r2,r3,r4,r5,r6;/计算结果,r1=!a;r2=a,图2.5 程序输出结果,2.3.4 位运算符Java中的常用位运算符如下:位求反&按位与|按位或按位异或右移不带符号右移,位运算符的使用,想要a高8位不变,低8位全变0 a&0 xff00想要a高8位不变,低8为全变1 a|0 x00ff想要a高8位不变,低8位求反 a0 x

27、00ff想要a高8位求反,低8位全为0(a0 xff00)&0 xff00想要a的1,3,5,7位取反,2,4,6,8位不变01010101值为85 所以 a85,【例2.6】测试位运算符,程序输出结果如图2.6所示。源程序代码如下:/程序文件名称为TestBit.javapublic class TestBitpublic static void main(String args)/变量初始化int a=36;int b=2;/定义结果变量int r1,r2;,/计算结果r1=a b;r2=a b=+r1);System.out.println(ab=+r2);,图2.6 程序输出结果,2.

28、3.5 赋值运算符 赋值运算符分为简单运算符和复杂运算符。简单运算符指“=”,而复杂运算符是指算术运算符、逻辑运算符、位运算符中的双目运算符后面再加上“=”。表2.4列出Java常用的赋值运算符及其等价表达式。,表2.4 赋值运算符及其等价表达式,2.3.6 其它操作符及其表达式 三目运算符(?:)相当于条件判断,表达式x?y:z用于判断x是否为真,如果为真,表达式的值为y,否则表达式的值为z。例如:int x=5;int a=(x3)?5:3;则a的值为5。如果x=2,则a的值为3。,对象运算符(instanceof)用来判断一个对象是否属于某个指定的类或其子类的实例,如果是,返回真(tru

29、e),否则返回假(false)。例如:boolean b=userObject instanceof Applet用来判断userObject类是否是Applet类的实例。,2.3.7 优先级,表2.5 运算符优先级,2.4 流 程 控 制,流程控制分为三种基本结构:顺序结构、分支结构和循环结构。分支结构包括单分支语句(if-else语句)和多分支语句(switch语句);循环结构包括次数循环语句(for语句)和条件循环语句(while语句)。,2.4.1 分支语句分支语句分为两类:单分支语句和多选语句。1.if-else语句if-else语句的基本格式为:if(布尔表达式)语句或块1;els

30、e语句或块2;,【例2.7】测试if-else语句,如果x10,则输出x的值,并提示结果正确,否则输出x=10,提示结果不正确。程序输出结果如图2.7所示。源程序代码如下:/程序文件名称为TestIf.javapublic class TestIf/声明全局变量xstatic int x;public static void main(String args)x=12;if(x10),System.out.println(x=+x+结果正确);else System.out.println(x=10+结果不正确);change();System.out.println(修改x的值之后);if(

31、x10)System.out.println(x=+x+结果正确);elseSystem.out.println(x=10+结果不正确);,/change方法:修改x的值public static void change()x=5;,图2.7 程序输出结果,2.switch语句switch语句的基本格式为:switch(表达式1)case 表达式2:语句或块2;break;case表达式3:语句或块3;break;case 表达式4:语句或块4;break;default:语句或块5;break;,其中:(1)表达式1的值必须与整型兼容。(2)case分支要执行的程序语句。(3)表达式2、3、

32、4是可能出现的值。(4)不同的case分支对应着不同的语句或块序列。(5)break表示跳出这一分支。,【例2.8】测试switch语句,当x=1、2、3时,分别打印1、2、3,x不为这三个值时,打印x的值。程序输出结果如图2.8所示。源程序代码如下:/程序文件名称为TestSwitch.javapublic class TestSwitchpublic static void main(String args)/声明变量xint x;x=12;,System.out.println(x=12时打印的值);choose(x);x=3;System.out.println(x=3时打印的值);c

33、hoose(x);/choose方法:switch语句结构public static void choose(int x)switch(x),case 1:System.out.println(1);break;case 2:System.out.println(2);break;case 3:System.out.println(3);break;default:System.out.println(x);,图2.8 程序输出结果,2.4.2 for循环语句for循环语句实现已知次数的循环,其基本格式为:for(初始化表达式;测试表达式;步长)语句或块;,其执行顺序如下:(1)首先运行初始化

34、表达式。(2)然后计算测试表达式,如果表达式为true,执行语句或块;如果表达式为false,退出for循环。(3)最后执行步长。,【例2.9】用for循环统计1100(包括100)之间数的总和。程序输出结果如图2.9所示。源程序代码如下:/程序文件名称为TestFor.javapublic class TestForpublic static void main(String args)int sum=0;for(int i=1;i=100;i+)sum+=i;System.out.println(1到100(包括100)的数的总和为:+sum);,图2.9 程序输出结果,2.4.3 whi

35、le循环语句 while循环语句实现受条件控制的循环,其基本格式为:while(布尔表达式)语句或块;当布尔表达式为true时,执行语句或块,否则跳出while循环。,上面for循环语句的例子改为while语句后如下所示:int sum=0;int i=1;while(i=100)sum+=i;i+;System.out.println(1到100(包括100)的数的总和为:+sum);,2.4.4 do语句do语句实现受条件控制的循环,其基本格式为:do语句或块;while(布尔表达式),先执行语句或块,然后再判断布尔表达式。与while语句不同,当布尔表达式一次都不为true时,while

36、语句一开始判断就跳出循环,不执行语句或块,而在do语句中则要执行一次。上面那个例子改为do循环为:int sum=0;int i=1;do sum+=i;i+;while(i=100);System.out.println(1到100(包括100)的数的总和为:+sum);,3种循环结构如何选择,要考虑几个因素首先分析业务问题是否是用循环来实现分析业务问题判断我们是否已经预先知道循环次数如果预先知道循环次数:用for循环如果预先不知道次数:用while循环若至少要执行一次循环:用do.while循环3种不同的循环结构其实可以相互转化,按照上面的规则来选择可以简化编程,跳转语句Break lab

37、el:在switch语句中,break语句用来跳过分支中的其它语句;在循环语句中,break用来跳出当前的循环语句 Continue label:continue语句只用于循环结构,用来结束本次循环,即跳过循环体中位于continue语句后面的尚未执的语句Return 表达式:return语句用于从当前方法中退出 Label:是指标号,只起到对语句标识的作用,2.5 数组,数组 数组(array)是相同类型变量的集合。数组变量是引用类型的变量,声明数组变量并不分配内存空间。声明一个数组实质是要确定数组名、数组的维数和数组元素的数据类型。,2.5.1 一维数组,一、一维数组定义语法格式有两种:数

38、组元素类型 数组名;或 数组元素类型 数组名如:int intSno或int intSno intSno:为数组名是符合Java标识符定义规则的用户标识符。Int:表示数组元素的数据类型为整型 方括号:数组的标志,Java语言中声明数组时不能指定其长度。int array6;,二、初始化 可以通过直接指定初值的方式来完成,也可以用new操作符来完成。1直接指定初值的方式 例 int a1=23,-9,38,8,65;,数组a1的初始化,2用关键字new初始化数组 用关键字new初始化数组,只为数组分配存储空间而不对数组元素赋初值。用关键字new来初始化数组有两种方式:(1)先声明数组,再初始化

39、数组。格式如下:类型标识符 数组名;数组名=new 类型标识符数组长度;其中,第一条语句是数组的声明语句,第二条语句是初始化语句。,int a;a=new int9;,(2)在声明数组的同时用new关键字初始化数组。格式如下:类型标识符 数组名=new 类型标识符数组长度;或 类型标识符 数组名=new 类型标识符数组长度;例如:int a=new int10;,新创建的数组对象,其元素根据类型被设置为默认的初始值。数值类型为0字符类型为u0000布尔类型为false引用类型为null,每个数组都有一个属性length获取它的长度,例如:a.length 指明数组a的长度(元素个数);,三、数

40、组元素引用 数组名数组下标 其中:数组下标的取值从0开始,下标值可以是整数型常量或整数型变量表达式。对intSno数组来说下面两条赋值语句是合法的:intSno4=32;intSno3+2=86;但intSno6=12;是错误的。,增强的for循环(JDK 1.5),JDK 1.5引入一个新的for循环,可以不用下标就可以依次访问数组元素。语法:for(elementType value:arrayRefVar)例如for(int i=0;i myList.length;i+)sum+=myListi;for(double value:myList)sum+=value;,【示例程序c6_1.

41、java】数组的声明、初始化和其长度的测定。public class c6_1 public static void main(String arg)int i;double a1;/放在变量后面声明 char a2;/放在变量前面声明 a1=new double8;/为a1分配8个double型元素的存储空间(64字节)a2=new char8;/为a2分配8个char型元素的存储空间(16字节),int a3=new int8;/在声明数组时初始化数组,为a3分配32字节 byte a4=new byte8;/在声明数组时初始化数组,为a4分配8字节 char a5=A,B,C,D,E,F

42、,H,I;/直接指定初值方式/下面各句测定各数组的长度,/以下各句引用数组中的每一个元素,为各元素赋值 for(i=0;i8;i+)a1i=100.0+i;a3i=i;a2i=(char)(i+97);/将整型转换为字符型 System.out.println(a1.length=+a1.length);System.out.println(a2.length=+a2.length);System.out.println(a3.length=+a3.length);System.out.println(a4.length=+a4.length);System.out.println(a5.le

43、ngth=+a5.length);,/下面各句打印各数组元素 System.out.println(ta1ta2ta3ta4ta5);System.out.println(tdoubletchartinttbytetchar);for(i=0;i8;i+)System.out.println(t+a1i+t+a2i+t+a3i+t+a4i+t+a5i);,该程序的运行结果如下:a1.length=8a2.length=8a3.length=8a4.length=8a5.length=8,a1 a2 a3 a4 a5double char int byte char100.0 a 0 0 A10

44、1.0 b 1 0 B102.0 c 2 0 C103.0 d 3 0 D104.0 e 4 0 E105.0 f 5 0 F106.0 g 6 0 H107.0 h 7 0 I,数组下标的灵活使用【示例程序c6_2.java】用数组求解Fibonacci数列的前20项,即使用数组下标表达式求解数学上的迭代问题。,public class c6_2 public static void main(String args)int i;int f=new int20;/创建数组f,使其可存储20个整型数据 f0=1;f1=1;for(i=2;i20;i+)fi=fi-2+fi-1;/数组元素的下标

45、使用循环变量 for(i=0;i20;i+)if(i%5=0)System.out.println(n);System.out.print(t+fi);,运行结果是:1 1 2 3 58 13 21 34 5589 144 233 377 610987 1597 2584 4181 6765,【示例程序c6_3.java】设数组中的数值是由小到大存放的,编写二分查找程序。import java.io.*;class FindSearch int binarySearch(int arr,int searchValue)int low=0;/low是第一个数组元素的下标 int high=arr

46、.length-1;/high是最后一个数组元素的下标 int mid=(low+high)/2;/mid是中间那个数组元素的下标 while(low=high/要找的数可能在数组的后半部分中,else high=mid-1;/要找的数可能在数组的前半部分中 mid=(low+high)/2;if(lowhigh)mid=-1;return mid;/mid是数组元素下标,若为-1则表示不存在要查的元素 public class c6_3 public static void main(String args)throws IOException,BufferedReader keyin=ne

47、w BufferedReader(new InputStreamReader(System.in);int i,k,search,mid;String c1;int arr=2,4,7,18,25,34,56,68,89;System.out.println(打印原始数据);for(i=0;iarr.length;i+)System.out.print(+arri);System.out.println(n);System.out.println(请输入要查找的整数);c1=keyin.readLine();,search=Integer.parseInt(c1);FindSearch p1=

48、new FindSearch();mid=p1.binarySearch(arr,search);if(mid=-1)System.out.println(没找到!);else System.out.println(所查整数在数组中的位置下标是:+mid);,运行结果:打印原始数据 2 4 7 18 25 34 56 68 89请输入要查找的整数 68所查整数在数组中的位置下标是:7,四、复制数组,直接使用赋值语句不能实现数组的复制,结果是两个数组引用变量指向同一个数组对象。复制数组的方法使用循环来复制每个元素使用System.arraycopy方法使用数组的clone方法,可以把一个数组变量

49、拷贝给另一个,这时两个变量引用同一个数组,如:int aa=1,2,3,4,5;int bb=aa;,aa,bb,Java.lang.System类的arraycopy()方法提供了数组元素复制功能:int source=1,2,3;int dest=5,6,7,8,9;/复制源数组中从下标0开始的source.length个元素到/目的数组,从下标0的位置开始存储。System.arraycopy(source,0,dest,0,source.length);,System.arraycopy(source,0,dest,0,source.length);,source,dest,sourc

50、e,dest,五、向方法传递数组,可以将数组变量作为实参传递给方法。基本数据类型传递的是实际值的拷贝,修改形参,不影响实参。数组引用变量中传递的是对象的引用,修改形参,将改变实参引用的数组对象。也可以从方法中返回数组。,日常生活中处理的许多数据,从逻辑上看是由若干行、若干列组成的。例如,矩阵、行列式、二维表格等。图6.8给出了一个简单的矩阵。为适应存放这样一类数据,人们设计出了一种如图6.9所示的数据结构二维数组。,2.5.2 二 维 数 组,矩阵,二维数组,一、声明 二维数组的声明与一维数组类似,只是需要给出两对方括号,其格式如下:类型说明符 数组名;或类型说明符 数组名;,例如:声明数组名

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

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号