西交13秋学期《JAVA语言》离线作业答案_第1页
西交13秋学期《JAVA语言》离线作业答案_第2页
西交13秋学期《JAVA语言》离线作业答案_第3页
西交13秋学期《JAVA语言》离线作业答案_第4页
西交13秋学期《JAVA语言》离线作业答案_第5页
已阅读5页,还剩119页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机专业课程系列——《JAVA语言》作业集目录TOC\o"1-2"\h\z\u第1章 Java背景及程序开发环境 1第2章 Java程序设计基础 8第3章 面向对象技术 29第4章 异常处理 42第5章 输入和输出 55第6章 多线程 62第7章 图形用户界面与事件处理 68第8章 网络编程 74《JAVA语言》-PAGE7-Java背景及程序开发环境教学目标理解Java语言的技术特点掌握Java与C/C++的联系和区别能够理解Java运行机制了解Java程序运行时刻环境熟悉JDK软件包的安装及其配置了解JBuilder开发平台特征熟练掌握Application程序的结构和运行方式熟练掌握Applet程序的结构和运行方式知识点Java语言诞生于1991年,是由Sun公司成功开发的新一代编程语言。Java的最大特点在于使用它能够适应各式各样不同种类机器、不同种类操作平台的网络环境下进行软件的开发。Java的技术特点:简明的语法结构、平台独立性、面向对象特征、面向网络环境、动态性、安全性、稳定性、多线程、类库丰富。Java与C/C++的差异。Java属于中间代码级(程序级)跨平台,而ANSIC属于源代码级(语言级)跨平台。Java的执行方式是解释型的,而非编译型。Java虚拟机(JVM)是可运行Java代码的假想计算机,设计目标是提供一个基于抽象规格描述的计算机模型,为解释程序开发人员提供良好的灵活性,同时也确保Java代码可在符合该规范的任何系统上运行。一个完整的Java平台包括实际计算机、适配器、Java虚拟机(JVM)、Java基本软件和Java应用程序接口五个部分组成。Java程序的开发周期包括编译、装载、解释和执行四个部分。Java源程序的编译结果只是中间码(bytecode),并不是真正的物理机器指令。Java语言及其运行环境提供的安全措施有:字节码检验器(ByteCodeVerifier)、类装载器(ClassLoader)、内存管理、文件访问限制。Java的“垃圾收集”是指内存的释放与管理完全由JVM自动完成,应用程序无需关注。在Java2平台下,Sun重新定义了Java技术的架构,并将其分为三个版本,它们是适用于小型设备和智能卡的Java2平台微缩版(J2ME—Java2PlatformMicroEdition)、适用于桌面系统的Java2平台标准版(J2SE—Java2PlatformStandardEdition)以及适用于以企业为环境而开发应用程序的专门开发人员的Java2平台企业版(J2EE—Java2PlatformEnterpriseEdition)。Java程序的开发方式有三种:基于JDK的命令行开发模式、JDK工具集成开发模式(如JCreator)以及RAID(RapidApplicationIntegratedDevelopment,如JBuilder等)。Java解释器可用来直接解释执行Java字节代码,具体命令行格式如下:javaoptionsclassNameargumentsJavac编译器读取Java源代码,并将其编译成中间字节代码,调用Javac的命令行格式如下所示:javacoptionsfilename.java要想顺利地使用JDK提供的各种工具,必须正确设置相应的环境参数,一个是工具所在目录位置,即:PATH环境变量;另外一个则是程序使用类库(不仅包含系统提供的类库,还包括用户自行开发的类库)的目录位置,即:CLASSPATH环境变量;值得注意的是在Windows系统和Linux系统环境下它们的设置方式有所差异。JDK的类库环境变量对大、小写字母敏感,因此CLASSPATH变量名字必须要书写正确。JBuilder是Borland公司的Java可视化开发环境,是一个开发Java应用程序和Applet小应用程序的强大平台,它包括工程浏览器、代码编辑器、可视化设计器、Component选项板、属性监视器、集成调试器以及编译器等。Java应用程序包括两种形式:Application程序和Applet程序。Java源程序文件的扩展名是.java。Java类文件的扩展名是.class。Java源程序的文件名必须与受public修饰的类名相同(包括大、小写)。方法main的第1行必须定义成:publicstaticvoidmain(Stringargs[])Java程序中可以定义多个类,每个类中可以定义多个方法,但是在同一个源程序中最多只有一个公共类,main()方法也只能有一个。Stringargs[]是传递给main()方法的参数,参数名为args,它是类String的一个实例,参数可以为零个或多个。一个左花括号“{”开始类定义主题,对应的一个右花括号“}”结束类定义。Java应用程序开始从main方法执行。方法能执行任务,并在任务完成后返回信息。左花括号“{”标志着每个类的定义体的开始。对应的右花括号“}”则用来结束类定义。System.out是一个标准的输出对象。允许Java应用程序执行时在命令窗口中显示字符串及其他类型的信息。换码序列\n意味着新行。其他的换码序列包括:\t(表记),\r(执行回车),\\(反斜杠)和\”(双引号)。System.out对象的方法println在命令窗口中显示或打印一行信息。任务完成后,自动将光标移动到下一行的开始。每一个语句必须以分号(也叫语句终止符)结束。System.out.print与System.out.println的不同是System.out.print不将光标移动到下一行的开始。当完成显示后,下一个要显示的字符紧接着出现。Java包含了称为类的预先定义部分,它们以磁盘上的目录形式按类的相互关系称做“包”的组。所有包的整体叫做Java类库或应用程序编程接口。编译器使用import语句查找到编译一个Java程序所需要的类。类System的方法exit结束一个应用程序。类System是包java.lang的一部分。每一个Java程序中,Java.lang自动安装。Java对大小写敏感,即同一字母的大写和小写代表的含义不同。Applet应用程序必须导入java.applet系统程序包中的Applet类。Applet应用程序不能使用java解释器直接执行,它必须嵌入到一个网页文件(即HTML文件)中才能被执行。由于安全因素,Applet应用程序的功能受到制约,没有Application程序的执行权限大,如禁止读写本地文件、调用本地进程和方法等。HTML文件使用code标签来标识嵌入的Applet类。支持JRE的浏览器都可以运行Applet程序。JDK提供的Appletviewer工具也可以用来调试Applet程序,但它不是最终运行Applet程序的环境。判断题“//”即可以表示单行注释,也可以表示多行注释。(错)方法System.out.println只在命令窗口中显示(或打印)一行文字。(错)类System不是由程序开头的import语句装载。(对)声明变量时必须指定一个类型。(对)注释的作用是使程序在执行时在屏幕上显示//之后的内容。(错)Java认为变量number与NuMbEr是相同的。(错)Java应用程序从main方法开始执行。(对)选择题面向对象程序设计方法的优点:DA.可重用性、可扩展性、可操作性B.可重用性、可维护性、可操作性C.可管理性、可扩展性、可操作性D.可重用性、可扩展性、可管理性下面选项中,Java对类Welcome进行定义正确的是:DA.publicclass1WelcomeB.publicclassWelcomeC.publicclasswelcomeD.publicclassWelcome有如下的程序:DpublicclassWelcome3{publicstaticvoidmain(Stringargs[]){System.out.println("Welcome\nto\nJava\nProgramming!");}}则它的输出结果是:A.WelcometoJavaProgramming!B.WelcomentonJavanProgramming!C.WelcometoJavaProgramming!D.WelcometoJavaProgramming!对方法main的第1行定义正确的是:DA.publicmain(Stringarg[])B.publicvoidmain(Stringarg[])C.publicstaticvoidmain(Stringarg[])D.publicstaticvoidmain(Stringargs[])下面那一项不会出现编程错误:DA.忘记多行注释符的一个定界符B.一个标识符的大小写字母使用不当C.括号不成对出现D.在一个显示图形用户界面的应用程序中调用System.exit每一个Javaapplet应继承(C)A.JAppletB.AppletC.JAppletAppletD.Jfram任何一个Applet开始执行时必然会被自动调用三个方法,它们被调用的顺序是:DA.initpaintstartB.startpaintinitC.paintstartinitD.initstartpaint下面程序的正确输出结果是:Cimportjavax.swing.JApplet;//importclassJAppletimportjava.awt.Graphics;//importclassGraphicspublicclassWelcomeLinesextendsJApplet{publicvoidpaint(Graphicsg){g.drawLine(15,10,210,10);g.drawLine(15,30,210,30);g.drawString("WelcometoJavaProgramming!",25,25);}}A.WelcometoJavaProgramming!B.WelcometoJavaProgramming!C.WelcometoJavaProgramming!D.WelcometoJavaProgramming!下面语句书写正确的是:BA.importjava.swing;B.importjava.swing.*;C.importjava.swing.JApplet;D.importjava.swing.JoptionPane;在g.drawRect(15,10,270,20)的语句中,▁C▁代表矩形的宽度和高度。A.1510B.10270C.27020D.2015当编译Java程序时,每个类都将被分别编译成不同的文件,每个文件名都与所对应的类名相同,并以扩展名▁▁D结束。A..javaB..javaxC..htmlD..class简述题Java语言与C/C++相比,有何区别?Java语言特征包括哪些?Java包括哪两种程序类型?程序设计题1)编写一个Application,接收用户输入的一行字符串,并重复输出三行。#include<iostream>

#include<string>

usingnamespacestd;

voidApplication(conststringstr);//函数声明

intmain()

{

stringstr;

//接收用户输入的一行字符串

cout<<"输入内容:"

<<endl;

cin>>str;

//重复输出三行

Application(str);

return0;

}

//函数定义

voidApplication(conststringstr)

{

cout<<str<<endl

<<str<<endl

<<str<<endl;

}2)编写一个JavaApplication,利用JDK软件包中的工具编译并运行这个程序,在屏幕上输出:“WelcometoJavaWorld”。importjava.io.*; publicclassMyJavaExcerciseApplication { publicstaticvoidmain(Stringargs[]) { System.out.println("WelcometoJavaWorld!"); }//endofmainmethod }//endofclass3)编写一个Java

Applet,使之能够在浏览器中显示“Welcome

to

Java

Applet

World!”的字符串信息importjava.awt.Graphics;importjava.applet.Applet;publicclassMyJavaExcerciseAppletextendsApplet{publicvoidpaint(Graphicsg){g.drawString("WelcometoJavaAppletWorld!",10,20);}//endofpaintmethod}//endofclass4)编写一个HTML文件,将上题中生成的Applet字节码嵌入其中,并用WWW浏览器观看这个HTML文件规定的Web页面。importjava.awt.Graphics;importjava.applet.Applet;publicclassMyJavaExcerciseAppletextendsApplet{publicvoidpaint(Graphicsg){g.drawString("WelcometoJavaAppletWorld!",10,20);}//endofpaintmethod}//endofclassJava程序设计基础教学目标熟悉基本的数据类型理解基本存储器概念学会使用算术运算符理解算术运算符的优先级学会使用判断语句学会使用相等与关系操作符能够用if和if/else选择结构选择执行不同动作能够使用while循环结构理解掌握计数器控制的循环和标记控制的循环能够使用增量、减量运算符以及赋值运算符学会使用for循环结构和do/while循环结构重复执行某些语句学会使用switch多重选择结构学会使用break和continue语句学会使用逻辑运算符理解数组的数据结构理解使用数组进行存储、排序、查找表和值表理解如何声明数组、初始化数组和引用数组中的元素理解将数组传递给方法能够声明和操纵多维数组能够创建和使用String类的对象能够创建和使用StringBuffer类的对象知识点标识符是由一个串字母、数字、下划线和类字符$的字符,标识符不能由数字开头,不能含有空格符。一个变量存储一个值的内存单元,变量名是有效的标识符。所有的变量在使用前,必须声明成具备名字和数据类型。声明以分号结束,可以分割在几行完成。变量之间以逗号隔开。int类型的变量存放整形值。类型如int、float、double和char常被称为原始数据。原始数据类型名是Java程序语言的关键字。一个提示指导用户特定的行为。一个变量通过使用赋值符“=”的赋值语句被赋值。“=”操作符是二元操作符,因为它有两个操作数。方法integer.parseInt将字符串参数转变成整数。Java有一个用于字符串连接达到“+”操作符版本,使得一个字符串可与另一类型(包括字符串)的数据值连接。变量名对应内存单元,该值替换该单元中原来的值。在内存单元读一个值的过程不具破坏性。算术运算符是二元操作符。整数相除产生一个整数的商。Java中的算术表达式必须写在一行上,以便输入程序到计算机。算术表达式中运算符执行的次序由操作符优先级规则决定。在需要的时候,括号可用来强制运算顺序。当我们说运算符从左到右执行,指的是运算符之间的连接。有一些运算符是从右到左的关系。Java的if结构允许程序按一些条件的真假值做出决定。若条件为真,if结构的语句体被执行。若为假,则该语句不被执行。if结构中的条件不用相等和关系运算符构造。空串是不含有字符的串。每一个在方法中声明的变量在使用前必须初始化。通过确定要执行的动作,并安排动作执行的次序来解决问题的步骤称为算法。指定程序中各语句的执行次序称为程序控制。伪码可以帮助程序员在用某种编程语言,例如Java编写程序之前更好地“思考”程序总体结构。声明是发给编译器的信息,指出变量的名称和属性,是编译器在编译过程这为变量分配所需内存空间。选择结构用于实现不同动作间的选择。只要当条件为真时if选择结构才执行指定动作。if/else选择结构在条件为真和条件为假时分别执行指定的不同动作。若要在只允许使用单条语句的位置执行多条语句,必须用大括号将这些语句括起来组成一个复合语句。一条复合语句可以放在单条语句能出现的任何位置。空语句表示不需要执行任何动作,只需在语句出现处写一个分号即可。循环结构是当条件为真时不断地重复执行某一动作。while循环结构的格式While(条件)语句Java解释器用来执行Java应用程序。可以采用以下方法用Java解释器运行应用程序:在命令行方式下输入java,其后是定义了main方法的类名,然后按下回车键。包含小数部分的数称为浮点数,它有float或double类型数据表示。一元类型转换运算符(double)可以为其操作数建立一个临时的浮点数拷贝。Java语言提供了算术符:+=,-=,*=,/=。%=,用它们可以简化一些常用的表达式。基本数据类型(boolean、char、byte、short、int、long、float、double)可以用于组成Java中复杂的数据类型。Java语言要求变量在使用前必须先声明,因此Java语言被称为一种严格区分类型的语言。Java语言的基本数据类型在所有支持Java计算机平台上均能方便移植。Java语言使用了国际通用的字符格式标准和浮点数标准。char、byte、short、int、long、float和double类型变量的缺省值都是0,逻辑类型的变量的缺省值都是false。for循环结构可以处理计数器控制循环的所以情况。它的一般情况形式为for(表达式1;表达式2;表达式3)语句其中表达式1用于初始化循环的控制变量,表达式2为循环条件,表达式3为控制变量的增量表达式。do/while循环结构在循环的结尾测试循环条件,所以循环体至少会被执行一次。Do/while结构的格式为do语句while(条件);在for,while和do/while循环结构中执行break语句时会使呈现立即退出该结构的运行。在for,while和do/while循环结构中执行continue语句时,会导致程序忽略该循环结构中剩余的语句,并开始下一次循环。switch语句处理一系列的判断,即通过测试某变量或表达式可能的值,来决定执行相应的操作。在大多数程序中,必须在每个case语句体结尾跟一个break语句。多个case可执行相同的语句组。switch结构只能测试常数整型表达式。用逻辑运算符可将多种组合在一起形成复杂条件。逻辑运算符包括:&&、&、||、|、^和!,分别表示逻辑与、布尔逻辑与、逻辑或、布尔逻辑或、布尔逻辑异或逻辑非(反)。在Java语言中,数组存储一系列元素。一个数组是一组连续的相关内存位置,它们都有同样的名字和相同的类型。以数组名和元素下标的形式指定数组中某个位置或数组元素。下标可以是整数或整数表达式,如果用表达式作下标,那么数组元素的下标就是该表达式的值。Java语言中的数组元素下标总是从0开始,所以注意区分数组的“第7个元素”和“数组元素七”很重要。第7个元素的下标是6,而数组元素七的下标是7,实际是数组的第8个元素。这容易产生元素下标“差1”错误。数组占用内存空间。并被看作对象,必须用操作符new来给数组预分配存储空间,例如要创建一个有100个元素的整形数组,可使用如下语句:intb[]=newint[100];当声明一个数组时,数组的类型和方法括号可以在声明的开始处连接使用,表示声明中的所有标识符都代表数组。例如,double[]array1,array2;数组元素可以用声明(使用初始化列表)、赋值、输入三种方法进行初始化。Java禁止引用超出数组下标范围的数组元素。常量变量必须在使用前用常量表达式初始化,并且以后不能被修改。传递数组给方法时要给出数组名。要把数组中的一个元素传递给方法,只需传递该数组元素的下标变量,即由数组名后面跟该元素的下标(下标应写在方括号内)。数组通过引用调用的方式传递给方法,因此被调用的方法能修改调用方法中数组的元素值,数组中单个基本数据类型的元素以值调用的方法传递给方法。为接收一个数组参数,方法的参数表必须指明将接受一个数组。用冒泡法对数组排序要对数组进行多趟操作,每一趟都要比较所有相邻的两个元素。如果两者已有序(或值相等)就不动,否则就进行交换。对小型数组可以使用冒泡排序,但对大型数组则效率太低,应采用高效的排序算法。线形查找要把数组中每一个元素和查找的关键字进行比较。如果被查找的数组没有任何顺序,在第一个元素中找到关键字值的可能性与在最后一个元素中找到的可能性是一样的。因此,程序平均要把关键字跟一半的数组中元素进行比较。线形查找对小数组很适合,对未排序的一些大数组也可以调用。对于已排序数组,折半查找每进行一次比较都减少一半需要查找的数组元素。该算法取数组中间位置的元素和关键字作比较,相等则查找成功并结束,返回该元素下标。否则,要查找的数组元素减少一半,在继续查找。在最坏的情况下,用折半查找法查找已排序的含1024个元素的数组,只需要10次比较。大多数GUI组件都含有用setFont方法来GUI组件中文字的字体。这个方法需要一个Font对象(java.awt包)作为它的参数。一个字体对象用3个参数来初始化,一个字符串代表字体名(如“Courier”),一个int值代表字体风格(如Font.PLAIN),一个int值代表字体的大小(如12)。字体风格也可以是Font.BOLD,Font.ITALIC或Font.BOLD+Font.ITALIC,点的大小表示字体的大小,每英寸有72个点,屏幕显示的字体实际大小随着屏幕大小和分辨率的不同而不同。数组可用于表示表,表包含以行和列的形式组织的信息。表的元素由两个下标确定:第一个下标表示元素所在的行,第二下标表示元素所在的列。需要亮光下标确定某个元素的数组称为双下标数组。双下标数组可以用如下初始值列表的形式初始化:数组类型数组名[][]={{第一行子表},{第二行子表},…};为动态创建行数和列数固定的数组,应使用:数组类型数组名[][]=new数组类型[行数][列数];把双下标数组中的一行传递给一个接受单下标数组的方法,则只须传送数组名和行下标。一个字符常量的值就是它在Unicode字符集中的整数值。字符串可以包括字母、数字和特殊字符,如+,-,*,/和$。在Java中,字符串是String类的对象。字符串文字或字符串常量通常被称做无名的String对象,在程序中用双引号括起来表示。String类提供了9种构造函数。String类的length方法返回字符串中字符的个数。String类的charAt方法返回指定位置上的字符。equals方法可以用来检测任何两个对象是否相等(即两个对象的内容是否相同)。如果对象相等,该方法返回true;否则就返回false。对于字符串来说,equals方法使用的是字典法比较。运算符“==”在用于比较基本类型的数据时,如果两个值相同返回true。用“==”比较引用时,如果两个引用指向内存中的同一个对象,则返回true。Java把所有的内容相同的无名字符串当成一个无名String对象来处理。String类的equalsIgnoreCase方法在进行比较时,忽略两个字符串中的大小写的区别。String类的compareTo方法在所比较的字符串相等时返回0,如果调用compareTo的字符串比作为参数的字符串小,则返回一个负数;如果调用compareTo的字符串比作为参数的字符串大时,则返回一个正数。CompareTo方法使用的是字典法比较。String类的regionMatches方法比较两个字符串中的某一部分是否相等。String类的startWith方法确定调用该方法的字符串是否以参数所指定的字符开始。String类的endsWith方法确定调用方法的字符串是否以参数所指定的字符结尾。hashCode方法进行哈希码的计算,使字符串对象能被存储在哈希表中。该方法继承自Object类,String类对它进行了重构。String类的indexOf方法在字符串中定位某个字符或子串第一次出现的位置。LastIndexOf方法在字符串中定位某个字符或子串最后一次出现的位置。String类的substring方法拷贝并返回字符串对象的一部分。String类的concat方法用于连接两个字符串对象,作为一个新的字符串对象返回,返回对象包含了原来两个字符串中的所有字符。String类的replace方法返回一个新的字符穿对象,该对象中原字符串所有的由第1个字符参数指定的字符都被第2个字符参数替换。String类的toUpperCase方法返回一个新的字符串对象,该对象将原来字符串中的小写字母都替换成大写字母。ToLowerCase方法返回一个新的字符串对象,将对象将原字符串中的大写字母都替换小写字母。String类的trim方法返回的新字符串对象中删除了原来字符串中开头或结尾处的空白字符(如空格、换行和tab)。String类的toCharArray方法创建并返回一个新的字符数组,数组中包含了原字符串中的字符拷贝。String类的valueOf方法由它的参数转换成的字符串。在第一次对某个String对象调用String类的intem方法时,它将返回一个指向内存中该String对象的引用。当下次对与原String对象内容相同的不同String对象进行intem调用时,将产生对原String对象的多个引用。StringBuffer类提供了三种构造函数,它们分别使StringBuffer可以被初始化不含字符且初始容量为16,或者不含字符且初始容量由整型参数指定;或者含有字符串参数中的字符拷贝且初始容量为字符串参数中的字符个数再加16。StringBuffer类的length方法返回在StringBuffer中当前存储的字符个数。Capacity方法返回的是在不另外分配内存的情况下,StringBuffer中可以存储的字符个数。ensureCapacity方法用于保证一个StringBuffer的最小容量。Setlength方法用于增大或减少一个StringBuffer的长度。StringBuffer类的charAt方法返回在指定下标位置的字符。SetCharAt方法用于在指定的位置设置字符。GetChars方法返回一个字符数组,其中包含了StringBuffer中字符的拷贝。StringBuffer类提供了多种重载的append方法,用以把基本数据类型,字符数组,字符串和Object类型的值添加到StrngBuffer的后面。Java编译器用StringBuffer和append方法实现用于连接字符串的“+”“+=”运算符功能。StringBuffer类提供了重载的insert方法,用以把基本数据类型,字符数组,字符串和Object类型的值添加到StringBuffer的后面。判断题“//”即可以表示单行注释,也可以表示多行注释。(错)方法System.out.println只在命令窗口中显示(或打印)一行文字。(错)类System不是由程序开头的import语句装载。(对)声明变量时必须指定一个类型。(对)注释的作用是使程序在执行时在屏幕上显示//之后的内容。(错)Java认为变量number与NuMbEr是相同的。(错)求模运算符(%)只可用于整型操作数。(错)算术运算符*,/,%,+和-有相同的优先级。(错)方法Integer.parseInt将一整数转变成String。(错)Java应用程序从main方法开始执行。(对)default在switch选择结构中是必需的。(错)break语句在switch选择结构的default中是必需的。(错)如果x>y为真,则表达式(x>y)&&100的值为真。错在包含||运算符的表达式中,如果它的一个或两个操作数为真,则该表达式为真。(对)if结构和if/else结构所做的动作是相同。(错)想确保当两个条件都为true时才执行某一动作,可以使用逻辑与&&运算符。(对)若要确定两个条件中是否有一个为true或都为true时,可使用逻辑异或^。(错)布尔逻辑与和布尔逻辑或运算符的工作方式完全相同。(错)结构化方法的优点在于,只允许使用7种单入口/单出口的组件。(错)结构化程序设计提高了程序的清晰简单性,并且它只需使用三种形式的控制结构就足够了。(对)下标用于指出数组中某个元素位置的数字。(错)把数组中元素按某种顺序排列的过程叫做查找。(对)确定数组中是否含有某个关键字的过程叫做排序。(错)一个数组可以存放许多不同类型的数值。(错)数组的下标通常是float型。(错)数组的某个元素被传递给一个方法并被该方法修改,当被调用方法执行完毕时,这个元素中含有修改过的数值。(错)数组可以声明为任何数据类型。(对)数组由具有一名字和相同类型的一组连续内存单元构成。(对)在数组声明中可以用等号及一个逗号分隔的初始值表初始化数组元素,该数组大小只能有用户来决定。(错)将一个数组传递给一个方法,必须加在数组名后加方括号。(错)用==比较字符串对象时,如果字符串包含的是同一个值时,结果为true。(错)字符串在创建后可以被修改。(错)String类的charAt方法返回字符穿串中字符的个数。(错)String类的compareTo方法在所比较的字符串相等时返回0。(对)运算符“==”用于比较引用时,如果两个引用指向内存中同一个对象,则返回true。(对)StringBuffer类的indexOf方法在字符串中定位某个字符或子串第一次出现的位置。(错)String类的substring方法拷贝并返回字符串对象的一部分。(对)String类的replace方法只返回一个新的字符串对象。(错)String类的valueOf方法由它的参数转换成的字符串。(对)StringTokenizer类的hasMoreTokens方法确定在字符串中是否还有语言符号返回。(对)选择题下面这些标识符那些是错误的:CA.MyGameB._isHersC.2JavaProgramD.$abc所有的程序均可以用几种类型控制结构编写:AA.顺序结构、选择结构、循环结构B.顺序结构、循环结构C.顺序结构、选择结构D.选择结构、循环结构当条件为真和条件为假时,▁D▁控制结构可以执行不同的动作。A.switchB.whileC.forD.if/else当事先不知道语句重复执行的次数时,可以用一个▁C▁值来终止循环。A.布尔B.正C.标记D.负使整值变量X加1,下面写出的形式不对的是:DA.x++B.++xC.x=x+1D.x=+1下面程序的输出结果是:CpublicclassTest{voidprintValue(intm){do{System.out.println(“Thevalueis”+m);}while(--m>10);}publicstaticvoidmain(Stringarg[]){intI=10;Testt=newTest();t.printValue(i);}}A.8B.9C.10D.11下面程序的那一行可能引发错误:C1: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.4B.6C.7D.8下面程序的那一行可能引发错误:C1:Stringstr=null;2:if((str!=null)&&(str.length()>10){3:System.out.println(“morethan10”);4:}5:elseif((str!=null)&(str.length()<5){6:System.out.println(“lessthan5”);7:}8:else{System.out.println(“end”);}A.1B.2C.5D.8如果result是布尔变量,下面哪个选项是正确的:ABA.result=true;B.if(result){//dosomething…}C.if(result!=0){//dosomething…}D.result=1;请看下面的程序代码:Aif(x>0){System.out.println(“first”);}elseif(x<10){System.out.println(“second”);}else{System.out.println(“third”)}当程序输出“second”时,X的范围为:A.x<=0B.x<10&&x>0C.x>0D.x>=10请看下面的程序代码:ABCswitch(n){case0:System.out.println(“first”);case1:case2:System.out.println(“second”);break;default:System.out.println(“end”);}当n为何值时,程序段将输出字符串second:A.0B.1C.2D.3线性表和表可以存储在▁B▁中。A.数组B.堆栈C.文件D.字符串数组元素之所以相关,是因为它们具有相同的▁AB▁。A.名字B.类型C.下标D.地址二维数组使用几个下标。BA.1B.2C.3D.4请看下面的程序段:CpublicclassPerson{staticintarr[]=newint[10];publicstaticvoidmain(Stringa[]){System.out.println(arr[1]);}}下面说法正确的是:A.当编译时会发生错误B.编译不会发生错误但执行是会发生错误C.输出结果为0D.不会输出结果请看下面的程序段:ApublicclassPerson{intarr[]=newint[10];publicstaticvoidmain(Stringa[]){System.out.println(arr[1]);}}下面说法正确的是:A.当编译时会发生错误B.编译不会发生错误但执行是会发生错误C.输出结果为0D.不会输出结果下面哪个选项正确的声明一个字符型数组:CA.charstr[]B.charstr[][]C.Stringstr[]D.Stringstr[10]下面那一个选项正确创建一个空的含有6个元素的字符数组:CDA.Strings[6];B.String[6]s;C.Strings[]={“”,””,””,””,””,””};D.Strings[]=newString[6];For(intm=0;m<6;m++){s[m]=””;}E.Strings[]=newString[6];For(intm=0;m<6;m++){s[m]=null;}请看下面的程序段:DpublicclassMyClass{publicstaticvoidmain(Stringarg[]){intarr[]=newint[3];System.out.println(“itis“+arr[1]);}}当编译和执行这段代码时会出现:A.有一个编译错误为“possiblereferencebeforeassignment”B.有一个编译错误为“illegalarraydeclarationsyntax”C.有异常出现为“NullPointerException”D.正确执行并且输出0请看下面的程序段ABCpublicclassPerson{Stringname;intage;publicPerson(Stringn,inta){name=n;age=a;}publicstaticvoidmain(Stringarg[]){//pointx}}下面选项可以添加到//pointx处:A.Personp[]=newPerson[3];P[1]=newPerson(“user1”;24);B.Personp[];P=newPerson[3];P=newPerson(“user2”;56);C.Personp[]={newPerson(“user1’,34),(“user2”,34)}D.Personp[]=newPerson{(“user1’,34),(“user2”,34)}请看下面的程序段CDpublicclassTest{Strings;intm;publicTest(Stringt,intn){s=t;m=n;}publicstaticvoidmain(Stringarg[]){Testt[]={newTest(“abc”,3);newTest(“ddf”,23)};//pointx}}下面选项可以添加到//pointx处:A.System.out.println(“thevalueis”+t[3].s);B.System.out.println(“thevalueis”+t[2].m);C.System.out.println(“thevalueis”+t[1].s);D.System.out.println(“thevalueis”+t[1].m);下面语句书写错误的是:BDA.Strings=“Gonewiththewind”;Stringt=“good”;Stringk=s+t;B.Strings=“Gonewiththewind”;Stringt;t=s[3]+“one”;C.Strings=“Gonewiththewind”;Stringstandard=s.toUpperCase();D.Strings=“homedirectory”;Stringt=s-“directory”;请看下面的代码ADStrings=“hello”;Stringt=“hello”;Stringc[]={‘h’,’e’,’l’,’l’,’o’};下面哪一选项的语句返回值为真:A.s.equals(t);B.t.equals(c);C.s==t;D.t.equals(newString(“hello”));E.t==c;请看下面的代码ADStrings=“story”;下面选项语句书写正确的是:A.s+=“books”;B.charc=s[1];C.intlen=s.length;D.Stringt=s.toLowerCase();请看下面的代码E1.classExample{2.Stringstr;3.publicExample(){4.str=“example”;5.}6.publicExample(Strings){7.str=s;8.}9..}10.classDemoextendsExample{11.}12.publicclassTest{13.publicvoidf(){14.Exampleex=newExample(“good”);15.Demod=newDemo(“Good”);16.}17.}那一行将导致发生错误:A.3B.6C.10D.14E.15请看下面的代码BpublicclassExample{Stringstr=newString(“hello”);Charch[]={‘d’,’b’,’c’};publicstaticvoidmain(Stringargs[]){Exampleex=newExample();ex.change(ex.str,ex.ch);System.out.println(ex.str+“and”+ex.ch);}publicvoidchange(Stringstr,charch[]){str=”world”;ch[0]=’a’;}}该程序的输出结果是:A.hellodbcB.helloabcC.worlddbcD.worldabc下面选项正确创建一个字符型数组(含有4个元素)的是:ABA.Stringa[]=newString[4];for(inti=0;i<4;a[i++]=””);B.Stringa[]={“”,””,””,””};C.Stringa[4];D.String[4]a;E.String[]a=newString[4];For(inti=0;i<4;a[i++]=null);下面选项正确的是:DA.Stringtemp[]=newString{“j””a””z”};B.Stringtemp[]={“j””a””z”};C.Stringtemp={“j”,”a”,”z”};D.Stringtemp[]={“j”,”a”,”z”};请看下面的代码DF1.StringBuffersb=newStringBuffer(“abc”);2.Strings=newString(“abc”);3.sb.append(“def”);4.s.append(“def”);5.sb.inser(1,”zzzz”);6.s.concat(sb);7.s.trim();下面说法正确的是:A.编译时在第一行发生一个错误B.编译时在第二行发生一个错误C.编译时在第三行发生一个错误D.编译时在第四行发生一个错误E.编译时在第五行发生一个错误F.编译时在第六行发生一个错误G.编译时在第七行发生一个错误请看下面的代码AStrings1=newString(“hello”);Strings2=newString(“there”);Strings3=newString();下面选项中语句正确的是:A.s3=s1+s2;B.s3=s1-s2;C.s3=s1&s2;D.s3=s1&&s2;请看下面的代码CpublicclassStrEq{publicstaticvoidmain(Stringargv[]){StrEqs=newStrEq();}privateStrEq(){Strings=“Marcus”;Strings2=newString(“Marcus”);If(s==s2){System.out.println(“wehaveamatch”);}else{System.out.pritln(“Notequal”);}}}下面说法正确的是:A.由于使用“privateStrEq”编译时会出现错误B.输出“wehaveamatch”C.输出“Notequal”D.由于使用“==”操作符导致编译时出现错误简述题1)Java有那些基本数据?类型写出int型所能表达的最大、最小数据。答:Java的基本数据类型包括:布尔型、字节型、字符型、短整型、整型、长整型、浮点型、双精度型。Int型所能表达的最大数据为2147483647,最小数据为-2147482648。

2)Java有那些算术运算符、关系运算符、逻辑运算符、位运算符和赋值运算符?试列举单目和三目运算符。答:(1)Java的算术运算符有:

双目运算符

+、-、*、/、%;

单目运算符

+

+、-

-、-。

(2)关系运算符

=

=、!=、>、<、>=、<=。

(3)逻辑运算符

&、|、!、^、&&、||。

(4)位运算符

~、>>、<<、>>>。

(5)赋值运算符

+

=、-

=、*

=、/

=、%

=、&=、|=、^=、<ó、>=、<<<=。

(6)三目运算符

?、:。3)写出下面表达式的运算结果,设a=3,b=-5,f=true。(1)--a%b++(2)(a>=1&&a<=12?a:b)(3)f^(a>b)(4)(--a)<<a答:(1)

-

-

a

%

b+

+

=

2

(2)

(

a

>=

1

&&

a

<=

12

?

a

:

b

)

=

3

(3)

f

^

(

a

>

b

)

=

false

(4)

(

-

-

a

)<

<

a

=

84)回答下列与一个fractions的数组相关的问题。①定义一个常数变量ARRAY_SIZE并初始化为10。②声明一个数组,它含有ARRAY_SIZE个float型元素,并将元素初始化为0。③写出数组的第4个元素。④写出数组元素4。⑤给数组元素9赋值1.667。⑥给数组第7个元素赋值3.333。⑦用for循环结构求数组的所有元素之和,定义一个整型变量x作为循环控制变量。答案:①

final

int

ARRAY_SIZE

=

10;

float

fractions[

]

=

new

float[ARRAY_SIZE];

fractions[3];

fractions[4];

fractions[9]

=

1.667;

fractions[6]

=

3.333

float

total

=

0;

for(

int

x

=

0;x

<

fractions

.length;x

+

+

)

total

+

=

fractions[x];5)回答下列与一个叫做table的数组有关的问题。①将数组声明为一个3行3列的整数数组,假设常数变量ARRAY—SIZE已被定义为3。②用for循环结构初始化数组,使数组的每个元素的值都等于其下标和。假设整型变量x和y是控制变量。答:①错误:while结构头部的分号将导致无限循环,此外,大括号也没有匹配。

改正:将分号“{”代替,或去掉“;”和“}”。

②错误:使用一个浮点数来控制一个循环结构可能达不到控制循环的目的,因实数的表示不精确。

改正:使用一个整数,并执行合适的计算以得到所需的值。

for

(

y

=

1;y

!

=

10;y

+

+

)

System

.out

.println

(

(

float

)

y

/

10

)

6)3.找出下列程序段中的错误并改正。①finalintARRAY_SIZE=5;ARRAY_SIZE=10;②设intb[]=newint[10];for(inti=0;i<=b.length;i++)b[i]=1;③设inta[][]={{1,2},{3,4};a[1,1]=5;答:①错误。如果一个final变量已被初始化,那么就不能修改该final变量的值。

②错误:超界限用数组元素(b[10])。

改正:把运算符<

=改写<。

③错误:数组下标写法有误。7)向量与数组有和不同?它们分别适用于什么场合?答:向量是类似于数组的顺序存储的数据结构,不同之处是向量中的每个元素都是对象,向量中还封装了一些常用的数据处理功能,因此向量是允许不同类型元素共存的变长数组。

下面的情况下适用向量:

①需要处理的对象数目不定;序列中的元素都是对象,或可以表率为对象。

②需要将不同类的对象组合成一个数据序列。

③需要做频繁的对象序列中元素的插入和删除。

④经常需要定位序列中的对象或其他的查找操作。

⑤需要在不同的类之间传递大量的数据。

Vector类的方法

相对于数组要多一些,但是使用这个类也有一定的局限性,例如其中的对象不能是简单数据类型等。

一般在下面的情况下,使用数组比较合适:

①序列中的元素是简单数据类型的数据。

②序列中元素的数目相对可以固定,插入、删除和查找操作比较少。8)写出完成以下任务的Java语句:①用结构for求出1—99中所有奇数的和。假设已声明了整型变量sum和count。②利用pow方法计算2.5的3次幂。③用循环和计数变量打印从1到20的整数。假设已声明了变量x,但还没有初始化。每行只打印5个整数。④用for结构实现③。答:①

sum

=

0

for

(

count

=

1;count

<

=

99;count

+

=

2

)

sum

+

=

count;

Math

.pow(

2.5

,3

)

x

=

1;

while

(

x

<

=

20

){

System

.out

.print

(

x

)

if

(

x

%

5

=

=

0

)

System

.out

.println

(

)

else

System

.out

.print

(‘

\

t

)

+

+

x;}

for

(

x

=

1;x

<

=

20;x

+

+

){

System

.out

.print

(

x

)

if

(

x

%

5

=

=

0

)

System

.out

.println

(

)

else

System

.out

.print

(‘

\

t

)

;}

或写成

for

(

x

=

1;x

<

=

20;x

+

+

){

if

(

x

%

5

=

=

0

)

System

.out

.println

(

x

)

else

System

.out

.print

(

x

+‘

\

t

)

;}9)找出下面的代码段中的错误并说明如何改正。①x=1;while(x<=10)x++;②for(y=.1;y!=1.0;y+=.1)System.out.println(y);③switch(n){case1:System.out.println(“Thenumberis1“);case2:System.out.println(“Thenumberis2“);break;default:System.out.println(“Thenumberisnot1or2“);break;}④下面的代码应打印值1—10;n=1;while(n<10)System.out.println(n++);⑤while(c<=5){product*=c;++c;⑥if(gender==1)System.out.println(“woman”);else;System.out.println(“man”);。答:①错误:while结构头部的分号将导致无限循环,此外,大括号也没有匹配。

改正:将分号“{”代替,或去掉“;”和“}”。

②错误:使用一个浮点数来控制一个循环结构可能达不到控制循环的目的,因实数的表示不精确。

改正:使用一个整数,并执行合适的计算以得到所需的值。

for

(

y

=

1;y

!

=

10;y

+

+

)

System

.out

.println

(

(

float

)

y

/

10

)

③错误:在第一case的语句组中,漏了break语句。

改正:在第一case的最后加上break语句。不过,如果希望case

2:

中的语句在每次case

1:

语句执行后都执行,这就不算是一个错误。

④错误:while的循环条件中的关系运算符有误。

改正:用<

=代替<,或用11代替10。

⑤错误:while循环缺少有括号(})。

改正:在语句

+

+

=

C之后加上右括号())。

⑥错误:else后的分号将导致逻辑错误,其后的输出语句总是回被执行。

改正:删除else后的分号。10)结构化程序设计有那三种基本流程?它们分别对应Java中的那些语句?答:结构化程序设计有顺序、分支、循环三种基本流程。Java中的分支语句包括if语句、switch语句、;循环语句包括while语句、do-while语句、for语句;其他如对象、变量定义语句、赋值语句、方法调用语句等都是顺序语句。11)在一个循环中使用break,continue和return语句有什么不同的效果?答:在循环中使用break语句,将使循环终止,流程从break语句处跳转到break语句所在的循环外面的第一个语句继续执行。在循环中使用continue语句,将提前结束本轮循环,流程跳转到continue语句所在的循环的第一个语句继续执行。在循环中使用return语句,将终止当前方法调用,同时终止循环,使流程返回到调用语句的下一个语句执行。12)对下面的描述,分别编写一个语句完成指定的任务。①比较s1中的字符串和s2中的字符串的内容是否相等。②使用+=将字符串s2添加到字符串s1后。③确定s1中字符串的长度。答:①

s1.equal(

s2

);

s1

+

=

s2;

s1

.length(

);13)什么是常量?什么是变量?字符变量与字符常量有何不同?答:常量的数值或数据一经建立,在程序的整个运行过程中都不会改变。变量的数值或数据在程序的运行过程中可以改变。下面的语句定义了一个字符变量:

char

ch

=

‘a’;

变量ch的初始数值为‘a’,如果执行了下面的赋值语句:

ch

=

’b’;则ch的数值改变为’b’。14)什么是字符串?Java中的字符串分为那两个类?答:字符串是字符的序列。Java程序中的字符串分为String类表示的字符串常量和StringBuffer类表示的字符串变量两大类。15)String类的concat()方法与StringBuffer类的append()方法都可以连接两个字符串,它们之间有何不同?答案:String类的concat(

)方法返回连接后的长字符串,String类自身并不改变。StringBuffer类的append(

)方法在StringBuffer对象后面添加一个字符串,改变了原有的字符串。

程序设计题1、编写一个应用程序,计算和打印从1加到10的累加和。用while结构循环执行计算及加1语句。循环必须在x加到11时终止。#include<stdio.h>

voidmain()

{inti=1,s=o;

while(i<=10)

{s+=i;

i++;

}

printf("s=%d\n",s);

}2、求出三个整数的最小值。importjava.applet.*;importjava.awt.*;importjava.awt.event.*;publicclassch3_e3_13extendsAppletimplementsActionListener{ Labelresult; TextFieldin1,in2,in3; Buttonbtn; inta=0,b=0,c=0,min; publicvoidinit() { result=newLabel("请先输入三个待比较的整数"); in1=newTextField(5); in2=newTextField(5); in3=newTextField(5); btn=newButton("比较"); add(in1); add(in2); add(in3); add(btn); add(result); btn.addActionListener(this); } publicvoidactionPerformed(ActionEvente) { a=Integer.parseInt(in1.getText()); b=Integer.parseInt(in2.getText()); c=Integer.parseInt(in3.getText()); if(a<b) if(a<c) min=a; else min=c; else if(b<c) min=b; else min=c; result.setText("三数中的最小值是:"+min); }}3、编写一个Java程序接收用户输入的一个1—12之间的整数(如果输入的数据不满足这个条件,则要求用户重新输入),利用switch语句输入对应的月份的天数。importjava.util.Scanner;

publicclassxxx{

/**

*@paramargs

*/

publicstaticvoidmain(String[]args){

Scannerscan=newScanner(System.in);

inti=scan.nextInt();

if(i<1&&i>12){

System.out.println("请重新输入月份");

i=scan.nextInt();

}

switch(i)

{

case1:System.out.println("本月有31天");break;

case2:System.out.println("本月有29天");break;

case3:System.out.println("本月有31天");break;

case4:System.out.println("本月有30天");break;

case5:System.out.println("本月有31天");break;

case6:System.out.println("本月有30天");break;

case7:System.out.println("本月有31天");break;

case8:System.out.println("本月有31天");break;

case9:System.out.println("本月有30天");break;

case10:System.out.println("本月有31天");break;

case11:System.out.println("本月有30天");break;

case12:System.out.println("本月有31天");break;

}

}

}编写程序,接受用户输入的若干字符串,并按字典排序输出。要求使用两种以上的排序算法。importjava.util.ArrayList;

importjava.util.Iterator;

publicclassCompareString{

publicvoidcountingSort(String[]A,char[]B,intk){//计数排序

String[]temp=newString[A.length+1];

int[]c=newint[k+1];

inti,j;

for(i=0;i<=k;i++)

c[i]=0;

for(j=0;j<B.length;j++){

c[B[j]-'a']=c[B[j]-'a']+1;

}

for(i=1;i<=k;i++)

c[i]=c[i]+c[i-1];

for(j=A.length-1;j>=0;j--){

temp[c[B[j]-'a']]=A[j];

c[B[j]-'a']=c[B[j]-'a']-1;

}

for(i=1;i<=A.length;i++){

A[i-1]=temp[i];

}

}

publicvoidradixSort(String[]A,intd){

ArrayList[]arr=newArrayList[26];

countingSort(A,divide(A,d),max(divide(A,d))-'a');

for(inti=0;i<A.length;i++){

inttemp=A[i].charAt(d-1)-'a';

if(arr[temp]==null)

arr[temp]=newArrayList();

arr[temp].add(A[i]);

}

for(intj=0;j<26;j++){//对各个桶进行插入排序

if(arr[j]!=null){

insert(arr[j]);

}

}

//将各个桶结果进行合并

intcount=0;

for(inti=0;i<26;i++){

if(arr[i]!=null){

Iteratorit=arr[i].iterator();

while(it.hasNext()){

Stringtemp=(String)it.next();

A[count]=temp;

count++;

}

}

}

}

publicvoidinsert(ArrayListlist){//插入排序

if(list.size()>1){

for(inti=1;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论