资源预览内容
第1页 / 共122页
第2页 / 共122页
第3页 / 共122页
第4页 / 共122页
第5页 / 共122页
第6页 / 共122页
第7页 / 共122页
第8页 / 共122页
第9页 / 共122页
第10页 / 共122页
亲,该文档总共122页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第一章初次接触JAVAJava面向对象程序设计(Java基础Java规范)主要内容主要内容lJava语言网络时代的编程语言lJava语言的特点lJava程序的编译环境和执行环境l第一个Java程序HelloWorldlJava程序的分类lJava平台Java面向对象程序设计(Java基础Java规范)Java语言网络时代的编程语言Java面向对象程序设计(Java基础Java规范)网络时代编程问题网络时代编程问题 网络带给我们精彩的同时,也为编程带来了困难,最为突出的表现为环境复杂Java面向对象程序设计(Java基础Java规范)问题的解决方法问题的解决方法 为了实现一个程序能被多个操作系统所认识,必须像不同语言国家的人交流那样,借助“翻译”的作用我是中国人我是中国人Im a chineseIm an american 我是美国人我是美国人Java面向对象程序设计(Java基础Java规范)C或C+:只有将编译后的文件连接成为.exe,才能在Windows操作系统上运行。C+的解决策略的解决策略Java面向对象程序设计(Java基础Java规范)Java的解决策略的解决策略 :一次编译,处处执行:一次编译,处处执行 Java面向对象程序设计(Java基础Java规范)Java语言的特点Java面向对象程序设计(Java基础Java规范)Asimple,object-oriented,distributed,interpreted,robust,secure,architecture-neutral,portable,high-performance,multi-threaded,anddynamiclanguage。即:Java是一种具有“简单、面向对象、分布式、解释型、健壮、安全、与体系结构无关、可移植、高性能、多线程和动态执行”等特性的语言。Sun公司对公司对Java的定义的定义Java面向对象程序设计(Java基础Java规范)Java程序的编译环境和执行环境Java面向对象程序设计(Java基础Java规范)l编译环境:编译环境的建立需要到Sun的官方网站上下载JDK(JavaDevelopmentKit),网址为:http:/java.sun.com/downloads/ea/。Java源代码从编译到解释执行涉及两种环境源代码从编译到解释执行涉及两种环境l运行环境:运行环境需要到Sun的官方网站上下载JRE(JavaRuntimeEnvironment)Java面向对象程序设计(Java基础Java规范)适用不同操作系统的适用不同操作系统的JDK版本版本Java面向对象程序设计(Java基础Java规范)第一个Java程序HelloWorldJava面向对象程序设计(Java基础Java规范)五个步五个步 骤骤进行JDK的安装配置环境变量编写程序编译执行程序。可能遇到的问题及解决方法可能遇到的问题及解决方法Java面向对象程序设计(Java基础Java规范)Java程序的分类Java面向对象程序设计(Java基础Java规范)l从大类上分为Application和Applet。前面的HelloWorld就是Application程序,它们之间的主要区别如下:ApplicationApplet程序标志静态main方法继承java.applet.Applet,方法中为voidpaint(Graphicsg)运行独立运行,利用java工具不能独立运行,需要依赖浏览器,用appletviewer工具来调试JAVA程序的分类程序的分类Java面向对象程序设计(Java基础Java规范)将将HelloWorld改写成改写成Applet程序程序importjava.awt.*;importjava.applet.*;publicclassHelloWorldAppletextendsAppletpublicvoidinit()publicvoidpaint(Graphicsg)g.drawString(HelloWorld!,25,25);编辑html页面,和HelloWorldApplet.class在同一目录,取名为HelloWorldApplet.html,在其中编写代码:执行结果:Java面向对象程序设计(Java基础Java规范)程序说明程序说明l程序中的import,相当于C语言中的include,是使用已经编译好的类的语法(包括API中的类),在上面的程序当中,如果没有importjava.awt.*;则Graphics类不可使用;没有importjava.applet.*;则Applet类不可使用。lGraphics类用于绘图。lpaint方法(名字不可更改)用于界面刷新Java面向对象程序设计(Java基础Java规范)为什么为什么Applet需要嵌入浏览器执行需要嵌入浏览器执行Applet在浏览器中如何工作的?在浏览器中如何工作的?执行中可能遇到的问题执行中可能遇到的问题Java面向对象程序设计(Java基础Java规范)Java平台Java面向对象程序设计(Java基础Java规范)lJava不仅是编程语言,还是一个开发平台。l目前Sun公司把java平台划分成J2EE、J2SE、J2ME三个平台,针对不同的市场目标和设备进行定位:J2EE是Java2EnterpriseEdition,主要是为企业计算提供一个应用服务器的运行和开发平台。J2EE将逐步发展成可与微软的.NET相对抗的网络计算平台。J2SE是Java2StandardEdition,主要目的是为台式机和工作站提供一个开发和运行的平台。我们在学习java的过程中,主要是采用J2SE来进行开发。J2ME是Java2MicroEdition,主要是面向电子产品提供一个java运行平台,使java程序能够在手机、机顶盒、PDA等产品上运行。Java面向对象程序设计(Java基础Java规范)第二章Java语言基础Java面向对象程序设计(Java基础Java规范)主要内容主要内容l简单数据类型l表达式l控制语句l数组Java面向对象程序设计(Java基础Java规范)简单数据类型Java面向对象程序设计(Java基础Java规范) 标识符标识符l定义:程序员对程序中的各个元素加以命名时使用的命名记号称为标识符(identifier)。lJava语言中,标识符是以字母,下划线“_”,美元符“$”开始的一个字符序列,后面可以跟字母,下划线,美元符,数字。例如,identifier,userName,User_Name,_sys_val,$change为合法的标识符,而2mail(数字开头)、room#(非法字符)、class(关键字)、a-class(含有运算符)都为非法的标识符。Java面向对象程序设计(Java基础Java规范)保留字保留字l概念:具有专门的意义和用途,不能当作一般的标识符,这些标识符称为保留字,也称为关键字。ljava中的所有保留字(均用小写字母表示):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,throw,throws,transient,volatile,void,while。Java面向对象程序设计(Java基础Java规范)数据类型划分数据类型划分java中的数据类型:简单类型和复合类型:l简单数据类型包括:整数类型:byte,short,int,long浮点类型:float,double字符类型:char布尔类型:booleanl复合数据类型包括:class(类)interface(接口)数组Java面向对象程序设计(Java基础Java规范)常量和变量常量和变量常量:用保留字final来实现:final类型varName=value,varName=value;如:finalintNUM=100;变量:java程序中的基本存储单元,它的定义包括变量名、变量类型和作用域几个部分。格式如下:类型varName=value,varName=value;变量名称区分大小写。Java面向对象程序设计(Java基础Java规范)变量的作用域变量的作用域l变量的作用域指明可访问该变量的一段代码,声明一个变量的同时也就指明了变量的作用域。l变量的作用域可分为:局部变量、类属性变量、方法参数和例外处理参数。l在一个确定的域中,变量名应该是唯一的。Java面向对象程序设计(Java基础Java规范)变量作用域变量作用域举例举例下面一段代码因为超过了定义的范围而编译出错。for(inti=0;i高byte,short,char-int-long-float-doublel自动类型转换规则整型,实型,字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算,转换从低级到高级。Java面向对象程序设计(Java基础Java规范)例如TypemethodA(bytex,doubley)return(short)x/y*2;Type的类型将为double。操作数1类型操作数2类型转换后的类型byte、short、charintintbyte、short、char、intlonglongbyte、short、char、int、longfloatfloatbyte、short、char、int、long、floatdoubledoubleJava面向对象程序设计(Java基础Java规范)数据类型转换数据类型转换强制类型转换强制类型转换l强制类型转换:高级数据要转换成低级数据,需用到强制类型转换,如:inti;byteb=(byte)i;/*把int型变量i强制转换为byte型*/Java面向对象程序设计(Java基础Java规范)简单数据类型及其对应包装类简单数据类型及其对应包装类简单数据类型不是类,但Java提供了与简单类型对应的包装类普通数据类型对应的包装类charCharacterbyteByteshortShortintIntegerlongLongfloatFloatdoubleDouble它们之间的相互转化方法为(以int和Integer为例):简单数据类型转化为类对象的方法是:通过相应类的构造方法来完成。如Integervari=newInteger(5);类对象转化为简单数据类型:如上面的vari可以通过调用intValue()方法得到普通数据类型的int值。Java面向对象程序设计(Java基础Java规范)引入这些类的目的:引入这些类的目的:l简单数据类型不具有一些对象的特征,在一些场合不能使用,需要将简单数据类型转为特定的类,进行适当处理后,再转化回来。l实现不同数据类型的转化。l这些类的静态属性中含有相应的范围。Java面向对象程序设计(Java基础Java规范)表达式Java面向对象程序设计(Java基础Java规范)表达式定义表达式定义l表达式是用运算符把操作数连接起来的式子,可分为算术表达式、关系表达式、逻辑表达式、赋值表达式、条件表达式l对各种类型的数据进行加工的过程称为运算,表示各种不同运算的符号称为运算符,参与运算的数据称为操作数l按操作数的数目来分,可有:一元运算符:,(正数),(取负)二元运算符:,instanceof(对象运算符)=等三元运算符:?:Java面向对象程序设计(Java基础Java规范)算术表达式算术表达式是由算术运算符和位运算符将操作数连接组成的表达式算符运算举例等效的运算双目运算符+加法a+b-减法a-b*乘法a*b/除法a/b%取余数a%b单目运算符+自增1a+或+aa=a+1-自减1a4a=a-1-取反-aa=-aJava面向对象程序设计(Java基础Java规范)算术运算符优先级算术运算符优先级顺序分组操作符规则高低子表达式()若有多重括号,首先计算最里面的子表达式的值。若同一级有多对括号,则从左到右计算。单目操作符+,-求单目变量自增自减值。乘法操作符*,/,%若一个表达式中有多个乘法操作符,那么从左到右计算。加法操作符+,-若一个表达式中有多个加法操作符,那么从左到右计算Java面向对象程序设计(Java基础Java规范)算术表达式算术表达式注意注意l两个整数类型的数据做除法时,结果只保留整数部分。l整数和浮点数都能进行取余运算。l“/”运算符,当都为整数时,结果为整数,有一个为浮点,则为浮点数。l自增/自减运算符只适用于变量,且位于运算符的哪一侧有不同效果。lJava中的算术运算主要依赖于Math类的静态方法,例如:取绝对值:Math.abs(Typei),Type可以为int、long、float、double对数取三角和反三角函数、对数和指数、乘方、开方求两个数的最大最小值得到随机数(random(),类型为double)对浮点数进行处理:四舍五入(round)、ceil(取大值)、floor(取小值)Java面向对象程序设计(Java基础Java规范)classTestNumberpublicstaticvoidmain(Stringargs)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)+);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)+);输出结果是:Java面向对象程序设计(Java基础Java规范)例:韩信点兵不足百人,三人一行多一个,七人一行少两个,五人一行正好,问有多少人。publicclassTestSoldierypublicstaticvoidmain(Stringargs)for(inti=1;i大于xyflase小于x=大于等于x=yflase=小于等于x=ytrueJava面向对象程序设计(Java基础Java规范)判断某年是否为闰年(如果是闰年,它应能被4整除,但不能被100整除,或被100整除,也能被400整除)publicclassTestLeapYearpublicstaticvoidisLeapYear(intyear)booleann1=(year%4=0);booleann2=(year%100=0);booleann3=(year%400=0);if(n1=true&n2!=true)|(n2=true&n3=true)System.out.println(year+年是闰年);elseSystem.out.println(year+年不是闰年);publicstaticvoidmain(Stringargs)isLeapYear(1900);isLeapYear(1904);isLeapYear(2000);Java面向对象程序设计(Java基础Java规范)逻辑表达式逻辑表达式l利用逻辑运算符将操作数连接的式子称为逻辑表达式l逻辑表达式参与运算的都是布尔值,结果也是布尔值算符运算举例运算规则&与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时,结果为falseJava面向对象程序设计(Java基础Java规范)逻辑表达式逻辑表达式注意注意l“&”和“|”在执行操作时,运算符左右两边的表达式首先被运算执行,再对两表达式的结果进行与、或运算。l而利用“&”和“|”执行操作时,如果从左边的表达式中得到操作数能确定运算结果,则不再对右边的表达式进行运算。采用“&”和“|”的目的是为了加快运算速度,但也要防止用法上出现的问题,如:classTestpublicstaticvoidmain(Stringargs)intout=10;booleanb1=false;if(b1=true)&(out+=10)=20)System.out.println(相等,out=+out);elseSystem.out.println(不等,out=+out);out结果为10,如将语句改为if(b1=true)&(out+=10)=20)则out结果为20Java面向对象程序设计(Java基础Java规范)赋值表达式赋值表达式l赋值运算符组成的表达式称为赋值表达式。lJava语言中,赋值运算符是“=”。l赋值运算符的作用是将赋值运算符右边的一个数据或一个表达式的值赋给赋值运算符左边的一个变量。注意赋值号左边必须是变量(即没有final修饰的变量)。l赋值运算的另一种形式是复合赋值运算符连接起来的表达式。Java面向对象程序设计(Java基础Java规范)复合赋值运算符举例等效于复合赋值运算符举例等效于+=x+=yx=x+y-+x-=yx=x-y*=x*=yx=x*y/=x/=yx=x/y%=x%=yx=x%y=x=yx=xy&=x&=yx=x&y|=x|=yx=x|y=x=yx=x=x=yx=xy=x=yx=xy赋值表达式赋值表达式各种复合赋值运算符各种复合赋值运算符Java面向对象程序设计(Java基础Java规范)各种位运算符各种位运算符运算符运算举例运算规则(设x=11010110,y=01011001,n=2)运算结果位反x将x按比特位取反00101001&位与x&yx,y按位进行与操作01010000|位或x|yx,y按位进行或操作11011111位异或xyx,y按位进行异或操作10001111左移x右移xnx各比特位右移n位,左边按符号位补0或111110101不带符号的右移xnx各比特位右移n位,左边的空位一律填零00110101l无符号的左移相当于乘2n,右移相当于除2nlinti=0xFFFFFFF1;intj=i;/最高位取反后为正,j值为14l63的结果为5Java面向对象程序设计(Java基础Java规范)条件表达式条件表达式l形式:布尔表达式1?表达式2:表达式表达式2和表达式3的类型必须相同。l条件运算符的执行顺序是:先求解表达式1,若值为true则执行表达式2,此时表达式2的值作为整个条件表达式的值,否则求解表达式3,将表达式3的值作为整个条件表达式的值。l在实际应用中,常常将条件运算符与赋值运算符结合起来,构成赋值表达式,以替代比较简单的if/else语句。l条件运算符的优先级高于赋值运算符,结合方式为“自右自左”。Java面向对象程序设计(Java基础Java规范)classTestpublicstaticvoidmain(Stringargs)floatsum=1.5f;intnum=2;System.out.println(sum2?1:num/sum);程序返回结果是1.0,而不是1,因为sum是浮点数,所以表达式2发生了数据的隐式转化。但是下面的程序则返回1,因为num/sum仍然是整数,所以表达式2的类型保持不变。条件表达式条件表达式举例举例classTestpublicstaticvoidmain(Stringargs)intnum=3,sum=2;System.out.println(sum3?1:num/sum);Java面向对象程序设计(Java基础Java规范)运算符的优先级运算符的优先级l运算符的优先级决定了表达式中不同运算执行的先后次序。优先级高的先进行运算,优先级低的后进行运算。在优先级相同的情况下,由结合性决定运算顺序。l最基本的规律是:域和分组运算优先级最高,接下来依次是单目运算,双目运算,三目运算,赋值运算的优先级最低。Java面向对象程序设计(Java基础Java规范)算符描述优先级结合性.()域运算,数组下标,分组括号 1最高自左至右+-!单目运算2单目右/左new(type)分配空间,强制类型转换3自右至左*/%算术乘、除、求余运算4双目自左至右(左结合性)+-算术加减运算5位运算6=小于/小于等于/大于/大于等于7=!=相等,不等8&按位与9按位异或10|按位或11&逻辑与12|逻辑或13?:条件运算符14三目自右至左(右结合性)=*=/=%=+=-=&=|=赋值运算15赋值最低Java面向对象程序设计(Java基础Java规范)控制语句Java面向对象程序设计(Java基础Java规范)控制语句控制语句lJava程序通过控制语句来执行程序流,完成一定的任务。lJava中的控制语句有以下几类:分支语句:if-else,switch循环语句:while,do-while,for与程序转移有关的跳转语句:break,continue,return例外处理语句:try-catch-finally,throw注释语句:/,/*/,/*/Java面向对象程序设计(Java基础Java规范)分支语句分支语句条件语句条件语句 if-elseif(boolean-expression)statement1;elsestatement2;if括号中的结果应该为布尔值,否则编译不会通过,例如如果x与y是int类型,x=y是赋值语句,其结果不是布尔值,不能充当布尔表达式;如果它们的类型本身为boolean,则x=y可以充当if中的条件。养成if后面无论是一句还是多句代码,都写的习惯Java面向对象程序设计(Java基础Java规范)分支语句分支语句举例举例publicclassTestpublicstaticvoidmain(Stringargs)intx,y;x=7;y=1;if(x6)if(y6)System.out.println(设备正常);elseSystem.out.println(“设备出错”);if(x6)if(y6)System.out.println(设备正常);elseSystem.out.println(设备出错);等价Java面向对象程序设计(Java基础Java规范)分支语句分支语句多分支语句多分支语句 switchswitch(expression)casevalue1:statement1;break;casevalue2:statement2;break;casevalueN:statemendN;break;default:defaultStatement;Java面向对象程序设计(Java基础Java规范)多分支语句多分支语句注意注意表达式expression的返回值类型必须是这几种类型之一:byte,short,int,char请注意是普通数据类型,而不是包装类,如Short、Byte等,也不能是long、float或double。case子句中的值valueN必须是常量,而且所有case子句中的值应是不同的。default子句是可选的。break语句用来在执行完一个case分支后,使程序跳出switch语句,即终止switch语句的执行(在一些特殊情况下,多个不同的case值要执行一组相同的操作,这时可以不用break)。Java面向对象程序设计(Java基础Java规范)循环语句循环语句lJava语言中提供的循环语句有:while语句、do-while语句、for语句。while语句初始化while(条件表达式)循环体循环变量控制条件表达式循环体真假Java面向对象程序设计(Java基础Java规范)do-while语句初始化do循环体循环变量控制while(条件表达式)注意:条件表达式中的结果应为布尔值,而不能为算术值。例如while(y-)x-;条件表达式条件表达式循环体循环体真假Java面向对象程序设计(Java基础Java规范)for语句for(表达式1(初始条件);表达式2(结束条件);表达式3(循环变量控制))循环体其流程逻辑关系如图所示表达式表达式2循环体循环体真假表达式表达式1表达式表达式3Java面向对象程序设计(Java基础Java规范)循环语句循环语句注意注意for语句执行时,首先执行初始化操作,然后判断终止条件是否满足,如果满足,则执行循环体中的语句,最后执行迭代部分。完成一次循环后,重新判断终止条件。初始化、终止以及迭代部分都可以为空语句(但分号不能省),三者均为空的时候,相当于一个无限循环。在初始化部分和迭代部分可以使用逗号语句,来进行多个操作。逗号语句是用逗号分隔的语句序列。如果循环变量在for中定义,变量的作用范围仅限于循环体内Java面向对象程序设计(Java基础Java规范)publicclassDeltastaticbooleanfoo(charc)System.out.print(c);returntrue;publicstaticvoidmain(Stringargv)inti=0;for(foo(A);foo(B)&(i2);foo(C)i+;foo(D);结果输出为:ABDCBDCB循环语句举例循环语句举例1Java面向对象程序设计(Java基础Java规范)例百鸡问题,公鸡5元/只,母鸡3元/只,小鸡3只/元,问100圆买100只鸡,公鸡、母鸡、小鸡各多少(采用穷举法公鸡最多20只,母鸡33只)publicclassHandreadChickenpublicstaticvoidmain(Stringargs)intz=0;booleanisAnswer=false;for(inti=1;i=20;i+)for(intj=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(本题无解);循环语句举例循环语句举例2Java面向对象程序设计(Java基础Java规范)跳转语句跳转语句lJava语言提供了4种转移语句:break,continue,return和throw。l转移语句的功能是改变程序的执行流程。lbreak语句可以独立使用,而continue语句只能用在循环结构的循环体中。Java面向对象程序设计(Java基础Java规范) break语句语句break语句通常有下述不带标号和带标号的两种形式:lbreak;lbreakLab;其中:break是关键字;Lab是用户定义的标号。break语句用在switch语句中,其作用是强制退出switch结构,执行switch结构后的语句。break语句用在单层循环结构的循环体中,其作用是强制退出循环结构。若程序中有内外两重循环,而break语句写在内循环中,则执行break语句只能退出内循环。breaklab语句用在循环语句中,必须在外循环入口语句的前方写上lab标号,可以使程序流程退出标号所指明的外循环。Java面向对象程序设计(Java基础Java规范)编程打印1到100中的所有素数publicclassTestpublicstaticvoidmain(Stringargs)intn=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+;/endfor/endmain/endclass break语句举例语句举例Java面向对象程序设计(Java基础Java规范)continue语句语句continue语句只能用于循环结构中,其作用是使循环短路。它有下述两种形式:continue;或continuelab;其中:continue是关键字;Lab为标号。continue语句也称为循环的短路语句。用在循环结构中,使程序执行到continue语句时回到循环的入口处,执行下一次循环,而使循环体内写在continue语句后的语句不执行。当程序中有嵌套的多层循环时,为从内循环跳到外循环,可使用带标号的continuelab语句。此时应在外循环的入口语句前方加上标号。Java面向对象程序设计(Java基础Java规范)返回语句返回语句returnlreturn语句从当前方法中退出,返回到调用该方法的语句处,并从紧跟该语句的下一条语句继续程序的执行。l返回语句有两种格式:returnexpression;return;return语句通常用在一个方法体的最后,否则会产生编译错误,除非用在if-else语句中。Java面向对象程序设计(Java基础Java规范)classTestReturnpublicstaticvoidmain(Stringargs)inti=10;if(i5)return;/i=6;else/return;i=5;注意:上例中的去掉任意一句注释,都将产生编译错误。return语句语句举例举例Java面向对象程序设计(Java基础Java规范)数组Java面向对象程序设计(Java基础Java规范)数组的概念数组的概念l数组名是符合Java标识符定义规则的用户自定义标识符;l数组的维数用方括号“”的个数来确定,对于一维数组来说,只需要一对方括号,二维就是;l数组元素的数据类型可以是Java的任何数据类型,例如:基本类型(int、float、double、char等),类(class)或接口(interface)等。声明数组就是要确定数组名、维数和元素的数据类型Java面向对象程序设计(Java基础Java规范)l类型标识符 数组名;l类型标识符 数组名;例如:intabc;Stringexample;myClassmc;注:Java中的数组可以看作是一个对象。例如上面的声明如果进行了初始化,则看作两个对象,分别为abc和example,它们有自己的属性,如length属性。一维数组的声明格式一维数组的声明格式Java面向对象程序设计(Java基础Java规范)使用关键字new可将数组看成一个特殊对象格式如下:类型标识符数组名=new类型标识符数组长度;类型标识符数组名=new类型标识符数组长度;一维数组一维数组三种初始化方法之一三种初始化方法之一Java面向对象程序设计(Java基础Java规范)l产生一个有10个单元,类型为int的数组对象,所有单元的初值为0,abc=newint10;l产生一个具有10个单元,类型为String的数组对象,所有单元的初值为null,不要写成newString(10),example=newString10;l产生一个类型为myClass容纳10个myClass对象引用的数组对象,每个单元值是null,mc=newmyClass10;一维数组一维数组初始化例子初始化例子注注:1)不是产生10个myClass对象;2)对象数组化的目的在于可以进行对象的遍历控制。3)数组产生后的默认值同对象属性初始化默认值规定。Java面向对象程序设计(Java基础Java规范)直接在声明的时候进行定义及初始化,例如:Strings=ab,bc,cd;inta=3,4,5,6对于对象数组:Integerresults=newInteger(3),newInteger(5),newInteger(8);Stringdogs=newString(“Fido”),newString(“Spike”),newString(“Aiko”);一维数组一维数组三种初始化方法之二三种初始化方法之二注:这种初始化方法只能写在声明代码中(“”内用,号分隔),下面的写法是错误的:inta;a=3,4,5,6;Java面向对象程序设计(Java基础Java规范)采用1和2相结合方式进行初始化,例如:floatf4=newfloat1.0f,2.0f,3.0f;floatf4;f4=newfloat1.0f,2.0f,3.0f;注:此时float中的不应该给出具体数字一维数组一维数组三种初始化方法之三三种初始化方法之三Java面向对象程序设计(Java基础Java规范)l将数组整体看成一个对象,通过数组引用进行相应的操作:floatfl,f2;/f1和f2就是数组声明fl=newfloat10;/f1变为引用f2=f1;/引用赋值,f2和f1拥有相同的数组成员。Objecto=f1/这样赋值也成立lJava中数组的下标从0开始,如果数组越界,产生的异常为:IndexOutOfBoundsException(它继承RuntimeException)l若定义数组大小为负数会产生NgativeArraySizeException(它继承RuntimeException),但是数组长度可以为0(不是null)数组引用数组引用Java面向对象程序设计(Java基础Java规范)publicclasstestpublicstaticvoidmain(Stringargs) for(inti=0;iargs.length;i+)System.out.println(argsi);一个特殊的一维数组一个特殊的一维数组上图中的102030405060分别存入args数组当中,系统自动为args申请了6个单元。如果运行时仅有javatest,此时args相当于args=newString0;Java面向对象程序设计(Java基础Java规范)l某些类的方法返回数组对象引用:例如:linkedList、Vector对象可以调用方法toArray()返回Object数组,此时数组中为对象的引用,不是对象。lArrays.sort方法:对char,byte,short,int,float,double,long按升序排列,也可指定排序方法对对象进行排序(见JDK文档)。lSystem.arraycopy()复制数组publicstaticvoidarraycopy(Objectsrc,intsrcPos,/源数组,起始下标位置Objectdest,intdestPos,/目的数组,起始下标位intlength)/拷贝长度一维数组的相关方法一维数组的相关方法Java面向对象程序设计(Java基础Java规范)l源数组和目的数组类型必须一致。l如果是基本数据类型数组,则是值拷贝;如果是对象数组,则是引用拷贝。l若src或dest其中一个为null,则会发生发生空指针异常NullPointerException;如果src和dest的类型不一致,则会发生ArrayStoreException;若srcPos+length大于src.length、destPos+length大于dest.length,则会发生IndexOutOfBoundsException。异常发生时,dest中的内容不会变化。System.arraycopy()方法使用注意方法使用注意Java面向对象程序设计(Java基础Java规范)两个字符数组进行比较(大小写忽略)1.若相等,返回0;2.若不等,按第一个不等的字符大小进行比较,返回1或-1;3.两个字符数组不等直接返回-2importjava.io.*;publicclassContrastCharpublicstaticintconstrast(chara,charb)charc1=u0000,c2=u0000;intk1=0,k2=0,i=0;k1=a.length;k2=b.length;if(k1!=k2)return-2;一维数组一维数组举例举例Java面向对象程序设计(Java基础Java规范)for(i=0;i=A&c1=A&c2c2)return1;elsereturn-1;/endmethodpublicstaticvoidmain(Stringargs)chars1=newchar10;s10=a;s11=b;chars2=newchar10;s20=a;s21=i;System.out.println(constrast(s1,s2);Java面向对象程序设计(Java基础Java规范)二维数组的声明格式二维数组的声明格式l类型说明符数组名;l类型说明符数组名;例如:intarr;intarr;Java面向对象程序设计(Java基础Java规范)使用关键字new格式如下:数组名=new类型说明符数组长度;数组名=new类型说明符数组长度数组长度;其中:对数组名、类型说明符和数组长度的要求与一维数组一致。对于没有初始化的维度,其值为null。二维数组二维数组二种初始化方法之一二种初始化方法之一Java面向对象程序设计(Java基础Java规范)intarra;arra=newint34;等价于:arra=newint3;创建有3个元素的数组,各元素也是一个数组arra0=newint4;创建arra0元素的数组,它有4个元素arra1=newint4;创建arra1元素的数组,它有4个元素arra2=newint4;创建arra2元素的数组,它有4个元素也等价于:arra=newint3for(inti=0;i3;i+)arrai=newint4;二维数组二维数组初始化例子初始化例子Java面向对象程序设计(Java基础Java规范)arra0arra1arra2arra00arra01arra02arra03arra10arra11arra12arra13arra20arra21arra22arra23arra二维数组Java面向对象程序设计(Java基础Java规范)是用指定的初值对数组初始化,例如:intarr1=3,-9,6,8,0,1,11,9,8它等价于:intarr1=newint3;arr10=newint3,-9;arr11=newint8,0,1;arr12=newint10,11,9,8;二维数组二维数组二种初始化方法之二二种初始化方法之二也等价于:intarr1=newint3;intarb1=3,-9;intarb2=8,0,1;intarb3=10,11,9,8;arr10=arb1;arr11=arb2;arr12=arb3;Java面向对象程序设计(Java基础Java规范)注:对于二维数组,当只定义第一维维数时,另一维的维数可以不一样,也就是说不一定是规则的矩阵形式,例如:intarra;arra=newint3;arra0=newint3;arra1=newint2;arra2=newint1;arra0arra1arra2arra00arra01arra02arra10arra11arra20arraJava面向对象程序设计(Java基础Java规范)编程打印如下图形,打印到8 . 3333333. 3222223. 3211123. 3210123. 3211123. 3222223. . 3333333.分析:将数放置到数组当中;将数组中的数打印出来;程序见下页。二维数组二维数组应用举例应用举例1Java面向对象程序设计(Java基础Java规范)publicclassTestpublicstaticvoidmain(Stringargs)finalintnum=8;intt=newint2*num+12*num+1;for(inti=0;i=num;i+)for(intj=0;j=num;j+)if(ij)tij=num-i;elsetij=num-j;ti2*num-j=tij;t2*num-ij=tij;t2*num-i2*num-j=tij;for(inti=0;i2*num+1;i+)for(intj=0;j2*num+1;j+)System.out.print(tij); System.out.println(“);Java面向对象程序设计(Java基础Java规范)二维数组二维数组应用举例应用举例2举例编程打印数字斜塔136101525914481371211Java面向对象程序设计(Java基础Java规范)publicclassTestpublicstaticvoidmain(Stringargs)finalintnum=5;intt=newintnumnum;for(inti=0;inum;i+)for(intj=0;jnum;j+)if(i=0&j=0)tij=1;elseif(j=0)tij=ti-1j+i;elseif(i=0)tij=tij-1+j+1;elseif(jnum-i)tij=ti-1j+i+j;for(inti=0;inum;i+)for(intj=0;jnum;j+)if(jnum-i)System.out.print(tij+);System.out.println();/endmain/endclassJava面向对象程序设计(Java基础Java规范)数组对象特点及常用方法数组对象特点及常用方法l具有对象引用的特点,例如:publicclassTestpublicstaticvoidprintArray(Stringarg)for(inti=0;iarg.length;i+)System.out.println(argi);publicstaticvoidmain(Stringargs)printArray(args);Java面向对象程序设计(Java基础Java规范)l数组长度length属性对于一维数组,数组名.length可以得到数组单元的个数对于二维数组,数组名.length得到的是“行数”,而要测出列数,则需要数组名i.length,如果所有行的列数都相等,则为总体的列数。根据上面可以推而广之,数组名.length可以得到第一维数,数组名i.length,得到某维特定点的另一个维度,依次类推。Java面向对象程序设计(Java基础Java规范) 矩阵转置矩阵转置publicclassTestpublicstaticvoidtranspose(intm) if(m=null)return;inttemp;for(inti=0;im.length;i+)for(intj=0;jj)temp=mij;mij=mji;mji=temp;/endinnerfor/endoutfor/endmethodpublicstaticvoidprint(intm)if(m=null)return;for(inti=0;im.length;i+)for(intj=0;j0&switchMark=1)/交换条件switchMark=0;/交换前初值for(inti=0;iprei+1)/将大数放入到数组的后面temp=prei+1;/进行数的交换prei+1=prei;prei=temp;switchMark=1;m=m-1;/下一趟交换的最大次数Java面向对象程序设计(Java基础Java规范)第三章 Java程序工程规范Java面向对象程序设计(Java基础Java规范)l为什么要有规范?lJava程序编写规范 主要内容主要内容Java面向对象程序设计(Java基础Java规范)为什么要有规范?为什么要有规范? l软件开发是一个集体协作的过程,程序员之间的代码是经常要进行交换阅读的,为了提高java程序的可读性,以及管理上的方便性java源程序有一些约定成俗的命名规定。 l优秀的程序代码的标准首先是易于阅读,其次才是效率高低的问题。Java面向对象程序设计(Java基础Java规范)Java程序编写规范Java面向对象程序设计(Java基础Java规范)Java程序编写规范 有多个import语句时,先写java包(都是java包时,按照字母先后顺序排序),后写javax,最后写其它公司的包和自己定义的包。命名规则为:包名中的字母一律小写,xxxyyyzzz。类名、接口名应该使用名词,每个单词的首字母大写,如XxxYyyZzz。变量名、方法名第一个字母小写,后面每个单词的首字母大写,如xxxYyyZzz。常量中的每个字母大写,如XXXYYYZZZ。Java面向对象程序设计(Java基础Java规范)Java程序编写规范(Cont)程序强调匹配的同时,要保持适当的缩进,以便于阅读。必要时应有一定的程序注释量(2050): 注释内容有:程序头说明,属性说明,方法说明。 Java中的注释共有两种方式多行注释:/* 文字或程序语句 */ 单行注释:/ 文字或程序语句Java面向对象程序设计(Java基础Java规范)注意:注意:l/* 文字或程序语句 */不能嵌套,即/* /*文字或程序语句*/ */是非法的。l程序中写注释不仅有助记作用,而且还可以利用javadoc生成帮助文档,当然能够生成帮助文档的注释必须具备一定的规则,那就是注释格式必须为: /* /* 说明信息说明信息 * */ / Java面向对象程序设计(Java基础Java规范)生成帮助文档的注释格式 程序头说明:注释符为/* 说明部分 */,在说明部分一般包括文档的标题、描述、版权、作者、版本等信息。其中作者用 “author ”的形式体现,内容和关键字之间用空格隔开。其它为: version ; see ; since 。Java面向对象程序设计(Java基础Java规范)方法说明:用于说明本方法的主要用途,实现的基本思 路,属性信息有: param ; return ; exception ; throws ; deprecated 。Java面向对象程序设计(Java基础Java规范)程序注释举例程序注释举例importjava.awt.*;importjava.applet.*;/*Title:这是一个演示程序*Description:用于说明Applet程序的典型特征*author无名氏*version1.0*/publicclassHelloWorldAppletextendsApplet/*初始化*/publicvoidinit()/*用于绘制界面*paramg为内部对象*return*/publicvoidpaint(Graphicsg)g.drawString(HelloWorld!,25,25);Java面向对象程序设计(Java基础Java规范)程序说明:程序说明:的含义是在生成的html中换行;而author不用写的原因是,这种属性可以自动换行。javadoc-dHelloWorldDoc-version-authorHelloWorldApplet.java-d的含义是将所有生成的帮助文件全部放入本目录下的子目录HelloWorldDoc下, -version和-author是在帮助文件中列出相关的这方面信息。如果想知道更多javadoc,输入javadochelp。Java面向对象程序设计(Java基础Java规范)Java面向对象程序设计(Java基础Java规范)Java面向对象程序设计(Java基础Java规范)
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号