• 645.11 KB
  • 2022-04-22 11:52:06 发布

《Java编程基础知识点汇总及习题集》--答案.docx

  • 71页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'目录第一章Java入门2第二章Java基础5第三章条件转移14第四章循环语句20第五章方法26第六章数组33第七章面向对象42第八章异常6371 第一章Java入门71知识点汇总1、JAVA三大体系nJavaSE:(J2SE,Java2PlatformStandardEdition,标准版),三个平台中最核心的部分,包含Java最核心的类库。nJavaEE:(J2EE,Java2Platform,EnterpriseEdition,企业版),开发、装配、部署企业级应用,包含Servlet、JSP、JavaBean、JDBC、EJB、WebService等。nJavaME:(J2ME,Java2PlatformMicroEdition,微型版),用于小型电子设备上的软件开发。2、JDK,JRE,JVM的作用及关系·作用★JVM:保证Java语言跨平台★JRE:Java程序的运行环境★JDK:Java程序的开发环境·关系★JDK:JRE+工具★JRE:JVM+类库3、JDK环境变量配置npath环境变量:存放可执行文件的存放路径,路径之间用逗号隔开nclasspath环境变量:类的运行路径,JVM在运行时通过classpath加载需要的类4、重点掌握两个程序njavac.exe:Java编译器工具,可以将编写好的Java文件(.java)编译成Java字节码文件(.class);njava.exe:Java运行工具,启动Java虚拟机进程,运行编译器生成的字节码文件(.class)5、一切程序运行的入口publicstaticvoidmain(Stringargs[]){System.out.println(“HelloWorld!”);}课堂笔记71 练习题一、填空题1、Java的三个技术平台分别是(J2SE)、(J2EE)、(J2ME)。2、Sun公司针对领域不同,提供了三个Java版本,其中对于个人计算机程序开发的是(J2SE),对于企业开发应用的是(J2EE),对于嵌入式设备应用开发的是(J2ME)。3、建立Java开发环境,安装JDK,一般需要设置环境变量(path)、(classpath)。4、编写一个Java源程序,其文件名为Test.java,则编译该源程序的命令为(javac),运行该程序的命令为(java),生成文档注释的命令为(javadoc)。5、Java程序的运行环境简称之为(JRE)。6、编译Java程序需要使用(javac)命令。7、javac.exe和java.exe两个可执行程序放在JDK安装目录的(bin)目录下。8、(path)环境变量用来存储Java的编译和运行工具所在的路径,而(classpath)环境变量则用来保存Java虚拟机要运行的“.class”文件路径。9、Java的源代码文件的扩展名是(.java)。10、Java编译器的输入文件的类型是(.java)。11、Java编译器的输出文件的类型是(.class)。12、运行Java应用程序的命令是(java)。二、选择题1、以下选项中,哪些属于JDK工具?(多选)(ABCD)A、Java编译器B、Java运行工具C、Java文档生成工具D、Java打包工具2、Java属于以下哪种语言?(C)A、机器语言B、汇编语言C、高级语言D、以上都不对3、下面哪种类型的文件可以在Java虚拟机中运行?(D)A、.JavaB、.jreC、.exeD、.class4、安装好JDK后,在其bin目录下有许多exe可执行文件,其中“java.exe”命令的作用是以下哪一种?(D)A、Java文档制作工具B、Java解释器C、Java编译器D、Java启动器5、如果jdk的安装路径为“d:jdk”,若想在命令窗口中任何当前路径下,都可以直接使用javac和java命令,需要将环境变量path设置为以下哪个选项?(B)A、d:jdk;B、d:jdkbin;C、d:jrebin;D、d:jre;6、编译一个定义了两个类和三个方法的Java源程序文件,总共将产生(D)个字节码文件。A、5个字节码文件,以“.java”为扩展名B、2个字节码文件,以“.java”为扩展名C、5个字节码文件,以“.class”为扩展名D、2个字节码文件,以“.class”为扩展名7、做为Java应用程序入口的main()方法,其声明格式可以是(A)A、publicstaticvoidmain(String[]args);B、publicstaticintmain(String[]args);C、publicvoidmain(String[]args);D、publicintmain(String[]args);8、下面选项中,(D)是Java关键字。A、thenB、PUBLICC、javaD、public9、(D)不是Java的开发工具A、EclipseB、NetBeansC、JBuilderD、VC++6.010、程序语句“System.out.println(“one”+1+“,Two”+2);”运行后的结果为(D)A、one,1,Two,2B、One1Two2C、One,TwoD、One1,Two271 1、下列哪项不是JDK所包含的内容?(C)A.Java编程语言B.工具及工具的APIC.JavaEE扩展APID.Java平台虚拟机2、下列关于JDK、JRE和JVM的描述。哪项正确?(D)A.JDK中包含了JRE,JVM中包含了JREB.JRE中包含了JDK,JDK中包含了JVMC.JRE中包含了JDK,JVM中包含了JRED.JDK中包含了JRE,JRE中包含了JVM3、下列哪个工具可以编译java源文件?(A)A.javacB.jdbC.javadocD.junit4、JDK工具javadoc的作用是哪项?(A)A.生成Java文档B.编译Java源文件C.执行Java类文件D.测试Java代码5、以下哪些包是Java标准库中常用的包?(多选)(ACD)A.java.langB.javax.servlet.httpC.java.ioD.java.sql6、使用JDK工具生成的Java文档的文件格式是?(D)A.XML格式B.自定义格式c.二进制格式D.HTML格式7、以下关于JVM的叙述,哪项正确?(多选)(BC)A.JVM运行于操作系统之上,它依赖于操作系统B.JVM运行于操作系统之上,它与操作系统无关C.JVM支持Java程序运行,它能够直接运行Java字节码文件D.JVM支持Java程序运行,它能够直接运行Java源代码文件8、以下关于支持Java运行平台的叙述,哪项错误?(C)A.Java可在Solaris平台上运行B.Java可在Windows平台上运行C.Java语言与平台无关。Java程序的运行结果依赖于操作系统D.Java语言与平台无关。Java程序的运行结果与操作系统无关9、以下关于Applet和Java程序之间关系的叙述,哪项错误?(B)A.-个Applet就是一段Java程序B.Applet是一种特殊的Java程序,它需要运行在Web服务器上C.Applet是一种特殊的Java程序,它需要运行在Web浏览器上D.Applet是一种JavaSE平台的应用程序10、以下关于JavaHotSpot的描述,哪两项错误?(多选)(AD)A.JavaHotSpot是一种热编译技术,在编译Java源程序时会被使用B.JavaHotSpot是一种热编译技术,在运行Java代码时会被使用C.JavaHotSpot是一种热编译技术,它只对程序的部分字节码进行优化D.JavaHotSpot是一种热编译技术,它会对程序的全部字节码进行优化11、环境变量PATH中含有多个路径时,路径和路径之间可以用哪项来隔开?(A)A.;B.,C.*D:|12、CLASSPATH中的“.”的含义是哪项?(B)A.省略号B.当前目录C.所有目录D.上级目录13、JVM在执行一个Java类时,大致采用以下过程?(D)A.执行类中的代码一>装载类一>校验类B.校验类一>装载类一>执行类中的代码C.装载类一>执行类中的代码一>校验类D.装载类一>校验类一>执行类中的代码14、当运行—个Java程序时,传递参数的格式是哪项?(C)A.java类名参数1,参数2B.javac类名参数1参数2C.java类名参数1参数2D.java类名参数1+参数215、以下关于Java文件名的叙述,正确的有?(多选)(AB)A.Java源文件的扩展名应为.javaB.Java源文件的文件名应与文件中的类名一致71 C.Java字节码文件的扩展名应为.JavaD.一个Java源文件中只能包含一个Java类三、编程题1、编写程序,在控制台上显示短句:“知识就是力量”。要求:(1)一行显示整个语句。(2)分三行显示,每行显示两个汉字。classHelloWord{publicstaticvoidmain(Stringargs[]){System.out.println("知识就是力量");System.out.println("知识n就是n力量");}}第二章Java基础71知识点汇总1、Java代码的基本格式修饰符class类名{程序代码;}l修饰符:public、private、default、abstract、fanal、staticl类名必须与文件名相同(public类)l每条语句的最后都必须用分号(;)结束l严格区分大小写l代码整齐、美观、层次清晰l字符串用“+”连接2、Java中的注释:注释是对程序某个功能或某行代码的说明n单行注释“//”n多行注释“/**/”n文档注释“/***/”,可以使用javadoc命令生成帮助文档3、Java中的标识符n大小写字母、数字、下划线(_)和美元号($)n标识符不能以数字开头n不能是Java中的关键字4、标识符命名规则(驼峰命名法)n包的名字一律小写n类名和接口名每个单子的首字母大写n常量名所有字母都大写,单词之间用下划线连接n变量名和方法名第一字单词首字母小写,从第二个单词开始每个单词的首字母大写n尽量使用有意义的英文单词定义标识符课堂笔记71 71711、变量的类型2、Java中的变量n变量的声明方法变量的赋值n变量的声明+赋值赋值3、Unicode字符集nUnicode为每种语言的每个字符设定了统一并且唯一的二进制码;nJava使用Unicode字符集编码n每个字符占2个字节n存字符的字符集编码与取字符的字符集编码不一致,就会出现乱码现象4、变量的类型转换n自动类型转换(隐式类型转换):取值范围小的类型赋值给取值范围大的类型u如:doublea=1.2;intb=3;a=b;n强制类型转换(显式类型转换):取值范围大的类型赋值给取值范围小的类型,强制类型转换格式:目标类型变量=(目标类型)值u如:doublea=1.2;intb=3;b=(int)a;5、变量的作用域n在程序中,变量一定会被定义在某个大括号中,该大括号所包含的代码区域便是这个变量的作用域71 711、运算符算术运算符赋值运算符比较运算符逻辑运算符+===&-+=!=|+-=<^-*=>!*/=<=&&/%=>=||%++++----2、赋值运算符运算符运算范例结果=赋值a=3;b=2;a=3;b=2;+=加等于a=3;b=2;a+=ba=5;b=2;-=减等于a=3;b=2;a-=ba=1;b=2;*=乘等于a=3;b=2;a*=ba=6;b=2;/=除等于a=3;b=2;a/=ba=1;b=2;%=模等于a=3;b=2;a%=ba=1;b=2;3、逻辑运算符n&与&&都表示与操作,当且仅当两边的操作数都为true时,结果才为真;n&:无论左边为true还是false,右边都要进行运算n&&:如果左边为false,右边不再运算n|与||都表示或操作,当两边操作数有一边为true,结果就为真;n|:无论左边为true还是false,右边都要进行运算n||:如果左边为true,右边不再运算4、运算符的优先级优先级运算符1.、[]、()2++、--、!3*、/、%4+、-5<、>、<=、>=71 6==、!=7&8^9|10&&11||12?:13=、*=、/=、%=、+=、-=、&=、^=、|=1、获取输入信息nSystem.out:表示输出流,print()是输出到控制台,println输出到控制台,并且将光标移到下一行nSystem.in:表示输入流,输入流来自键盘,需要使用Scanner类创建对象读取来自System.in的输入lImportjava.uitil.Scanner;lScannerscanner=newScanner(System.in)linta=scanner.nextInt()方法功能.next()读取一个字符串,字符串遇到空格就终止.nextByte()读取byte类型的整数.nextShort()读取short类型的整数.nextInt()读取int类型的整数.nextLong()读取long类型的整数.nextFloat()读取float类型的整数.nextDouble()读取double类型的整数2、常量nfinal类型常量名=具体的值3、转义字符:\'(单引号)、\"(双引号)、\\(反斜杠)、\r(回车)、\n(换行)、\t(Tab键)、\b(退格)练习题一、填空题1.Java中程序代码必须在一个类中定义,类使用(class)关键字来定义。2.布尔常量即布尔类型两个值,分别是(true)和(false)。3.Java中的注释可以分为三种类型(单行注释)(多行注释)和(文档注释)。4.单行注释(//),多行注释以(/*)开头,(*/)结尾,多行文档注释以(/**)开头,(*/)结尾。5.Java中的变量可分为两种数据类型,分别是(基本数据类型)和(引用数据类型)。6.在Java中,byte类型数据占(1)个字节,short类型数据占(2)个字节,int类型数据占(4)个字节,long类型占(8)字节。7.在逻辑运算符中,运算符(&)和(&&)用于表示逻辑与,(|)和(||)表示逻辑或。8.若x=2,则表达式(x++)/3的值是(0)。9.若inta=2;a+=3;执行后,变量a的值为(5)。71 1.表达式6/3.0的结果是(2.0)。2.如果要得到表达式25/4的浮点数结果,表达式应改为(25/4.0)。3.表达式1%5的结果是(1)。4.设有“inta=2;doubled=2.0;”,下列每个表达式都是独立的,填写表达式的执行结果。(1)a=46/9;(5)(2)a=46%9+4*4-2;(15)(3)a=45+43%5*23*3%2;(46)(4)a%=3/a+3;(2)(5)d=4+d*d+4;(12.0)(6)d+=1.5*3+(++a);(9.5)(7)d-=1.5*3+(++a);(-5.5)5.下列语句输出的结果是(30+20=3020)。System.out.println(“30+20=”+30+20);6.执行以下三条语句后,a=(3),b=(1),c=(3)。inta=1;intb=a++;intc=++a;7.以下语句输出(Hesaid”Javaisfun.”)。System.out.println(“Hesaid”Javaisfun.””);8.已知:inta=8,b=6;则:表达式++a-b++的值为(3)。9.已知:booleanb1=true,b2;则:表达式!b1&&b2||b2的值为(false)。10.已知:doublex=8.5,y=5.8;则:表达式x++>y--值为(true)。11.执行intx,a=2,b=3,c=4;x=++a+b+++c++;结果是(x=10,a=3,b=4,c=5)。12.Java中的显式类型转换是(从低类型向高类型转换),从高类型向低类型转换是(隐式类型转换)。13.执行下列程序代码的输出结果是(i=11j=11a=10)。inta=10;inti,j;i=++a;j=a--;14.执行完booleanx=false;booleany=true;booleanz=(x&&y)&&(!y);intf=z==false?1:2;这段代码后,z与f的值分别是(false)和(1)。15.对于在程序运行过程中一直不变的值,可以声明成(常量)确保它的值不会被修改,在声明时使用(final),还必须(赋初值)。16.在声明类中,方法之内的变量就叫做(局部)变量。17.数据类型转换时,两种数据类型(兼容)并且(目标)类型大于(源)类型,则可以自动类型转换。18.字面量都有默认类型,整型字面量的默认类型为(int),浮点型字面量的默认类型是(double)。19.long类型字面量末尾字母是(L),float类型字面量末尾字母是(F),double的是(D)。一、选择题1.以下选项中,哪些属于合法的标识符?(多选)(AD)A、Hello_WorldB.classC.123usernameD.username1232.下列哪些是合法的标识符(多选)(ABCD)A、appletB、AppletC、$4D、$$443.下列哪个不是Java的关键字(D)A、elseB、publicC、intD、radius4.byte类型数据中最大的数据为(A)71 A、127B、128C、255D、2561.short类型数据中最大数据为(C)A、65535B、65536C、32767D、327682.表达式25/4的结果是(B)A、6.25B、6C、6.0D、以上都不对3.以下关于变量的说法错误的是?(C)A、变量名必须是一个有效的标识符B、变量在定义时可以没有初始值C、变量一旦被定义,在程序中的任何位置都可以被访问D、在程序中,可以将一个byte类型赋值给一个int类型的变量,不需要特殊声明4.下面的运算符中,用于执行除法运算的是哪个?(A)A、/B、C、%D、*5.double类型的数据占用(B)字节。A、4B、8C、1D、26.”floatf=15.6F;inti=(int)f;System.out.println(“f=”+f);”执行后的结果是(A)。A、f=15.6B、f=15C、f=15.0D、以上都不对7.下列语句正确的是(A)。A、booleanb=true;B、doublex=2.5f;C、charc=AD、floaty=0.8d8.Java程序中,计算表达式”-1-3*10/5-1”后的结果是(A)。A、-8B、-6C、7D、89.下面(D)赋值语句不会出现编译警告或错误。A、floatf=1.3B、charc=aC、byteb=257D、inti=1010.下列标识符(名字)命名原则中,正确的是(C)。A.类名的首字母小写B.接口名的首字母小写C.常量全部大写D.变量名和方法名的首字母大写11.下面哪种注释方法能够支持javadoc命令?(C)A.//B./*...*/C./**...*/D./**...**/12.下面哪些标识符在Java语言中是合法的?(AB)A.persons$B.TwoUsersC.*pointD.instanceofF.end-line13.下列(D)是合法标识符。A.2endB.-helloC.=ABD.整型变量14.若定义有变量floatf1,f2=8.0F,则下列说法正确的是(B)。A.变量f1,f2均被初始化为8.0B.变量f1没有被初始化,f2被初始化为8.0C.变量f1,f2均未被初始化D.变量f2没有被初始化,f1被初始化为8.015.基本数据类型short的取值范围是(B)。A.(-256)~255B.(-32768)~32767C.(-128)~127D.0~6553516.下列(B)是不能通过编译的语句。A.doubled=545.0;B.chara1=“c”;C.inti=321;D.floatf1=45.0f;17.若定义有shorts;byteb;charc;则表达式s*b+c的类型为(C)。A.charB.shortC.intD.byte18.下列代表十六进制整数的是(C)。A.012345B.2008C.0xfa08D.fb0519.哪些是合法的标识符(多选)(AEFHIJ)。A、NameB、2helloC、classD、a-publicE、SexF、MIN_VALUEG、age#H、_idI、getNamej、$main71 1.下列选项中为byte类型的取值范围的是(C)。A、1~255B、0~65535C、-128~127D、-32768~327672.下列选项中,Java语句错误的是(C)。A、doublea=3.5B、chara=322C、flata=1.0D、doublea=13.下列选项中,合法的字符类型是(B)。A、’ab’B、’b’C、”123”D、”u123f”4.Stringc=1+2+”6”+5;如果输出c,那么c的值是(C)。A、1265B、14C、365D、语法错误5.下列选项中,赋值语句不会出现编译错误的是(C)。A、floata=2.0B、charc=”a”C、byteb=25D、booleand=16.下列选项中,赋值语句产生编译错误的是( AB  )。A、chara=’abc’B、byteb=1234C、longc=0x123D、doubled=1e-3f7.下列哪项不属于Java语言的基本数据类型?(B)A.intB.StringC.doubleD.boolean8.下列哪项不是int类型的字面量?(A)A.u03A6B.077C.OxABBCD.209.下列哪项不是有效的标识符?(B)A.userNameB.2testC.$changeD._password10.下列哪项是Java语言中所规定的注释样式?(多选)(ACD)A.//单行注释B.--单行注释C./*D./***单行或多行注释*文档注释*/*/11.下列哪项不是Java语言的关键字?(B)A.gotoB.sizeofC.instanceofD.volatile7112.现有如下五个声明:Linel:inta_really_really_really_long_variable_name=5;Line2:int_hi=6;Line3:intbig=Integer.getlnteger("7”);Line4:int$dollars=8;line5:int%opercent=9;哪行无法通过编译?(D)A.Line1B.Line3C.Line4D.Line513.现有:1.classTop{2.staticintx=l;3.publicTop(inty){x*=3;}4.}5.classMiddleextendsTop{6.publicMiddle(){x+=1;}7.publicstaticvoidmain(String[]args){8.Middlem=newMiddle();9.System.out.println(x);1O.}11.}结果为(D)A.1B.2C.3D.编译失败71 1.现有:1.classPasser{2.staticfinalintX=5;3.publicstaticvoidmain(String[]args){4.newPasser().go(x);5.System.out.print(x);6,}7.voidgo(intx){8.System.out.print(x++);9.}10.}结果是什么?(A)A.55B.56C.65D.662.现有:1.classWrench{2.publicstaticvoidmain(String[]args){3.Wrenchw=newWrench();Wrenchw2=newWrench();4.w2=go(w,w2);5.System.out.print(w2==w);6.}7.staticWrenchgo(Wrenchwrl,Wrenchwr2){8.Wrenchwr3=wrl;wrl=wr2;wr2=wr3;9.returnwr3;10.}11.}结果是什么?(B)A.falseB.trueC.编译失败D.运行的时候有异常抛出3.现有:1.classWrench2{2.intsize;3.publicstaticvoidmain(String[]args){4.Wrench2w=newWrench2();5.w.size=II;6.Wrench2w2=go(w,w.size);7.System.out.print(w2.size);8.}9.staticWrench2go(Wrench2wr.ints){10.S=12;11.returnwr;12.}13.}结果为(A)A.11B.12c.编译失败。D.运行时异常被抛出4.现有:classTest2fpublicstaticvoidmain(String[]args){shorta,b,C;a=l;b=2;C=a+b;a+=2:}}以上代码中,哪一句是错误的?(B)71 A.a=1:B.C=a+b;C.a+=2;D.shorta,b,C;1.表达式:1-2/5+2*5的结果是哪项?(D)A.10.6B.9.8C.9D.112.现有代码片段:Strings="123";Stringsl=S+456;请问sl的结果是哪项?(A)A.123456B.579C.编译错误D.运行时抛出异常3.基本数据类型float的包裹类是哪项?(C)A.IntegerB.DoubleC.FloatD.Character4.现有:1.classTest4{2.publicstaticvoidmain(String[]args){3.booleanX=true;4.booleany=false;5.shortZ=42;6.if((z++==42)&&(y=true))z++;7.if((x=false)||(++z==45))z++;8.System.out.println(¨z=”+z);9.}10.}结果为(D)A.Z=42B.z=44C.Z=45D.z=46一、修改程序错误1.publicclassTest{publicstaticvoidmain(Stringargs[]){inti;intk=100.0;//k=100;intj=i+1;}}2.publicclassTest{publicvoidmain(Stringargs[]){floatf=12.5;//doublef=12.5;intk=f;//doublek=f;intj=f+1;//doublej=f+1;}}3.publicclassTest{publicvoidmain(Stringargs[]){bytei=128;//inti=128;longk=i*3+4;doubled=k*3.1;}}4.publicclassTest{publicvoidmain(Stringargs[]){doubled=1234.5;longk=long(d);//longk=(long)d;longi=k+3.5;//doublei=k+3.5;}}5.publicclassTest{71 publicvoidmain(Stringargs[]){charc=”a”;//Stringc=”a”;Strings=”1234”;c=a;//c=s;}}一、分析程序,写出运行结果1.publicclassTest{publicvoidmain(Stringargs[]){byteb=3;b=b+4;System.out.println(“b=”+b);}}//b=72.publicclassTest{publicvoidmain(Stringargs[]){intx=12;{inty=96;System.out.println(“xis”+x);System.out.println(“yis”+y);}y=x;System.out.println(“xis”+x);}}//编译出错二、编程题1、按照以下要求,编写Java代码:(1)声明一个名为milles的double型变量,初值为100;(2)声明一个名为MILE_TO_KILOMETER的double型常量,其值为1.609(3)声明一个名为kilometer的double型变量,并赋值为11.5,将miles和MILE_TO_KILOMETER相乘,并将结果赋值给kilometer;(4)在控制台上显示kilometer,现在kilometer的值是多少?classHelloWord{publicstaticvoidmain(Stringargs[]){doublemilles=100;finaldoubleMILE_TO_KILOMETER=1.609;doublekilometer=11.5;kilometer=milles*MILE_TO_KILOMETER;System.out.print("现在kilometer的值是"+kilometer);}}2、按照以下要求,编写Java代码:(1)先定义3个变量,分别为圆柱体底面半径、高和体积;(2)输入半径和高;(3)计算圆柱体体积;(4)输出计算结果。71 importjava.util.Scanner;classHelloWord{publicstaticvoidmain(Stringargs[]){doublev,r,h;finaldoublePI=3.14;Scannerscan=newScanner(System.in);System.out.println("请输入半径:");r=scan.nextDouble();System.out.println("请输入高:");h=scan.nextDouble();v=PI*r*r*h;System.out.println("体积为:"+v);}}1、编写程序将磅转换为千克。程序提示用户输入磅数,转换为千克并显示结果。一磅约等于0.454千克。importjava.util.Scanner;classHelloWord{publicstaticvoidmain(Stringargs[]){doublex,y;Scannerscan=newScanner(System.in);System.out.println("请输入磅数:");x=scan.nextDouble();y=0.454*x;System.out.println(x+"磅="+y+"千克");}}2、编写一个程序,读入费用与提成率,计算提成与总费用。例如,如果输入10作为费用,12%作为提成率,则显示提成费为1.2,总费用为11.2。importjava.util.Scanner;classHelloWord{publicstaticvoidmain(Stringargs[]){doublex,y,s;Scannerscan=newScanner(System.in);System.out.println("请输入费用:");x=scan.nextDouble();y=x*0.12;s=x+y;System.out.println("总费用="+s);}}3、71 编写程序读入0到1000之间的一个整数,并将其各个位上的数字加起来。例如,整数832,各位数字之和为13。importjava.util.Scanner;classHelloWord{publicstaticvoidmain(Stringargs[]){intx,y;Scannerscan=newScanner(System.in);System.out.println("请输入一个整数:");x=scan.nextInt();y=x%10+x/10%10+x/100%10;System.out.println(x+"各个数位的和="+y);}}第三章条件转移71知识点汇总1、简单if结构if(布尔类型表达式){语句一;语句二;….….}课堂笔记2、一般if结构if(布尔类型表达式){语句一;语句二;….….}else{语句三;语句四;….….}3、复杂的if结构if(布尔类型表达式1){语句一;语句二;….….}elseif(布尔类型表达式2){语句三;语句四;….….}elseif(布尔类型表达式n){语句五;语句六;….….}else{语句七;….….}4、Switch条件语句Switch(表达式){//”表达式”的结果只允许char/byte/int/short四种类型case值1:语句序列1;break;case值2:语句序列2;break;….…..case值n:语句序列n;break;71 [default:默认语句序列;break;]}1、三元运算符判断条件?表达式1:表达式271练习题一、填空题1、假设x为1,给出下列布尔表达式的结果(1)(x>0)||(x<0)(true)(2)(x!=0)||(x==0)(true)(3)(x>=0)||(x<0)(true)(4)(x!=1)==!(x==1)(true)2、写出一个布尔表达式,使得变量a中储存的数据在10到100之间时,表达值为true。(a>=10&&a<=100)3、已知charx=’a’;chary=’c’;依次给出下列语句的输出结果。(1)System.out.println(x-y)(-2)(2)System.out.println(x>y)(false)(3)System.out.println(x0?x+1:5的运算结果是哪一个?(C)A、0B、2C、3D、53、下面一段程序运行结束时,变量y的值为下列哪一项?(A)intx=1;inty=2;if(x%2==0){y++;}else{y--;}System.out.println(“y=”+y);A、1B、2C、3D、44、在switch(expression)语句中,expression的数据型不能是(C)。A.charB.shortC.doubleD.byte5、下列程序m的哪些值将引起"default"的输出?(CD)switch(m){case0:System.out.println("case0");case1:System.out.println("case1");break;case2:default:System.out.println("default");}A.0B.1C.2D.36、变量num中储存的数据在10到100之间或值为负数时,表达式值为true。这样的一个布尔表达式是(B)A、(num>10||num<100)&&(num<0)B、(num>10&&num<100)||(num<0)C、(num>10)&&(num<100)&&(num<0)D、(num>100&&num<10)||(num<0)7、当x为1时,布尔表达式“(x!=1)&&(x==1)”的结果是(C)。A、trueB、1C、falseD、08、当x为1时,布尔表达式“(true)&&(3>4)”的结果是(C)。A、trueB、1C、falseD、以上都不对9、当x为1时,布尔表达式“!(x>0)&&(x>0)”的结果是(B)。A、trueB、falseC、0D、以上都不对10、假设x与y都为int类型,下列java表达式正确的是(D)A、x>y>0B、(x!=0)||(x=0)C、xoryD、以上都不对11、考虑以下嵌套的if语句,说法正确的是(D)。if(conditioon1){if(condituion2){statement1;}elsestatement2;}A、只有当condition1=false及condition2=false时,statement2才能执行B、无论condition2是什么,只要condition1=false,statement2就能执行C、statement2无论在什么情况下,都不能执行D、只有当condition1=true及condition2=false时,statement2才能执行12、以下一段代码执行完毕后y的值是(B)。intx=11;if(x>5){inty=x+5;}71 else{inty=x-5;}A、16B、6C、11D、013、已知x=7,y=11,表达式“(x>6||y<=10)”的值为(C)。A、0B、falseC、trueD、114、以下说法哪个正确(A)。A、break语句在switch-case语句中不是必需的,但在case语句李没有break语句,执行结果可能会不同B、switch-case语句中没必要使用break语句C、switch-case语句中必须使用break语句,否则会引起语法错误D、以上都不正确15、表达式“z=(6>5)”?11:10的值是(B)。A、10B、11C、6D、516、下述程序运行后的结果是哪项?(B)classTestApp{publicstaticvoidmain(String[]args){intx=6;if(x>l)System.out.println("x>l");elseif(x>5)System.out.println("x>5");elseif(x<10)System.out.println("x5B.x>lC.x<10D.x<2917、下列程序运行后的结果是哪项?(B)classTestApp{publicstaticvoidmain(String[]args){intX=5:switch(x){casel:case2:case3:System.out.println(“一季度”);break;case4:case5:case6:System.out.println(“二季度”);break;default:System.out.println(“三季度以上”);break;}}}A.一季度B.二季度C.三季度以上D.无输出71 18、下列程序的结果为(A)。classIfs{publicstaticvoidmain(String[]args){booleanstate=false;inti=2;if((++i>2)&&(state=true))i++;if((++i>4)ll(state=false))i++;System.out.println(i);}}A.6B.5C.4D.编译失败19、下列程序结果为(C)。classOutput(publicstaticvoidmain(String[]args){inti=5:System.out.print("4"+i+"");System.out.print(i+5+"7");System.out.println(i+"8");}}A.99722B.955758C.4510758D.45972220、下列程序的结果是(B)。classTest2fpublicstaticvoidmain(String[]args){booleanx=true;booleany=false;shortz=20;if((x==true)&&(y=true))z++;if((y==true)||(++z==22))z++;System.out.println("z="+z);}}A.z=21B.z=22C.z=23D.z=24一、修改程序错误1.publicclassTest{publicvoidmain(Stringargs[]){intx=4,j=0;switch(x){case1:j++;//break;case2:j++;//break;case3:j++;//break;case4:j++;//break;case5:j++;//break;default:j++;//break;}71 System.out.println(j)}}2.switch(n){case1:system.out.println(""Thenameis1");//break;case2:system.out.println(""Thenameis2");break;}一、分析程序,写出运行结果1、对下列代码,当x=2,y=3时,若有输出,指出输出的结果。当x=3,y=2时,其输出是什么?当x=3,y=3时呢?if(x>2){if(y>2){intz=x+y;System.out.println(“zis”+z);}}elseSystem.out.println(“xis”+x);x=2y=3zis2x=3y=2无输出x=3y=3zis62、执行下列switch-case语句后y是多少?x=3;y=3;switch(x+3){case6:y=1;default:y+=1}y=23、用switch-case语句重写下列if语句?if(a==1){x+=5;}elseif(a==2){x+=10;}elseif(a==3){x+=16;}switch(a){case1:x+=5;break;case2:x+=10;break;case3:x+=16;break;}4、使用条件运算符重写下列if语句71 if(count%10==0)System.out.println(count+”n”);elseSystem.out.println(count+””);System.out.print(count+(count%10==0?”n”:””));1、用if-else语句重写以下语句z=(x>y)?x-2:x;if(x>y){z=x-2;}else{Z=x;}一、编程题1、用户输入一个成绩(整数,小于100),根据分数给出该成绩是优秀(大于等于90)、良好(大于等于75小于90)、合格(大于等于60小于75)还是不及格(小于60)。(使用if和switch两种方式编写程序)。2、读入一个整数并检查它是不是偶数,例如,如果输入15,输出应该是:“15是偶数吗?false”。如果输入是1000,输出应该是:“1000是偶数吗?true”。3、读入三角形的三条边,如果输入有效,计算它的周长;否则,显示输入无效。如果任意两边的和大于第三边输入有效。4、产生两个10以下的随机整数,并提示用户输入这两个整数的和,然后,程序检查结果是否正确,正确的话,显示true;否则,显示false。5、“员工信息系统”:要求输入一个企业员工的姓名、性别、工号、月基本工资、奖金、补贴后,计算个人所得税。系统输出员工姓名、性别、工号和月应发薪水和实发薪水(月应发薪水-个人所得税)。个人所得税计算方法:当收入<=3500时,免交个人所得税;当3500<收入<=5000时,个人所得税=(工资-3500)*0.05;当5000<收入<=7500时,个人所得税=1500*0.05+(工资-5000)*0.075;当7500<收入<=10000时,个人所得税=1500*0.05+2500*0.075+(工资-7500)*0.12;当10000<收入<=13000时,个人所得税=1500*0.05+2500*0.075+2500*0.12+(工资-10000)*0.18;当收入>13000时,个人所得税=工资*0.2。第四章循环语句知识点汇总课堂笔记711、While循环语句初始化;while(循环条件){执行语句;……循环变量改变;}71 1、do-while循环语句do{执行语句;……}while(循环条件)do…while至少执行循环体一次,while有可能一次也不执行2、For循环语句for(初始化表达式;循环条件;操作表达式){循环体;}3、循环嵌套l循环嵌套是指在一个循环语句的循环体中再定义一个循环语句的语法结构。lWhile、do…while、for循环语句都可以进行嵌套,也可以相互嵌套。for(初始化表达式;循环条件;操作表达式){….….for(初始化表达式;循环条件;操作表达式){执行语句;….….}}4、跳转语句l程序设计时,有时需要中断正在执行的程序段,转而执行另外的程序段,这时就需要使用跳转语句。lJava语言支持break、continue两种跳转语句。lbreak:在switch-case语句中控制程序跳出switch-case语句,在循环语句中break的作用是立即终止包含它的最内层的循环。lcontinue:只用于循环结构中,只终止本次循环,进入下一次循环。lbreak语句出现在嵌套循环中的内循环时,只能跳出内层循环,如果想使用break语句跳出外循环则需要对外层循环添加标记。标记名:for(初始化表达式;循环条件;操作表达式){….….for(初始化表达式;循环条件;操作表达式){执行语句;break标记名;….….}}71 练习题一、填空题1、for循环控制的三部分是()、()、()2、写一个for循环,输出整数1到10()3、break语句和continue语句的区别是()4、while循环与do-while循环的区别是()5、如果一个变量是在for循环中说明的,退出循环后还可以使用该变量吗?()二、选择题1、下列语句哪些属于循环语句?(多选)()A、for语句B、if语句C、while语句D、switch语句2、下列循环语句的循环次数是()。inti=5;do{System.out.println(i--);i--;}while(i!=0);A.5B.无限C.0D.13、下列代码哪几行会出错?()1)publicvoidmodify(){2)intI,j,k;3)I=100;4)while(I>0){5)j=I*2;6)System.out.println("Thevalueofjis"+j);7)k=k+1;8)I--;9)}10}A.line4B.line6C.line7D.line84、下列代码执行完后,x的值为()。intx=1;while(x<73){x*=2;}A、100B、2C、64D、1285、下列代码执行完后,x的值为()。intx=18;while(x>1){x/=2;}A、1B、0C、9D、以上都不对6、下列代码执行完后,s的值为()。ints=0;for(inti=1;i<5;i++){s+=i;}A、10B、15C、5D、以上都不对7、下列代码执行完后,s的值为()。ints=0;for(inti=1;i<5;i+=2){s+=i;}A、10B、15C、4D、以上都不对8、下列代码执行完后,s的值为()。ints=0;for(inti=1;i<7;i++){if(i%2==0)continue;s+=i;}71 A、16B、9C、6D、以上都不对9、给定下列代码,如果x=0,当以下for循环语句执行完后,x是()。for(inti=0;i<5;i++)x=x+i;A、10B、15C、5D、410、下段代码执行完毕后,结果为()。ints=0;for(inti=1;i<10;i++){if(i>=5)break;s+=I;}A、10B、15C、5D、以上都不对11、下列语句会执行()次循环。for(inti=1;i<10;i+=3){…..//dosomething}A、3B、4C、2D、以上都不对12、关于下列循环语句段,正确的说法是()。for(;;){…//dosomething}A、不做循环B、无限循环下去C、循环1次D、以上都不对13、执行下列代码,正确的说法是()。intx=1;ints=0;while(x<5){s+=x;}A、结果是x=1,s=10B、程序陷入死循环C、结果是x=5,s=10D、以上都不对14、程序运行后的输出是哪项?()classTestApp{publicstaticvoidmain(String[]args){for(inti=0;i1&++y<10)y++;}System.out.println(y);}}A.7B.8C.10D.12一、修改程序错误1.publicclassTest{publicvoidmain(Stringargs[]){intn=9;while(n>6){System.out.println(n);n--;}}}2.找出下面代码的错误部分,说明错误类型及原因,并更正。intx=1;while(x<=10);{i++;}二、分析程序,写出运行结果1、publicclassExercises5_2{publicstaticvoidmain(String[]args){intn=1,m,j,i;for(i=3;i<=30;i+=2){m=(int)Math.sqrt((double)i);for(j=2;j<=m;j++)if((i%j)==0)break;if(j>=m+1){System.out.print(i+"");if(n%5==0)System.out.print("n");n++;}}}}运行结果是:()2、下列循环重复多少次,循环的输出是什么?inti=1;while(i>10)if((i++)%2==0)System.out.println(i);71 3、下列两个循环后,sum是否有相同的值?for(inti=0;i<10;i++){sum+=i;}for(inti=0;i<10;++i){sum+=i;}4、将下列for循环语句分别转换为while循环和do-while循环。longsum=0;for(inti=0;i<=1000;i++){sum=sum+i;}1、下列两段程序能够正常结束吗?如果能,输出结果。intbalance=1000;while(true){if(balance<9)continue;balance=balance-9;}System.out.println(“balanceis”+balance);intbalance=1000;while(true){if(balance<9)break;balance=balance-9;}System.out.println(“balanceis”+balance);2、publicclassTest04{publicstaticvoidmain(Stringargs[]){intn=9;while(n>6){System.out.println(n);n--;}}}一、编程题1、对1到100的奇数进行求和(for+continue);2、编写程序,采用适当的循环和控制语句实现下述功能:打印输出0~200能被7整除但不能被4整除的所有;要求每行显示6个数据。3、编写一个显示(英里转换成千米)表格的程序(注意:1英里为1.609千米),格式如下:英里千米11.60923.218…….………914.4811016.094、提示用户输入学生的数量及每个学生的名字和得分,而后显示得分最高的学生。5、显示从100到1000之间所有能被5和6整除的数,每行显示10个。6、显示从100到200之间所有能被5或6整除,但不能同时被两者整除的数,每行显示10个数。7、计算0~10之间各个整数的平方值和立方值,以如下格式显示:71 整数平方立方000111248….……1010010001、采用循环语句显示以下图案:***************2、计算公式的值:1/1+2/(1+2)+3/(1+2+3)+…..+10/(1+2+3+……+10)。3、在上一章“员工信息系统”程序基础上,输入多个员工信息,进行个人所得税计算,显示每个员工信息,并计算所有员工实际收入的最大值、最小值和平均值。第五章方法知识点汇总1、方法的语法格式修饰符返回类型方法名(参数类型参数名1,参数类型参数名2,……){执行语句;……return返回值;}n修饰符:public、private、abstract、fanal、staticn返回类型:byte/int/short/long/float/double/char/String/类名等等n方法名:第一个单词小写,其他的单词首字母大写n参数类型:用于限定调用方法时传入参数的数据类型n参数名:是一个变量,用于接收调用时传入的数据nreturn:用于结束方法以及返回方法指定的类型的值n返回值:返回值与返回类型一致,如果是void类型则没有返回值2、方法的调用n没有返回类型:方法名(参数值1,参数值2,……)n有返回类型:返回类型变量名=方法名(参数值1,参数值2,……)3、方法的重载nJava中允许在一个程序中定义多个名称相同的方法n但参数的类型或个数必须不同71 n在方法调用过程中,通过传入的参数便可以确定调用哪个重载的方法了4、递归方法n一个方法可以调用自己,这种调用成为递归调用n一般来说,递归方法需要有退出条件n当满足条件时,递归方法终止并且返回课堂笔记71 练习题一、填空题1、Java语言规定,应用程序开始执行点是()。2、在Java语言中,一个方法一般由两个部分组成,它们是()和()。3、在一个被调用方法中,一个return语句可返回(一个值)给调用的方法。4、在调用方法时,如果实参是数组名,它与对应形参之间的数据传递方式是()5、Java语言中规定方法的返回值的类型是由()决定的。二、选择题1、关于方法重载的描述,以下选项中哪些是正确的?多选()A、方法名必须一致B、返回值类型必须不同C、参数个数必须一致D、参数的个数或类型不一致2、下列是方法定义的形参表,定义形式正确的是()。A、intnum1,num2B、num1,num2C、intnum1,intnum2D、intnum1;intnum23、Java中主方法头部定义的正确格式是()。A、publicstaticvoidmain();B、publicstaticvoidmain(Stringargs[])C、publicstaticvoidmain(intargs[])D、staticpublicintmain(Stringargs[])4、一个方法的头部是“publicstaticintmin(intnum1,intnum2)”,下列调用格式错误的是()。A、min(5.0,10)B、min(5+2,10)C、min(‘5’,10)D、min(‘5’,min(‘6’,10))5、若有以下调用语句,则正确的fun()方法头部是()。publicstaticvoidmain(Stringargs[]){floatx;inta;…….fun(x,a);}A、voidfun(intm,floatx)B、voidfun(floata,intx)C、voidfun(intm,floatx[])D、voidfun(intx,floata)6、有如下函数调用语句“func(rec1,rec2+rec3,(rec4,rec5));”,该语句中,含有的实参个数是()。A、3B、4C、5D、有语法错误7、Java中,在调用重载方法时,原则是()。A、只要方法名一致,就可以调用B、必须方法名一致,参数的个数、类型、顺序一致C、只要方法名一致,与参数的个数、类型、顺序一致D、与方法的返回值有关8、Java参数的传递方式有()。A、按值传递B、按地址传递C、按值或地址传递D、以上都不对9、下列方法重载,正确的是()。A、intfun(inta,floatb)B、floatfun(inta,floatb){}floatfun(inta,floatb){}floatfun(intx,floaty){}C、floatfun(floata)D、floatfun1(inta,floatb){}71 floatfun(floata,floatb){}floatfun2(inta,floatb){}10、关于方法的说法,下面错误的是()。A、Java中的方法,参数传递时是值传递调用,而不是地址传递B、方法体是对方法的实现,包括变量声明和Java的合法语句C、如果程序定义了一个或多个构造方法,在创建对象时,也可以用系统自动生成空的构造方法。D、类的私有方法不能被其子类直接访问11、如果一个方法没有return语句,那么()。A、编译时会产生语法错误B、它一定是void方法C、它一定是int、double、float方法D、类的私有方法不能被其子类直接访问12、关于方法以下说法正确的是()。A、Java中每个方法是一个独立的程序;B、Java类中一个方法一旦被定义,程序运行时其代码一定被执行;C、某个方法若未被任何其它方法调用,则其中的代码一定不会被执行;D、Java程序中main方法一定不会被其它方法调用,所以main方法一定不会被执行。13、关于方法的返回值和return语句,以下说法正确的是()。A、Java中每个方法都必须有返回值;B、一个方法可以返回多个返回值;C、有返回值的方法中必须有return语句。D、返回值类型为void的方法不能有return语句14、关于方法的参数以下说法正确的是()。A、Java中每个方法都必须有参数;B、一个方法可以有多个形参变量也可以没有;C、有返回值的方法必须有参数。D、型参变量是int型方法,调用语句中所给的实参数据也必是int型的。15、若有方法定义:staitcintfun(intnum){return2*num;}以下调用语句正确的是()。A、System.out.println(fun(‘A’+‘B’));B、inta=fun(2.3) ;C、fun(2,3);D、if(fun(4))System.out.println(“正确”);16、以下程序运行结果是()。publicclassTest{publicstaticvoidmain(String[]args){inta=1,b[]={2};add(a);add(b);System.out.println(a+","+b[0]);}staticintadd(intx){x++;returnx;}staticvoidadd(int[]x){x[0]++;}}A、1,2B、2,2C、1,3D、2,317、关于重载,以下说法正确的是()。71 A、重载方法的返回值类型必须相同;B、重载方法的方法名必须不同;C、重载方法的参数个数必须不同。D、重载方法的形参表必须不同。18、以下方法用以返回传入的两个正整数的最大公约数,该代码段编译运行会出错吗?出现的错误是什么?()1.staticintadd(intx,inty){2.if(x>y){3.intz=x;x=y;y=z;4.}5.inti;6.for(i=x-1;i>0;i--){7.if(x%i==0&&y%i==0)returni;8.}9.}A、第1行出错,两个同为int的形参变量定义应该是:intx,y;B、第1行出错,方法没有返回int值;C、第2行出错,x和y未赋值;D、方法不出错19、下列方法定义中,正确的是()。A、intx(inta,b){intw;w=a-b;}B、doublex(inta,intb){return(a-b);}C、doublex(a,b){returna-b;}D、intx(doublea,doubleb){returnb;}20、以下max()方法要从传入的两个数据中找出较大的数据返回,则正确定义该方法的代码是()。A、intmax(inta,intb){if(a>b)returna;elseif(b>a)returnb;}B、intmax(inta,intb){if(a>b);returna;elsereturnb;}C、intmax(inta,b){if(a>b)returna;elsereturnb;}D、intmax(inta,intb){if(a>b)returna;returnb;}一、修改程序中的错误1、以下方法是将输入的一个整数反序打印出来,例如,输入”1234”,则输出“4321”;输入“-1234”,则输出“-4321”,修改下面方法中的错误。staticvoidprintopp(longn){inti=0;if(n==0)return0;elsewhile(n!=0){if(n>0||i==0)System.out.print(n%10);elseSystem.out.print(-n%10);i=1;n=n%10;}}}71 1、以下程序的功能是使用递归方法求斐波那契数列前20项。修改下面程序中的错误。publicclassFibonacci{//使用递归方法privatestaticintgetFibo(inti){if(i==1||i==2)Return1;elseReturngetFibo(i+1)+getFibo(i+2);}Publicstaticvoidmain(Stringargs[]){System.out.print(“斐波那契数列的前20项为:”);for(intj=1;j<=20;j++){System.out.print(getFibo(j)+”t”);if(j%5==0)System.out.println;}}}3、下面方法是求100~1000的水仙花数,改正方法中的错误。staticintfun(intn){inti,j,k;i=n%100;//i=n/100j=n%10-i*10;//j=n/10-i*10k=n/10;//k=n%10;if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)returnn;elsereturn0;}2、以下程序的功能是计算下面函数的值,改正方法中的错误。Fx,y,z=sin⁡(x)sin⁡(x-y)sin⁡(x-z)+sin⁡(y)sin⁡(y-z)sin⁡(y-x)-sin⁡(z)sin⁡(z-x)sin⁡(z-y)publicclassFun{staticdoublefun(doublex,doubley,doublez){returnMath.sin(x)/(Math.sin(x-y)*Math.sin(x-z))}publicstaticvoidmain(Stringargs[]){doublex=20,y=30,z=40;System.out.println(fun(x,y,z)+fun(x,y,z)-fun(z,x,y));}}71 一、阅读程序1、阅读下列程序,说明程序的功能publicstaticintsumDigits(longn){intsum=0;while(n/10!=0){sum+=n%10;n=n/10;}sum=sum+n;returnsum}2、阅读下列程序,说明程序的功能publicstaticvoidsort(intnum1,intnum2,intnum3){inttemp;if(num1>num2){temp=num1;num1=num2;num2=temp;}if(num2>num3){temp=num2;num2=num3;num3=temp;}if(num1>num2){temp=num1;num1=num2;num2=temp;}System.out.println("输入的三个数按升序排列为"+num1+"<"+num2+"<"+num3);}二、编程题1、使用下述方法头,计算一个整数各位数字之和。publicstaticintsumDigits(longn)2、编写以下方法,按升序排列三个数并输出。publicstaticvoidsort(intnum1,intnum2,intnums)3、编写一个求“s=a+aa+aaa+…+aaa…a”的值的方法,其中a是一个1到9之间的数字。例如“2+22+222+2222+22222”(此时共有5个数相加),由用户输入确定相加项数。4、一个数如果恰好等于它的因子之和,这个数就称为完数,例如6=1+2+3。编程找出1000以内的所有完数。5、编写一个方法,计算下列级数。m(i)=1/2+2/3+…+i/(i+1)71 第六章数组711、一维数组声明与创建n声明:数据类型[]数组名;或者数据类型数组名[];n创建:数组名=new数据类型[数组长度];n声明And创建:数据类型[]数组名=new数据类型[数组长度]或数据类型数组名[]=new数据类型[数组长度]2、一维数组—初始化n动态初始化:数组名[下标]=值;n静态初始化:数据类型数组名[]={元素1,元素2,元素3,元素4……};或数据类型数组名[]=new数组类型[]{元素1,元素2,元素3,……};3、一维数组—引用n引用格式:数组名[下标];n下标取值范围为0—(数组长度-1)n数组的长度用length取得,调用格式为:数组名.length4、数组常见的操作—数组遍历n数组的遍历:依次访问数组中的每个元素nfor循环的语法为:for(inti=0;i<数组名.length;i++){…//处理元素的相关代码}nforeach循环的语法为:for(数据类型变量:数组名){…//处理元素的相关代码}5、二维数组---声明与创建n声明数据类型数组名[][];或者数据类型[][]数组名;n创建数组名=new数据类型[cel][ce2];n声明And创建数据类型[][]数组名=new数据类型[ce1][ce2]或数据类型数组名[][]=new数据类型[ce1][ce2]6、二维数组不规则创建n数组名=new数据类型[ce][];n数组名[0]=new数据类型[ce0];n数组名[1]=new数据类型[ce1];n……课堂记录71 n数组名[N]=new数据类型[ceN];7、二维数组—初始化和引用n静态初始化:intarr[][]={{2,3},{1,5,6,8},{3,4,9}}。n动态初始化:floatnumthree=newint[10][10];numthree[0][0]=1.5f;numthree[0][1]=1.3f;….….n引用:数组名[下标1][下标2];71练习题一、填空题1、若int[]a={12,45,34,46,23},则a[2]=()2、若inta[3][2]={{123,345},{34,56},{34,56}},则a[2][1]=()3、已知:inta[]={2,4,6,8};则:表达式(a[0]+=a[1])+++a[2]值为()。4、在Java中,字符串和数组是作为(对象)出现的。5、数组对象的长度在数组对象创建之后,()改变。数组元素的下标总是从()开始。6、对于数组int[][]={{1,2,3},{4,5,6}}来说,t.length等于(),t[0].length等于()。7、已知数组a的定义为”inta[]={1,2,3,4,5};”,则a[2]=(),数组b的定义为“intb[]=newint[5];”,则b[2]=(),数组c的定义为“Objectc[]=newObject[5];”,则c[2]=();8、调用数组元素时,用()和()来唯一确定数组中的元素。9、数组的初始化是()10、数组元素通过()来访问,数组Array的长度为()11、数组复制时,“=”将一个数组的()传递给另一个数组。12、JVM将数组存储在()中。13、数组二分法查找运用的前提条件是数组已经()。14、数组最小下标是()。15、Java中数组下标的数据类型是()。16、语句“inta[]=newint[100]”的含义是()。17、主方法main(Stringargs[])的参数“Stringargs[]”是一个()数组。18、已知数组a1与a2定义如下:inta1[]={2,3,5,7,11,13}inta2[]={1001,1002,1003,1004,1005,1006,1007}在语句”System.arraycopy(a1,2,a2,3,4);”执行后,数组a2的值是()二、选择题1、下面哪种写法可以实现访问数组arr的第1个元素?()A、arr[0]B、arr(0)C、arr[1]D、arr(1)2、以下哪个选项可以正确创建一个长度为3的二维数组?()A、newint[2][3]B、newint[3][]C、newint[][3]D、以上答案皆不对3、下列关于数组的定义形式,哪些是错误的?()A.int[]c=newchar[10];B.int[][3]=newint[2][];71 C.int[]a;a=newint;D.charb[];b=newchar[80];4、执行String[]s=newString[10];语句后,哪些结论是正确的?()A.s[0]为未定义B.s.length为10C.s[9]为nullD.s[10]为""5、下列关于Java语言的数组描述中,错误的是()。A.数组的长度通常用length表示B.数组下标从0开始C.数组元素是按顺序存放在内存的D.数组在赋初值和赋值时都不判界6、publicclassT18{staticintarr[]=newint[10];publicstaticvoidmain(Stringa[]){System.out.println(arr[1]);}}哪个语句是正确的?()A.编译时将产生错误B.编译时正确,运行时将产生错误C.输出零D.输出空7、下列选项中,语句有错误的是()A、inta[]B、intb[]=newint[10]C、intc[]=newint[]D、intd[]=null8、下列选项中,语句有错误的是()A、inta[][]=newint[5][5]B、int[][]b=newint[5][5]C、int[]c[]=newint[5][5]D、int[][]d=newint[5,5]9、关于下面的程序,正确的结论是()publicclassex4_7{publicstaticvoidmain(Stringargs[]){inta[]=newint[5];Booleanb[]=newboolean[5];System.out.print(a[1]);System.out.println(b[2]);}}A、运行结果为0falseB、运行结果为1trueC、程序无法通过编译D、可以通过编译但结果不正确10、下列关于数组的叙述错误的是()。A、数组是将一组相同类型的数据顺序存储,组成一种复合数据类型B、在Java语言中,数组是一种引用类型,数组名如同对象名一样,是一种引用C、对于多维数组,从最高维开始,可以对每一维分配不等的空间D、在Java、语言中,数组元素可以互相赋值,而数组名不能直接赋值11、在Java程序中声明一个数组,错误的是()。A、inta[]B、inta[][]C、floata[10]D、float[]a[]12、下列语句不能通过编译的是()。A、inta[]={1,2,3,4}B、intb[]C、intc[]=newint[3]D、intd=newint[]13、在下述Java语言中,错误的创建数组的方法是()。A、intintArray[];intArray=newint[5];B、intintArray[]=newint[5]C、intintArray[]={1,2,3,4,5}D、intintArray[5]={1,2,3,4,5}14、若数组a定义为“inta[][]=newint[3][4]”,则a是()。71 A、一维数组B、二维数组C、三维数组D、四维数组16、设定义了数组“intage[]=newint[10];”,则数组的第一个元素的正确引用方法为()。A、age[1]B、Age[0]C、age[]D、age[0]17、设定义语句“inta[]={66,88,99};”,则以下对此语句的错误叙述是()。A、定义了一个名为a的一维数组B、a数组有3个元素C、a数组的下标为1~3D、数组中的每个元素是整型18、在Java程序中有定义“intx[][]=newint[4][5];”,则x.length和x[3].length的值分别是()。A、4和5B、5和4C、4和3D、5和319、已知“inta[]={5,6,7,8,4,3,2,1};”,则“a[1]+a[2]-a[3]”等于()。A、4B、3C、5D、以上都不对20、已知“inta[]={1,2,3,4,3,2,1};”,则a[a[1]]=()。A、2B、3C、4D、以上都不对21、为了定义三个整型数组a1、a2、a3,下面声明正确的语句是()。A)intArray[]a1,a2;inta3[]={1,2,3,4,5};B)int[]a1,a2;inta3[]={1,2,3,4,5};C)inta1,a2[];inta3={1,2,3,4,5};D)int[]a1,a2;inta3=(1,2,3,4,5);22、以下定义数组的语句正确的是()。A)int[]a;B)inta[10];C)inta=newa[10];C)inta[10]={1,2,3};23、设有double型数组定义:doubled1[]={1.2,2.3,3.4,4.5,5.6};则d1[2]的值是()。A)1.2B)2.3C)3.4D)4.524、有数组定义语句:inta[][]={{1,2,3},{4,5},{6,7},{8}};则()。A)a.length的值是8B)a[0].length的值是3C)a[1][2]的值是2C)该语句不合法25、若有定义:byte[]x={11,22,33,-66};其中0≤k≤3,则对x数组元素错误的引用是()。A)x[5-3]B)x[k]C)x[k+5]D)x[0]26、以下语句编译运行可能出现的错误是()。1.inta[];2.a=newint[3]3.System.out.print(a[0]);4.for(inti=1;i<=3;i++){5.a[i]=i;   6.}A)语句1编译出错:方括号须标明元素个数;B)语句2编译出错:数组名a后须跟方括号;C)语句3编译出错:a[0]未经赋值;D)语句5运行出错:下标越界异常;27、以下语句执行结果是()。1.int[]a={1,2,3};71 2.int[]b=newint[4];3.a=b;4.for(inti=0;iy){4)returnx;5)returnz;6)if(x>z)returntrue;7)}7)}A)第2行错误,方法缺少return语句;B)第4行错误,返回值类型不对,需要double型;C)第5行错误,不可能执行的语句;D)第6行错误,返回值类型不对,需要double型;47、对以下程序说法正确的有()。1)classExp14{2)staticintx;3)inty;4){x=1;}5)publicstaticvoidmain(String[]args){6)Exp14a,b;7)a=newExp14();8)b=newExp14();9)System.out.print(x);10)a.x=2;11)System.out.print(a.x);12)System.out.print(++b.x);13)System.out.print(++Exp14.x);;14)}15)}A)第4行错误,类中不能有有赋值语句;B)第9行错误,类中的变量必须带对象名引用;C)第13行错误,不能用类名引用类中的变量;D)没有错误,输出1234;48、对以下程序说法正确的有()。1)classExp{2)intx;3)staticinty;4)staticvoidsetX(intx){this.x=x;}5)intgetx(){returnx;}6)staticvoidrun(){7)System.out.print(getX());8)}71 9)publicstaticvoidmain(String[]args){10)Exp.run();11)Expa=newExp();12)a.setX(2);13)System.out.print(a.getX());14)}15)}A)第4行错误,静态方法不能使用非静态实例变量;B)第7行错误,类方法不能调用实例方法;C)第10行错误,对象没有创建,其方法不能调用;D)第12行错误,静态方法不能用对象名.方法名方式来调用。49、下面程序哪些编译错误是存在的()。1)classexp16{2)doublefun(intx,inty){returnx+y;}3)doublefun(intx,inty,intz){returnx*y-z;}4)intfun(intx,inty){returnx-y;}5)doublefun(doublex,doubley){returnx/y;}6)}7)}A)第2行错误,返回值类型不配;B)第3行错误,fun(int,int)方式已存在;C)第4行错误,fun(int,int)方式已存在;;D)第5行错误,fun(int,int)方式已存在;;50、关于Java源程序文件的代码构成形式方面,下述说法中是正确的()。A)除了开头的包声明语句,包引用语句之外,Java程序代码中只能有类和接口,所有变量与方法的定义或其它语句都不能放在类体或接口体之外;B)java的类体中除了方法的定义之外,只能有为成员变量定义及初始化,不能有赋值、表达式计算等操作性的语句。C)类体内还可定义类,也即java的类可互相嵌套,定义在其它类内部的类称内部类。D)Java中的main方法是特殊方法,是Java程序的入口和出口,必须定义在所有类和接口之外。51、关于类中成员变量的作用范围,下述说法中正确的是()。A)只有用public修饰的变量才能在所有方法中使用;B)用private修饰的成员变量可以在main方法中直接使用;C)类中所有成员变量在所有成员方法中有效;D)用static修饰的成员变量只能在用static修饰的方法中使用。52、方法体内定义的变量称局部变量,下述关于局部变量的说法中错误的是()。A)局部变量仅在所定义的代码块内(花括号对内)有效;B)局部变量不能加修饰词修饰;C)局部变量不能与类中的成员变量同名;D)局部变量未经赋值不能使用。53、同一类中有两个以上方法同名称方法重载,Java语言规定()。71 A)不允许重载;B)重载方法的参数表必须不同;C)重载方法的返回值类型必须不同;D)重载方法的参数表和返回值类型必须都不同。一、改错publicclassShowErrors{publicstaticvoidmain(Stringargs[]){ShowErrorst=newShowErrors(5);}}1、publicclassShowErrors{publicstaticvoidmain(Stringargs[]){ShowErrorst=newShowErrors();t.x();}}2、publicclassShowErrors{publicvoidmethod1(){Circlec;System.out.println(“whatisradius”+c.getRadius());c=newCircle();}}3、publicclassShowErrors{publicstaticvoidmain(Stringargs[]){Cc=newC(5.0);t.x();System.out.println(c.value);}}classC{intvalue=2;}4、publicclassC{intp;publicvoidsetP(intp){p=p;}}5、publicclassTest{privatedoublecode;publicdoublegetCode(){returncode;}ProtectedabstractvoidsetCode(doublecode);}6、71 一、阅读程序1、阅读下面的程序,分析代码是否能够编译通过.如果能编译通过.请列出运行的结果,否则说明编译失败的原因。(1)代码一:classA{privateintsecret=5;}publicclassTest1{publicstaticvoidmain(Stringargs[]){Aa=newA();System.out.println(a.secret++);}}(2)代码二:publicclassTest2{intx=50;staticinty=200;publicstaticvoidmethod(){System.out.println(x+y);}publicstaticvoidmain(Stringargs[]){Test2.method();}}(3)代码三:finalclassAnimal{publicfinalvoidshout(){//程序代码}}classDogextendsAnimal{publicvoidshout(){//程序代码}}publicclassTest02{publicstaticvoidmain(Stringargs[]){Dogdog=newDog();}}(4)代码四classAnimal{voidshout(){System.out.println("动物叫!");}}classDogextendsAnimal{voidshout(){super.shout();System.out.println("汪汪....");}}publicclassTest03{publicstaticvoidmain(Stringargs[]){Animalanimal=newDog();animal.shout();}}71 (5)代码五interfaceAnimal{voidbreathe();voidrun();voideat();}classDogimplementsAnimal{publicvoidbreathe(){System.out.println("I"mbreathing.");}publicvoideat(){System.out.println("I"meating.");}}publicclassTest04{publicstaticvoidmain(Stringargs[]){Dogdog=newDog();dog.breathe();dog.eat();}}2、下列程序的运行结果是:(1)classStaticTest{staticintx=1;inty;StaticTest(){y++;}publicstaticvoidmain(Stringargs[]){StaticTestst=newStaticTest();System.out.println("x="+x);System.out.println("st.y="+st.y);st=newStaticTest();System.out.println("st.y="+st.y);}static{x++;}}(2)publicclassTest01{publicstaticvoidmain(Stringargs[]){Circlecircle1=newCircle(1);Circlecircle2=newCircle(2);swap1(circle1,circle2);System.out.println("Afterswap1:circle1="+circle1.radius+"circle2="+circle2.radius);swap2(circle1,circle2);System.out.println("Afterswap2:circle1="+circle1.radius+"circle2="+circle2.radius);}publicstaticvoidswap1(Circlex,Circley){Circletemp=x;x=y;y=temp;}publicstaticvoidswap2(Circlex,Circley){doubletemp=x.radius;x.radius=y.radius;y.radius=temp;}}classCircle{doubleradius;Circle(doublenewRadius){radius=newRadius;}}71 (3)publicclassFoo{privatebooleanx;publicstaticvoidmain(Stringargs[]){Foofoo=newFoo();System.out.println(foo.x);}}(4)classStaticStuff{staticintx;static{System.out.println("x1="+x);x+=5;}inty;StaticStuff(){y++;}publicstaticvoidmain(Stringargs[]){System.out.println("x2="+x);}static{System.out.println("x3="+x);x%=3;}}(5)interfaceA{voidprint();}classC{}classBextendsCimplementsA{publicvoidprint(){}}publicclassTest{publicstaticvoidmain(Stringargs[]){Bb=newB();if(binstanceofA)System.out.println("bisaninstanceofA");if(binstanceofC)System.out.println("bisaninstanceofC");}}71 publicclassC{publicstaticvoidmain(Stringargs[]){Objecto[]={newA(),newB()};System.out.println(o[0]);System.out.println(o[1]);}}classAextendsB{publicStringtoString(){return"A";}}classB{publicStringtoString(){return"B";}}(6)classA{publicA(){System.out.println("ThedefaultconstructorofAisinvoked");}}classBextendsA{publicB(Strings){System.out.println(s);}}publicclassC{publicstaticvoidmain(Stringargs[]){Bb=newB("TheconstructorofBisinvoked");}}(7)3.阅读下面的程序,回答后面的问题classAnimal{voidrun(){System.out.println("Animalisrunning!");}}classPigextendsAnimal{voidrun(){System.out.println("Pigisrunning!");}voideat(){System.out.println("Pigiseating!");}}71 下面的语句正确的写T,错误的写F。(1)Animala=newPig();___________(2)a.run();___________(3)a.eat;___________(4)Pigp1=(Pig)a;___________(5)Pigp2=newAnimal();___________4、如果类Strudent是类Person的子类,类Undergraduate是类Student的子类,请指出以下代码行中哪些是不合法的。(1)Personp1=newStudent();___________(2)Personp2=newUndergraduate();___________(3)Students1=newPerson();___________(4)Students2=newUndergraduate()___________(5)Undergraduateug1=newPerson();___________(6)Undergraduateug2=newStudent();___________(7)Objectob=newStudent();___________5、下面程序的输出结果是什么?publicclassSuperclass{publicbooleanaVariable;publicvoidaMethod(){aVariable=true;}}publicclassSubclassextendsSuperclass{publicbooleanaVariable;publicvoidaMethod(){aVariable=false;super.aMethod();System.out.println(aVariable);System.out.println(super.aVariable);}publicstaticvoidmain(String[]args){Subclasssu=newSubclass();su.aMethod();}}一、编程题1.设计并实现一个圆锥类,编写构造方法,其成员变量为底面半径和高;成员方法有计算底面积和体积。使用该类在main()方法中生成一个圆锥对象,并计算圆锥面积和体积。2.设计一个名为Car的类,具体要求如下:nint类型的成员变量speed表示汽车的速度(默认为0);Boolean型的成员变量on表示汽车是否启动〔默认为false);double类型的成员变量weight表示汽重量(吨,默认为1.2);String类型的成员变量color表示汽车的颜色(默认为blue)。71 n用无参构造方法创建默认汽车。n编写设置和存取这些数据域的方法。ntoString方法返描述汽车的字符串,如果汽车起动,该方法返回汽车的速度、颜色和重量。如果汽车不在启动状态,该方法返回字符串"carisoff",以及汽车的颜色和重量等信息。n编写一个测试程序,创建两个Car对象,第一个对象设置为120km/h、1.5吨、black、启动。第二个对象设置为0km/h、1.2吨、red、关闭。通过调用toString()方法显示两个对象的信息。1.设计并实现一个员工(Employee)类,其成员变量有:姓名、性别、工龄、基础工资、岗位津贴、效益工资;成员方法有:(1)计算应付工资(基础工资+岗位工资+效益工资);(2)计算个人所得税(3500以下免税,超出3500以上部分3%缴纳);(3)实发工资(应付工资-个人所得税)。在main()方法中生成一个员工对象,并显示该员工的姓名、性别、工龄、应付工资和实发工资。2.设计一个Student类和它的一个子类Undergradutate,要求如下:nStudent类有schoolname(学校)、name(姓名)和age(属性),将具有相同属性值的属性设置为静态属性。一个包含无参无内容的空构造方法,一个具有两个参数的构造方法,用于给name和age属性赋值,一个introduce()方法打印student的属性信息。n本科类Undergradutate增加了一个degree(学位)属性,新增一个包含三个参数的构造方法前两个参数用于给继承的name和age赋值,第三个参数给degree赋值,重写父类方法introduce()方法用于打印Undergradutate的三个属性信息n在测试类中分别创建Student对象和Undergradutate对象,调用它们的introduce()方法。3.编写Circle类,代表圆,要求具有如下成员:n成员变量r,double型,代表半径;n构造方法Circle(doubler);n存取r的get()和set()方法;n计算圆面积的方法doublegetArea();n计算圆周长的方法doublegetPerimeter();编写圆柱类Column,要求继承Circle类,要求如下:n并添加成员变量h,double型,代表圆柱的高;n构造方法Column(doubler,doubleh);n计算圆柱表面积的方法doublegetArea();n计算圆柱体积的方法doublegetVolume();4.编写一个计算图形面积的程序,程序应当能够计算并输出矩形、圆的面积。为了程序的未来扩展,设计一个图形抽象类shape,在此基础上派生出图形类Rectangle和Circle类。(1)Rectangle类基本信息:宽度、高度。(2)Circle基本信息:圆心坐标、半径。(3)每个图形类有多个构造方法:默认构造方法、带参数的构造方法;成员变量为private属性,成员方法为public属性。(4)每个图形类有计算图形面积getArea()方法,显示图形的基本信息toString()方法,以及访问方法set()和get()。5.设计一个Shape接口和它的两个实现类Square和Circle,要求如下:nShape接口有一个抽象方法area(),返回一个double类型的结果。nSquare有一个double属性a,表示边长,实现了Shape接口的area抽象方法,求正方形的面积,并返回。可以通过构造方法为属性赋初始值。71 nCircle有一个double属性r,表示半径,实现了Shape接口的area抽象方法,求圆形的面积,并返回。可以通过构造方法为属性赋初始值。n在测试类中创建Square和Circle对象,再创建一个静态方法,根据传入的对象来计算边长为2的正方形面积和半径为3的圆形面积,实现多态。第八章异常711、异常nJava提供了大量的异常类,都继承自java.lang.Throwable类nError类错误:表示Java运行时产生的系统内部错误或资源耗尽的错误,比较严重,仅靠程序本身是不能恢复执行的。nException类异常:表示程序本身能够处理的错误,在Java中进行异常处理都是针对Exception类及其子类。方法声明功能描述StringgetMessage()返回此throwable的详细消息字符串VoidprintStackTrace()将此throwable及其追踪输出至标准错误流VoidprintStackTrace(PrintStreams)将此throwable及其追踪输出到指定的输出流2、异常捕获try{//可能出现异常的语句}catch(ExceptionTypee){//对ExceptionType的处理}catch(ExceptionTypee){//对ExceptionType的处理}finally{//71 必须执行的语句}3、Throws关键字—声明异常修饰符返回类型方法名(参数1,参数2)throwsExceptionType1[,ExceptionType2…]{//方法体;}4、Throw--抛出异常n语法格式:thrownewExceptionType()5、自定义异常n在实际开发中,如果没有特殊的要求,自定义的异常只需要继承Exception类,在构造方法中使用super语句调用Exception的构造方法即可。classXxExceptionextendsException{publicXxException(){super();}publicXxException(Stringmessage){super(message);}}thrownewXxException()71练习题一、填空题1、JDK中定义了大量的异常类,这些类都是()类的子类或者间接子类。2、异常捕捉通常由try、catch两部分组成,()代码块用来存放可能发生的异常,()代码块用来处理产生的异常。3、try{}里面有一个return语句,那么紧跟在try后面的finally{}里的代码会在(return前)被执行。4、catch()子句都带一个参数,该参数是某个异常的类及其变量名,catch()子句用该参数去与(出现异常)对象的类进行匹配。5、按异常处理方法的不同可以分为运行异常、捕获异常、声明异常和(抛出异常)几种。6、自定义异常类型是从(Exception)类中派生的,所以要使用下面的声明语句来创建:<自定义异常名>{……}7、抛出异常、生成异常对象都可以通过(throws)语句实现。8、Throwable类有两个子类:()类和()类。9、捕获异常通过()语句实现。10、IOException异常是(非运行时)异常,必须在程序中抛出或捕获。二、选择题1、在Java语言中,以下哪个关键字用于在方法上声明抛出异常?()A、tryB、catchC、C.throwsD.throw2、所有的异常类皆继承自()。A、java.lang.ThrowableB、java.lang.ExceptionC、java.lang.ErrorD、java.io。Exception3、关键字()可以抛出异常。A、transientB、throwC、finallyD、catch71 4、对于已经被定义过可能抛出异常的语句,在编程时()。A、使用try/catch语句处理异常,或用throws将其抛出B、如果程序错误,必须使用try/catch语句处理异常C、可以置之不理D、只能使用try/catch语句处理5、下面程序段的执行结果是()publicclassFoo{publicstaticvoidmain(String[]args){try{return;}finally{System.out.println("Finally");}}}A、编译能通过,但运行时会出现一个例外B、程序正常运行,并输出“Finally”C、程序正常运行,但不输出任何结果D、因为没有catch语句块,所以不能通过编译6、能单独和finally语句一起使用的块是()。A、tryB、catchC、throwD、throws7、下面程序的执行结果是()。publicclassTest{publicstaticvoidmain(String[]args){newTest().test();}publicvoidtest(){try{System.out.print("tyr");}catch(ArrayIndexOutOfBoundsExceptione){System.out.print("catch1");}catch(Exceptione){System.out.print("catch2");}finally{System.out.println("finally");}}}A、tryfinallyB、trycatch1finallyC、trycatch2finallyD、finally8、下面程序抛出的RuntimeException异常是()。publicclassTest{publicstaticvoidmain(String[]args){System.out.println(1/0);}}A、NumberFormatExceptionB、ExceptionC、ArrayIndexOutOfBoundsExceptionD、ArithmeticException9、下列类中在多重catch中同时使用时,()异常类应该最后列出。A、NumberFormatExceptionB、Exception71 C、ArrayIndexOutOfBoundsExceptionD、ArithmeticException10、下面程序会抛出的RuntimeException异常是()。publicclassTest{publicstaticvoidmain(Stringargs[]){Strings="abc";System.out.println(s.charAt(3));}}A、NumberFormatExceptionB、ExceptionB、StringIndexOutOfBoundsExceptionD、以上都不对三、修改程序错误1、importjava.io.File;importjava.io.IOException;importjava.sql.SQLException;publicclassIoDemo{publicstaticvoidmain(Stringargs[]){Filef=newFile("C:/text.txt");try{f.createNewFile();}catch(IOExceptione){e.printStackTrace();}}}importjava.io.File;importjava.io.IOException;importjava.sql.SQLException;publicclassIoDemo{publicstaticvoidmain(Stringargs[]){Filef=newFile("C:/text.txt");try{f.createNewFile();}catch(SQLExceptione){e.printStackTrace();}}}2、importjava.io.File;importjava.io.IOException;publicclassIoDemo{publicvoidcatchMethod(){System.out.println("runningcatchMethod。。。。");Filef=newFile("C:/text.txt");f.createNewFile();}publicstaticvoidmain(Stringargs[]){IoDemotd=newIoDemo();td.catchMethod();System.out.println("running?");}}importjava.io.File;importjava.io.IOException;publicclassIoDemo{publicvoidcatchMethod(){System.out.println("runningcatchMethod..");Filef=newFile("C:/text.txt");try{f.createNewFile();}catch(IOExceptione){System.out.println("创建文件异常!");}}publicstaticvoidmain(Stringargs[]){IoDemotd=newIoDemo();td.catchMethod();System.out.println("running?");}}71 3、importjava.io.File;importjava.io.IOException;publicclassIoDemo{publicvoidthrowsMethod()throwsIOException{System.out.println("runningthrowMethod....");Filef=newFile("C:/text.txt");f.createNewFile();}publicstaticvoidmain(Stringargs[]){IoDemotd=newIoDemo();td.throwsMethod();System.out.println("running?");}}importjava.io.File;importjava.io.IOException;publicclassIoDemo{publicvoidthrowsMethod()throwsIOException{System.out.println("runningthrowMethod....");Filef=newFile("C:/text.txt");f.createNewFile();}publicstaticvoidmain(Stringargs[]){IoDemotd=newIoDemo();try{td.throwsMethod();}catch(IOExceptione){System.out.println("创建文件异常!");}System.out.println("running?");}}四、阅读程序1、阅读下面的程序,分析代码是否能够编译通过.如果能编译通过.请列出运行的结果,否则说明编译失败的原因。(1)代码一:publicclassTest01{publicstaticvoidmain(Stringargs[]){try{intx=2/0;System.out.println(x);}catch(Exceptione){System.out.println("进入catch代码块");}finally{System.out.println("进入finally代码块");}}}71 2、下面程序的执行结果是()publicclassTest{publicstaticvoidfoo(){try{Strings=null;Strings2=s.toLowerCase();}catch(NullPointerExceptione){System.out.print("2");}finally{System.out.print("3");System.out.print("4");}}publicstaticvoidmain(String[]args){foo();}}五、编程题1、从键盘上读入1个整数值,并处理输入无效数值(如输入3.5)时产生的异常。2、从键盘读入5个整数存储在数组中,要求在程序中处理数组越界的异常。3、写一个方法voidsanjiao(inta,intb,intc),判断三个参数是否能构成一个三角形,如果不能则抛出异常IllegalArgumentException,显示异常信息“a,b,c不能构成三角形”,如果可以则显示三角形的三个边长。在主方法中得到命令行输入的三个整数,调用此方法,并捕获异常。71'