版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一章 初次接触JAVA第1页,共122页。主要内容Java语言网络时代的编程语言 Java语言的特点 Java程序的编译环境和执行环境 第一个Java程序HelloWorld Java程序的分类 Java平台 第2页,共122页。Java语言网络时代的编程语言第3页,共122页。网络时代编程问题 网络带给我们精彩的同时,也为编程带来了困难,最为突 出的表现为环境复杂 第4页,共122页。问题的解决方法 为了实现一个程序能被多个操作系统所认识,必须像不同 语言国家的人交流那样,借助“翻译”的作用 我是中国人Im a chineseIm an american 我是美国人第5页,共122页。 C
2、或C+:只有将编译后的文件连接成为.exe,才能在Windows操作系统上运行。C+的解决策略第6页,共122页。Java的解决策略 :一次编译,处处执行 第7页,共122页。Java语言的特点第8页,共122页。A simple, object-oriented, distributed, interpreted, robust, secure, architecture-neutral, portable, high-performance, multi-threaded, and dynamic language。即:Java是一种具有“简单、面向对象、分布式、解释型、健壮、安全、与体系
3、结构无关、可移植、高性能、多线程和动态执行”等特性的语言。Sun公司对Java的定义第9页,共122页。Java程序的编译环境和执行环境第10页,共122页。编译环境:编译环境的建立需要到Sun的官方网站上下载JDK(JavaDevelopmentKit),网址为:/downloads/ea/ 。Java源代码从编译到解释执行涉及两种环境运行环境:运行环境需要到Sun的官方网站上下载JRE(JavaRuntimeEnvironment)第11页,共122页。适用不同操作系统的JDK版本第12页,共122页。第一个Java程序Hello World 第13页,共122页。五个步 骤 进行JDK的
4、安装配置环境变量编写程序编译执行程序。可能遇到的问题及解决方法第14页,共122页。Java程序的分类 第15页,共122页。从大类上分为Application和Applet。前面的HelloWorld就是Application程序,它们之间的主要区别如下:ApplicationApplet 程序 标志静态main方法继承java.applet.Applet,方法中为void paint(Graphics g) 运行独立运行,利用java工具不能独立运行,需要依赖浏览器,用appletviewer工具来调试JAVA程序的分类第16页,共122页。将HelloWorld改写成Applet程序im
5、port java.awt.*;import java.applet.*;public class HelloWorldApplet extends Applet public void init() public void paint(Graphics g) g.drawString(Hello World!,25,25); 编辑html页面,和HelloWorldApplet.class在同一目录,取名为HelloWorldApplet .html,在其中编写代码:执行结果:第17页,共122页。程序说明程序中的import,相当于C语言中的include,是使用已经编译好的类的语法(包括
6、API中的类),在上面的程序当中,如果没有import java.awt.*;则Graphics类不可使用;没有import java.applet.*;则Applet类不可使用。Graphics类用于绘图。paint方法(名字不可更改)用于界面刷新第18页,共122页。为什么Applet需要嵌入浏览器执行Applet在浏览器中如何工作的?执行中可能遇到的问题第19页,共122页。Java平台第20页,共122页。 Java不仅是编程语言,还是一个开发平台。 目前Sun公司把java平台划分成J2EE、J2SE、J2ME三 个平台,针对不同的市场目标和设备进行定位:J2EE是Java2 Ent
7、erprise Edition,主要是为企业计算提供一个应用服务器的运行和开发平台。J2EE将逐步发展成可与微软的.NET相对抗的网络计算平台。J2SE是Java2 Standard Edition,主要目的是为台式机和工作站提供一个开发和运行的平台。我们在学习java的过程中,主要是采用J2SE来进行开发。J2ME是Java2 Micro Edition,主要是面向电子产品提供一个java运行平台,使java程序能够在手机、机顶盒、PDA等产品上运行。第21页,共122页。第二章 Java语言基础第22页,共122页。主要内容简单数据类型表达式 控制语句 数组第23页,共122页。简单数据类
8、型第24页,共122页。 标识符定义:程序员对程序中的各个元素加以命名时使用的命名记号称为标识符(identifier)。Java语言中,标识符是以字母,下划线“_”,美元符“$”开始的一个字符序列,后面可以跟字母,下划线,美元符,数字。例如,identifier,userName,User_Name,_sys_val, $change为合法的标识符,而2mail(数字开头)、 room#(非法字符)、class(关键字)、a-class(含有运算符)都为非法的标识符。第25页,共122页。保留字概念:具有专门的意义和用途,不能当作一般的标识符,这些标识符称为保留字,也称为关键字。java中的
9、所有保留字(均用小写字母表示):abstract,break,byte,boolean,catch,case,class,char,continue,default, double,do,else,extends,false,final,float,for,finally,if,import, implements,int,interface,instanceof,long,native,new,null,package,private,protected,public,return,switch,synchronized,short,static,super,try,true,this,th
10、row,throws,transient,volatile,void,while 。第26页,共122页。数据类型划分java中的数据类型:简单类型和复合类型:简单数据类型包括: 整数类型:byte, short, int, long 浮点类型:float,double 字符类型:char 布尔类型:boolean复合数据类型包括: class(类) interface(接口) 数组第27页,共122页。常量和变量常量:用保留字final来实现: final 类型 varName=value,varName=value; 如:final int NUM=100;变量:java 程序中的基本存储
11、单元,它的定义包括变量名、 变量类型和作用域几个部分。 格式如下:类型 varName=value,varName=value; 变量名称区分大小写。第28页,共122页。变量的作用域变量的作用域指明可访问该变量的一段代码,声明一个变量的同时也就指明了变量的作用域。变量的作用域可分为:局部变量、类属性变量、方法参数和例外处理参数。在一个确定的域中,变量名应该是唯一的。第29页,共122页。变量作用域举例下面一段代码因为超过了定义的范围而编译出错。 for (int i=0;i高byte,short,char- int - long - float - double自动类型转换规则整型,实型,字
12、符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算,转换从低级到高级 。第42页,共122页。 例如 Type methodA(byte x, double y) return (short)x / y * 2; Type的类型将为double。操作数1类型操作数2类型转换后的类型byte、short、charintintbyte、short、char、intlonglongbyte、short、char、int、longfloatfloatbyte、short、char、int、long、float doubledouble第43页,共122页。数据类型转换强制类型转
13、换强制类型转换:高级数据要转换成低级数据,需用到强制类型转换,如:int i;byte b=(byte)i; /*把int型变量i强制转换为byte型*/第44页,共122页。简单数据类型及其对应包装类简单数据类型不是类,但Java提供了与简单类型对应的包装类普通数据类型对应的包装类charCharacterbyteByteshortShortintIntegerlongLongfloat FloatdoubleDouble它们之间的相互转化方法为(以int和Integer为例):简单数据类型转化为类对象的方法是:通过相应类的构造方法来完成。如Integer vari = new Intege
14、r(5);类对象转化为简单数据类型:如上面的vari可以通过调用intValue()方法得到普通数据类型的int值。第45页,共122页。引入这些类的目的:简单数据类型不具有一些对象的特征,在一些场合不能使用,需要将简单数据类型转为特定的类,进行适当处理后,再转化回来。实现不同数据类型的转化。这些类的静态属性中含有相应的范围。第46页,共122页。表达式第47页,共122页。表达式定义表达式是用运算符把操作数连接起来的式子,可分为算术表达式、关系表达式、逻辑表达式、赋值表达式、条件表达式对各种类型的数据进行加工的过程称为运算,表示各种不同运算的符号称为运算符,参与运算的数据称为操作数按操作数的
15、数目来分,可有:一元运算符:,(正数),(取负)二元运算符:, instanceof(对象运算符) = 等三元运算符:?:第48页,共122页。算术表达式是由算术运算符和位运算符将操作数连接组成的表达式算符运算举例等效的运算双目运算符+加法a+b-减法a-b*乘法a*b/除法a/b%取余数a%b单目运算符+自增1a+或 +aa=a+1-自减1a4a=a-1-取反-aa=-a第49页,共122页。算术运算符优先级顺序分组操作符规则高低子表达式()若有多重括号,首先计算最里面的子表达式的值。若同一级有多对括号,则从左到右计算。单目操作符+,-求单目变量自增自减值。乘法操作符*,/,%若一个表达式中
16、有多个乘法操作符,那么从左到右计算。加法操作符 +,- 若一个表达式中有多个加法操作符,那么从左到右计算 第50页,共122页。算术表达式注意两个整数类型的数据做除法时,结果只保留整数部分。整数和浮点数都能进行取余运算。“/”运算符,当都为整数时,结果为整数,有一个为浮点,则为浮点数。自增/自减运算符只适用于变量,且位于运算符的哪一侧有不同效果。Java中的算术运算主要依赖于Math类的静态方法,例如:取绝对值:Math.abs(Type i),Type可以为int、long、float、double对数取三角和反三角函数、对数和指数、乘方、开方求两个数的最大最小值 得到随机数(random(
17、),类型为double)对浮点数进行处理:四舍五入(round)、ceil(取大值)、floor(取小值)第51页,共122页。class TestNumber public static void main(String args) System.out.print(Math.ceil(5.2)+ ); System.out.print(Math.ceil(5.6)+ ); System.out.print(Math.ceil(-5.2)+ ); System.out.print(Math.ceil(-5.6)+ ); System.out.print(Math.floor(5.2)+ );
18、 System.out.print(Math.floor(5.6)+ ); System.out.print(Math.floor(-5.2)+ ); System.out.print(Math.floor(-5.6)+ ); System.out.print(Math.round(5.2)+ ); System.out.print(Math.round(5.6)+ ); System.out.print(Math.round(-5.2)+ ); System.out.print(Math.round(-5.6)+ ); 输出结果是:第52页,共122页。例 :韩信点兵不足百人,三人一行多一个
19、,七人一行少两个,五人一行正好,问有多少人。public class TestSoldierypublic static void main(String args) for (int i=1;i大于xyflase小于x=大于等于x=yflase=小于等于x=ytrue第54页,共122页。判断某年是否为闰年(如果是闰年,它应能被4整除,但不能被100整除,或被100整除,也能被400整除)public class TestLeapYear public static void isLeapYear(int year)boolean n1 = (year%4=0);boolean n2 = (
20、year%100=0);boolean n3 = (year%400=0);if (n1=true&n2!=true)|(n2=true&n3=true) System.out.println(year+年是闰年); else System.out.println(year+年不是闰年); public static void main(String args) isLeapYear(1900); isLeapYear(1904); isLeapYear(2000);第55页,共122页。逻辑表达式利用逻辑运算符将操作数连接的式子称为逻辑表达式逻辑表达式参与运算的都是布尔值,结果也是布尔值算符
21、运算举例运算规则&与x&yx,y都为true时,结果为true|或x|yx,y都为false时,结果为false!非!xx为true时,结果为false,x为false时,结果为true异或xyx,y都为true或都为false时,结果为false&条件与x&yx,y都为true时,结果为true|条件或x|yx,y都为false时,结果为false第56页,共122页。逻辑表达式注意“&”和“|”在执行操作时,运算符左右两边的表达式首先被运算执行,再对两表达式的结果进行与、或运算。而利用“&”和“|”执行操作时,如果从左边的表达式中得到操作数能确定运算结果,则不再对右边的表达式进行运算。采用
22、“&”和“|”的目的是为了加快运算速度,但也要防止用法上出现的问题,如:class Test public static void main(String args) int out =10; boolean b1=false;if (b1=true)&(out+=10)=20)System.out.println(相等,out=+out); else System.out.println(不等,out=+out); out结果为10,如将语句改为if (b1=true)&(out+=10)=20) 则out结果为20第57页,共122页。赋值表达式赋值运算符组成的表达式称为赋值表达式。Jav
23、a语言中,赋值运算符是“=”。赋值运算符的作用是将赋值运算符右边的一个数据或一个表达式的值赋给赋值运算符左边的一个变量。注意赋值号左边必须是变量(即没有final修饰的变量)。赋值运算的另一种形式是复合赋值运算符连接起来的表达式。第58页,共122页。复合赋值运算符 举例 等效于 复合赋值运算符 举例 等效于 += x+=y x=x+y -+ x-=y x=x-y *= x*=y x=x*y /= x/=y x=x/y %= x%=y x=x%y = x=y x=xy &= x&=y x=x&y |= x|=y x=x|y = x=y x=x= x=y x=xy = x=y x=xy 赋值表达
24、式各种复合赋值运算符第59页,共122页。各种位运算符运算符运算举例运算规则(设x=11010110,y=01011001,n=2)运算结果 位反 x 将x按比特位取反 00101001 & 位与 x&y x,y按位进行与操作 01010000 | 位或 x|y x,y按位进行或操作 11011111 位异或 xy x,y按位进行异或操作 10001111 左移 x 右移 xn x各比特位右移n位,左边按符号位补0或1 11110101 不带符号的右移 xn x各比特位右移n位,左边的空位一律填零 00110101 无符号的左移相当于乘2n,右移相当于除2nint i = 0 xFFFFFFF
25、1; int j = i; /最高位取反后为正,j值为146 3的结果为5第60页,共122页。条件表达式形式:布尔表达式1?表达式2 :表达式 表达式2和表达式3的类型必须相同。条件运算符的执行顺序是:先求解表达式1,若值为true则执行表达式2,此时表达式2的值作为整个条件表达式的值,否则求解表达式3,将表达式3的值作为整个条件表达式的值。在实际应用中,常常将条件运算符与赋值运算符结合起来,构成赋值表达式,以替代比较简单的if/else语句。 条件运算符的优先级高于赋值运算符,结合方式为“自右自左”。 第61页,共122页。class Test public static void mai
26、n(String args) float sum=1.5f; int num=2;System.out.println(sum2 ? 1 : num/sum); 程序返回结果是1.0,而不是1,因为sum是浮点数,所以表达式2发生了数据的隐式转化。但是下面的程序则返回1,因为num/sum仍然是整数,所以表达式2的类型保持不变。条件表达式举例class Test public static void main(String args) int num=3,sum=2;System.out.println(sum3 ? 1 : num/sum); 第62页,共122页。运算符的优先级运算符的优先
27、级决定了表达式中不同运算执行的先后次序。优先级高的先进行运算,优先级低的后进行运算。在优先级相同的情况下,由结合性决定运算顺序。最基本的规律是:域和分组运算优先级最高,接下来依次是单目运算,双目运算,三目运算,赋值运算的优先级最低。第63页,共122页。算符 描述 优先级 结合性 . () 域运算,数组下标,分组括号 1 最高 自左至右 + - - ! 单目运算 2 单目 右/左 new (type) 分配空间,强制类型转换 3 自右至左 * / % 算术乘、除、求余运算 4 双目 自左至右(左结合性) + - 算术加减运算 5 位运算 6 = 小于/小于等于/大于/大于等于 7 = != 相
28、等,不等 8 & 按位与 9 按位异或 10 | 按位或 11 & 逻辑与 12 | 逻辑或 13 ?: 条件运算符 14 三目 自右至左(右结合性) =*=/=%=+= -= &= = |= 赋值运算 15 赋值最低 第64页,共122页。控制语句第65页,共122页。控制语句Java程序通过控制语句来执行程序流,完成一定的任务。Java中的控制语句有以下几类:分支语句:if-else, switch循环语句:while, do-while, for与程序转移有关的跳转语句:break, continue, return例外处理语句:try-catch-finally, throw注释语句:
29、/,/* */, /* */ 第66页,共122页。分支语句条件语句 if-else if(boolean-expression)statement1; else statement2;if括号中的结果应该为布尔值,否则编译不会通过,例如如果x与y是int类型,x=y是赋值语句,其结果不是布尔值,不能充当布尔表达式;如果它们的类型本身为boolean,则x=y可以充当if中的条件。养成if后面无论是一句还是多句代码,都写的习惯第67页,共122页。分支语句举例 public class Test public static void main(String args) int x,y; x=7
30、;y=1; if(x6) if(y6) System.out.println(设备正常); else System.out.println(“设备出错”); if(x6) if(y6) System.out.println(设备正常); else System.out.println(设备出错); 等价第68页,共122页。分支语句多分支语句 switch switch (expression)case value1 : statement1;break;case value2 : statement2;break;case valueN : statemendN;break;default
31、: defaultStatement; 第69页,共122页。多分支语句注意表达式expression的返回值类型必须是这几种类型之一:byte,short ,int, char请注意是普通数据类型,而不是包装类,如Short、Byte等,也不能是long、float或double。case子句中的值valueN必须是常量,而且所有case子句中的值应是不同的。default子句是可选的。break语句用来在执行完一个case分支后,使程序跳出switch语句,即终止switch语句的执行(在一些特殊情况下,多个不同的case值要执行一组相同的操作,这时可以不用break)。第70页,共122
32、页。循环语句 Java语言中提供的循环语句有: while语句、do-while语句、for语句。 while语句 初始化 while (条件表达式)循环体 循环变量控制 条件表达式循环体真假第71页,共122页。do-while语句初始化 do 循环体 循环变量控制 while (条件表达式) 注意:条件表达式中的结果应为布尔值,而不能为算术值。 例如while (y-) x-;条件表达式循环体真假第72页,共122页。for语句 for(表达式1(初始条件);表达式2( 结束条件); 表达式3(循环变量控制)) 循环体 其流程逻辑关系如图所示表达式2循环体真假表达式1表达式3第73页,共1
33、22页。循环语句注意for语句执行时,首先执行初始化操作,然后判断终止条件是否满足,如果满足,则执行循环体中的语句,最后执行迭代部分。完成一次循环后,重新判断终止条件。初始化、终止以及迭代部分都可以为空语句(但分号不能省),三者均为空的时候,相当于一个无限循环。在初始化部分和迭代部分可以使用逗号语句,来进行多个操作。逗号语句是用逗号分隔的语句序列。如果循环变量在for中定义,变量的作用范围仅限于循环体内第74页,共122页。public class Delta static boolean foo(char c) System.out.print(c); return true; public
34、 static void main( String argv ) int i =0; for ( foo(A); foo(B)&(i2); foo(C) i+ ; foo(D); 结果输出为:ABDCBDCB循环语句举例1第75页,共122页。例百鸡问题,公鸡5元/只,母鸡3元/只,小鸡3只/元,问100圆买100只鸡,公鸡、母鸡、小鸡各多少(采用穷举法公鸡最多20只,母鸡33只)public class HandreadChicken public static void main(String args) int z=0;boolean isAnswer=false; for (int i
35、=1;i=20 ;i+ ) for (int j=1;j=33 ;j+ ) z = 100-i-j; if (z%3=0&(5*i+3*j+z/3=100) System.out.println(公鸡+i+只,母鸡+j+只,小鸡+z+只); isAnswer = true; if (!isAnswer) System.out.println(本题无解); 循环语句举例2第76页,共122页。跳转语句Java语言提供了4种转移语句:break,continue,return和throw。转移语句的功能是改变程序的执行流程。break语句可以独立使用,而continue语句只能用在循环结构的循环体
36、中。第77页,共122页。 break语句 break语句通常有下述不带标号和带标号的两种形式:break;break Lab;其中:break是关键字;Lab是用户定义的标号。break语句用在switch语句中,其作用是强制退出switch结构,执行switch结构后的语句。break语句用在单层循环结构的循环体中,其作用是强制退出循环结构。若程序中有内外两重循环,而break语句写在内循环中,则执行break语句只能退出内循环。break lab语句用在循环语句中,必须在外循环入口语句的前方写上lab标号,可以使程序流程退出标号所指明的外循环。第78页,共122页。编程打印1到100中的
37、所有素数public class Test public static void main(String args) int n=0,m,j,i; for (i=3;i=100;i+=2 ) m = (int)Math.sqrt(i); for (j=2;j=m+1) if (n%6=0) System.out.println(); System.out.print(i+ ); n+; /end for /end main/end class break语句举例第79页,共122页。continue语句 continue语句只能用于循环结构中,其作用是使循环短路。 它有下述两种形式: cont
38、inue; 或 continue lab; 其中:continue是关键字;Lab为标号。 continue语句也称为循环的短路语句。用在循环结构中,使程序执行到continue语句时回到循环的入口处,执行下一次循环,而使循环体内写在continue语句后的语句不执行。当程序中有嵌套的多层循环时,为从内循环跳到外循环,可使用带标号的continue lab语句。此时应在外循环的入口语句前方加上标号。第80页,共122页。返回语句returnreturn语句从当前方法中退出,返回到调用该方法的语句处,并从紧跟该语句的下一条语句继续程序的执行。返回语句有两种格式:return expression
39、 ;return; return语句通常用在一个方法体的最后,否则会产生编 译错误,除非用在if-else语句中。第81页,共122页。class TestReturn public static void main(String args) int i = 10; if (i5) return ; /i = 6; else /return; i = 5; 注意:上例中的去掉任意一句注释,都将产生编译错误。 return语句举例第82页,共122页。数组第83页,共122页。数组的概念数组名是符合Java标识符定义规则的用户自定义标识符; 数组的维数用方括号“ ”的个数来确定,对于一维数组来说
40、,只需要一对方括号,二维就是;数组元素的数据类型可以是Java的任何数据类型,例如:基本类型(int、float、double、char等),类(class)或接口(interface)等。声明数组就是要确定数组名、维数和元素的数据类型第84页,共122页。类型标识符 数组名;类型标识符 数组名;例如: int abc; String example; myClass mc ; 注:Java中的数组可以看作是一个对象。例如上面的声明 如果进行了初始化,则看作两个对象,分别为abc和example,它们有自己的属性,如length属性。一维数组的声明格式第85页,共122页。使用关键字new可将
41、数组看成一个特殊对象 格式如下:类型标识符 数组名=new 类型标识符数组长度;类型标识符 数组名=new 类型标识符数组长度;一维数组三种初始化方法之一第86页,共122页。产生一个有10个单元,类型为int的数组对象,所有单元的初值为0, abc = new int10; 产生一个具有10个单元,类型为String的数组对象,所有单元的初值为null,不要写成 new String(10) ,example = new String10; 产生一个类型为myClass容纳10个myClass对象引用的数组对象,每个单元值是null,mc = new myClass10; 一维数组初始化例子
42、注:1)不是产生10个myClass对象; 2)对象数组化的目的在于可以进行对象的遍历控制。 3)数组产生后的默认值同对象属性初始化默认值规定。第87页,共122页。直接在声明的时候进行定义及初始化,例如: String s=ab,bc,cd; int a = 3,4,5,6 对于对象数组: Integer results = new Integer(3), new Integer(5), new Integer(8); String dogs = new String(“Fido”),new String(“Spike”),new String(“Aiko”);一维数组三种初始化方法之二注:
43、这种初始化方法只能写在声明代码中(“”内用 , 号分隔),下面的写法是错误的:int a ; a= 3,4,5,6;第88页,共122页。 采用1和2相结合方式进行初始化,例如: float f4 = new float 1.0f, 2.0f, 3.0f; float f4 ; f4= new float 1.0f, 2.0f, 3.0f; 注:此时float中的 不应该给出具体数字一维数组三种初始化方法之三第89页,共122页。 将数组整体看成一个对象,通过数组引用进行相应的操作: float fl, f2; /f1和f2就是数组声明 fl = new float10; /f1变为引用 f2
44、 = f1; /引用赋值,f2和f1拥有相同的数组成员。 Object o = f1 /这样赋值也成立 Java中数组的下标从0开始,如果数组越界,产生的异常为:IndexOutOfBoundsException (它继承RuntimeException) 若定义数组大小为负数会产生NgativeArraySizeException(它继承RuntimeException),但是数组长度可以为0(不是null)数组引用第90页,共122页。public class test public static void main(String args) for (int i=0;iargs.leng
45、th ;i+ ) System.out.println(argsi); 一个特殊的一维数组上图中的10 20 30 40 50 60 分别存入args数组当中,系统自动为args申请了6个单元。如果运行时仅有java test ,此时args相当于args = new String0; 第91页,共122页。 某些类的方法返回数组对象引用: 例如:linkedList、Vector对象可以调用方法toArray()返回 Object数组,此时数组中为对象的引用,不是对象。 Arrays. sort方法:对char,byte,short,int,float,double,long按升 序排列,也
46、可指定排序方法对对象进行排序(见JDK文档)。 System.arraycopy()复制数组 public static void arraycopy( Object src, int srcPos, /源数组,起始下标位置 Object dest,int destPos, /目的数组,起始下标位 int length) /拷贝长度一维数组的相关方法第92页,共122页。源数组和目的数组类型必须一致。如果是基本数据类型数组,则是值拷贝;如果是对象数组,则是引用拷贝。若src或dest其中一个为null,则会发生发生空指针异常NullPointerException;如果src和dest的类型不
47、一致,则会发生ArrayStoreException;若srcPos+length大于src.length、destPos+length大于dest.length,则会发生 IndexOutOfBoundsException。异常发生时,dest中的内容不会变化。System.arraycopy()方法使用注意第93页,共122页。两个字符数组进行比较(大小写忽略)1.若相等,返回0;2.若不等,按第一个不等的字符大小进行比较,返回1或-1;3.两个字符数组不等直接返回-2 import java.io.*;public class ContrastChar public static int
48、 constrast(char a,char b)char c1=u0000,c2=u0000; int k1=0,k2=0,i=0;k1 = a.length;k2=b.length;if (k1!=k2)return -2;一维数组举例第94页,共122页。for (i=0;i=A & c1=A & c2c2) return 1;elsereturn -1; /end method public static void main(String args) char s1=new char10; s10=a; s11=b; char s2=new char10; s20=a; s21=i;
49、System.out.println(constrast(s1,s2); 第95页,共122页。二维数组的声明格式类型说明符 数组名 ; 类型说明符 数组名; 例如: int arr ; int arr;第96页,共122页。使用关键字new 格式如下:数组名=new 类型说明符数组长度 ; 数组名=new 类型说明符数组长度 数组长度; 其中:对数组名、类型说明符和数组长度的要求与一 维数组一致。对于没有初始化的维度,其值为null。二维数组二种初始化方法之一第97页,共122页。 int arra; arra=new int34; 等价于: arra=new int3; 创建有3个元素的数
50、组,各元素也是一个数组 arra0=new int4;创建arra0元素的数组,它有4个元素 arra1=new int4;创建arra1元素的数组,它有4个元素 arra2=new int4;创建arra2元素的数组,它有4个元素 也等价于: arra=new int3 for(int i=0;i3;i+) arrai=new int4;二维数组初始化例子第98页,共122页。arra0arra1arra2arra00arra01arra02arra03arra10arra11arra12arra13arra20arra21arra22arra23arra二 维 数 组第99页,共122页。
51、是用指定的初值对数组初始化,例如: int arr1=3,-9,6,8,0,1,11,9,8 它等价于: int arr1=new int3; arr10=new int3,-9; arr11= new int8,0,1; arr12= new int10,11,9,8;二维数组二种初始化方法之二 也等价于: int arr1=new int3; int arb1=3,-9; int arb2=8,0,1; int arb3=10,11,9,8; arr10=arb1; arr11=arb2; arr12=arb3;第100页,共122页。注:对于二维数组,当只定义第一维维数时,另一维的维数可
52、以不一样,也就是说不一定是规则的矩阵形式,例如: int arra; arra =new int3; arra0=new int3; arra1=new int2; arra2=new int1; arra0arra1arra2arra00arra01arra02arra10arra11arra20arra第101页,共122页。 编程打印如下图形,打印到8 . 3 3 3 3 3 3 3 . . 3 2 2 2 2 2 3 . . 3 2 1 1 1 2 3 . . 3 2 1 0 1 2 3 . . 3 2 1 1 1 2 3 . . 3 2 2 2 2 2 3 . . 3 3 3 3 3
53、 3 3 . 分析:将数放置到数组当中;将数组中的数打印出来;程序见下页。二维数组应用举例1第102页,共122页。public class Test public static void main (String args) final int num=8; int t= new int2*num+12*num+1; for (int i=0;i=num;i+) for (int j=0;j=num; j+) if(ij) tij= num - i; else tij= num - j; ti2*num-j = tij; t2*num-ij = tij; t2*num-i2*num-j =t
54、ij; for (int i=0;i2*num+1;i+) for (int j=0;j2*num+1; j+ ) System.out.print(tij); System.out.println(“ ); 第103页,共122页。二维数组应用举例2举例编程打印数字斜塔1 3 6 10 15 2 5 9 14 4 8 137 12 11第104页,共122页。public class Test public static void main(String args) final int num=5; int t= new intnumnum; for (int i=0;inum;i+) fo
55、r (int j=0;jnum; j+) if (i=0&j=0) tij=1; else if(j=0) tij=ti-1j+i; else if (i=0) tij=tij-1+j+1; else if (jnum-i) tij=ti-1j+i+j; for (int i=0;inum;i+) for (int j=0;jnum; j+ ) if (jnum-i) System.out.print(tij+ ); System.out.println(); /end main/end class第105页,共122页。数组对象特点及常用方法具有对象引用的特点,例如: public clas
56、s Test public static void printArray(String arg) for (int i= 0;iarg.length ;i+ ) System.out.println(argi); public static void main(String args) printArray(args); 第106页,共122页。数组长度length属性对于一维数组,数组名.length可以得到数组单元的个数对于二维数组,数组名.length得到的是“行数”,而要测出列数,则需要数组名i.length,如果所有行的列数都相等,则为总体的列数。根据上面可以推而广之,数组名.length可以得到第一维 数,数组名i.length,得到某维特定点的另一个维度,依 次类推。第107页,共122页。 矩阵转置public class Test public static void transpose(int m) if (m=null) return;int temp;for (int i=0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 散客旅游合同范本在线查看
- 企业车辆交易协议书模板
- 2024体育赛事场地租赁合同
- 2024版土石方运输合同
- 农村个人购房合同范例
- 合伙协议书范例
- 如何签订借款合同避免风险
- 个人汽车买卖合同样本模板
- 2023年高考地理专题复习新题典题精练-洋流(原卷版)
- 致大海选择性必修中册 第四单元课件
- 电子商务支付结算系统开发合同
- 服务质量、保证措施
- (必练)广东省军队文职(经济学)近年考试真题试题库(含答案)
- 含羞草天气课件
- 2024年安全生产知识竞赛考试题库及答案(共五套)
- 22《鸟的天堂》课件
- 农业灌溉装置市场环境与对策分析
- 新疆乌鲁木齐市第十一中学2024-2025学年八年级上学期期中道德与法治试卷
- 2024年江西省高考地理真题(原卷版)
- 部编版小学五年级上册道法课程纲要(知识清单)
- 经济法学-计分作业一(第1-4章权重25%)-国开-参考资料
评论
0/150
提交评论