java程序的设计试题库完整_第1页
java程序的设计试题库完整_第2页
java程序的设计试题库完整_第3页
java程序的设计试题库完整_第4页
java程序的设计试题库完整_第5页
已阅读5页,还剩107页未读 继续免费阅读

下载本文档

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

文档简介

PAGE32数据结构<C++版>./《Java语言程序设计基础教程》练习思考题参考答案第1章Java程序设计概述1.1单项选择题1.编译JavaApplication源文件将产生相应的字节码文件,扩展名是什么 A..java B..class C..html D..exe解答:B2.Java语言具有许多优点和特点,下列选项中,哪个反映了Java中"一次编译,随处运行"的特点. A.简单性 B.平台无关性 C.面向对象性 D.安全性解答:B3.Java语言具有许多优点和特点,下列选项中,哪个反映了Java中并行机制的特点. A.多线程 B.平台无关性 C.面向对象性 D.安全性解答:A4.在Java语言中,下列哪些语句关于内存回收的说明是正确的?A.程序员必须创建一个线程来释放内存;B.内存回收程序负责释放无用内存;C.内存回收程序允许程序员直接释放内存;D.内存回收程序可以在指定的时间释放内存对象解答:B5.一个Java源文件中最多只能有多少个public类. A.1个 B.2个 C.3个D.任意多个解答:A6.下面哪一个不是Java语言所具有的特点. A.没有全局变量,在类的定义外部没有任何的变量定义;B.不直接支持指针操作,而使用更安全的引用类型; C.支持子类对父类的多继承; D.具有自动垃圾收集功能;解答:C7.下面哪一个不是Java开发工具包JDK的组成部分. A.Java的编译器;B.Java的解释器; C.Java的API继承类库; D.Eclipse开发工具;解答:C8.JDK提供的编译器是〔. A.java.exe B.javac.exe C.javap.exe D.javaw.exe解答:B9.作为Java应用程序入口的main方法,其声明格式可以是〔 A.publicvoidmain<String[]args> B.publicstaticvoidmain<String[]args> C.publicstaticvoidMain<String*args> D.publicintmain<String[]args>解答:B10.下列说法正确的是〔AA、JAVA程序的main方法必须写在类里面B、JAVA程序中可以有多个main方法C、JAVA程序中类名必须与文件名一样D、JAVA程序的main方法中如果只有一条语句,可以不用{}<大括号>括起来11.下列哪些语句关于Java内存回收的说明是正确的?〔BA、程序员必须创建一个线程来释放内存B、内存回收程序负责释放无用内存C、内存回收程序允许程序员直接释放内存D、内存回收程序可以在指定的时间释放内存对象1.2填空题1、开发与运行Java程序需要经过的三个主要步骤为____________、____________和____________.解答:编辑源程序、编译生成字节码和解释运行字节码2、使用Java编译器___javac____.exe编译源文件得到字节码文件.3、Java应用程序必须通过Java解释器__JAVA__.exe来解释执行其字节码文件.4、如果Java源文件中有一个类是public类,那么源文件的名字必须与这个类的名字完全_相同______,扩展名是.java.5、Java应用程序总是从主类的____main___方法开始执行.1.3简答题13.简述Java程序的开发过程?

〔1使用一个文字编辑器,编写源文件.〔2使用java编译器,编译源文件得到字节码文件.

〔3解释运行字节码,分两种java应用程序必须通过java解释器来解释执行,java小应用程序必须使用解释器和浏览器运行程序.1.什么是Java虚拟机?为什么Java被称作是"平台无关的编程语言"?解答:Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行的字节码文件.Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译.Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性.3.Java语言的关键特点有哪些?解答:简单性平台无关性面向对象性安全性分布式多线程动态性1.4综合题第2章Java基本的程序设计结构2.1单项选择题1、下面哪一项在java中是非法的标识符?〔A.$user B.pointC.You&meD._endline解答:C2、若有定义inta=9,b=6;那么a>b的值是:〔A.0 B.1C.false D.true解答:D3、执行完以下代码int[]x=newint[25];后,以下说明正确的是:〔A.x[24]为0 B.x[24]未定义 C.x[25]为0 D.x[0]为空解答:A4、Java应用程序的main方法中有以下语句,则输出的结果是〔.int[]x={2,3,-8,7,9};intmax=x[0];for<inti=1;i<x.length;i++>{if<x[i]>max>max=x[i];}System.out.println<max>;A.2 B.-8 C.7 D.9解答:D5、设x=1,y=2,z=3,则表达式y+=z--/++x的值是〔A.3 B.3.5C.4 D.5解答:A5、执行System.out.println<5/4>,这条代码的输出结果是〔A.1 B.1.25C.1.5 D.0解答:A6、下列语句有错误的是:〔A.int[]a;B.int[]b=newint[10];C.intc[]=newint[];D.intd[]=null; 解答:C7、下列语句有错误的是:〔A.inta[][]=newint[5][5];B.int[][]b=newint[5][5];C.int[]c[]=newint[5][5];D.int[][]d=newint[5,5];解答:D8、下列哪一个不属于Java中的8种基本数据类型〔A.double;B.char;C.int;D.String;解答:D9、以下数据类型存储空间最大的是〔.〔Abyte〔Blong〔Cfloat〔Dchar解答:B10、System.out.println<"5"+2>;的输出结果应该是〔.A52B7C2D5答案:A11.在类的定义中可以有两个同名方法,每个方法的参数不同,这种现象称为方法〔D.〔A封装〔B继承〔C覆盖〔D重载12.java中定义字符串Strings="pzhu",下面操作可以取得字符串长度的是〔.A.s.length<>B.s.lengthC.s.size<>D.length<s>解答:A13.指出下列程序运行的结果〔B<很难>publicclassExample{Stringstr=newString<"good">;char[]ch={'a','b','c'};publicstaticvoidmain<Stringargs[]>{Exampleex=newExample<>;ex.change<ex.str,ex.ch>;System.out.print<ex.str+"and">;System.out.print<ex.ch>;}publicvoidchange<Stringstr,charch[]>{str="testok";ch[0]='g';}}A、goodandabcB、goodandgbcC、testokandabcD、testokandgbc14.下面代码的运行结果为:〔C<较难>importjava.io.*;importjava.util.*;publicclassfoo{publicstaticvoidmain<String[]args>{Strings;System.out.println<"s="+s>;}}A代码得到编译,并输出"s="B代码得到编译,并输出"s=null"C由于Strings没有初始化,代码不能编译通过D代码得到编译,但捕获到NullPointException异常15.关于以下程序段,正确的说法是〔C1.Strings1="abc"+"def";2.Strings2=newString〔s1;3.if〔s1==s24.System.out.println<"==succeeded">;5.if<s1.equals<s2>>6.System.out.println<".equals<>succeeded">;A、行4与行6都将执行B、行4执行,行6不执行C、行6执行,行4不执行D、行4、行6都不执行16.Javaapplication中的主类需包含main方法,main方法的返回类型是什么?〔DA、intB、floatC、doubleD、void17.为一个boolean类型变量赋值时,可以使用<B>方式A、boolean=1;B、booleana=<9>=10>;C、booleana="真";D、booleana==false;18.表达式<11+3*8>/4%3的值是<D>A、31B、0C、1D、219.运算符优先级别排序正确的是〔A〔太难A、由高向低分别是:<>、!、算术运算符、关系运算符、逻辑运算符、赋值运算符;B、由高向低分别是:<>、关系运算符、算术运算符、赋值运算符、!、逻辑运算符;C、由高向低分别是:<>、算术运算符、逻辑运算符、关系运算符、!、赋值运算符;D、由高向低分别是:<>、!、关系运算符、赋值运算符、算术运算符、逻辑运算符;20.下列值不为true的表达式有〔C.A、"john"=="john"B、"john".equals<"john">C、"john"="john"D、"john".equals<newString<"john">>21、下面的方法,当输入为2的时候返回值是多少?〔D<很难>publicstaticintgetValue<inti>{intresult=0;switch<i>{case1:result=result+i;case2:result=result+i*2;case3:result=result+i*3;}returnresult;}A0B2C4D10答案:D解析:注意这里case后面没有加break,所以从case2开始一直往下运行.22、下面有关for循环的描述正确的是〔AA、for循环体语句中,可以包含多条语句,但要用大括号括起来B、for循环只能用于循环次数已经确定的情况C、在for循环中,不能使用break语句跳出循环D、for循环是先执行循环体语句,后进行条件判断23、score是一个整数数组,有五个元素,已经正确初始化并赋值,仔细阅读下面代码,程序运行结果是〔Btemp=score[0];for<intindex=1;index<5;index++>{if<score[index]<temp>{temp=score[index];}}A.求最大数B.求最小数C.找到数组最后一个元素D.编译出错26、2.2填空题1、Java语言是一种完全的_面向对象_程序设计语言2、Strings1="China";intn=s1.length<>;n的值为_5__3、在Java语言中,基本数据类型包括:____整数类型、____浮点类型、____字符类型_和____布尔类型17、在Java的基本数据类型中,char型采用Unicode编码方案,每个Unicode码占用__2___字节内存空间,这样,无论是中文字符还是英文字符,都是占用__2___字节内存空间.18、设x=2,则表达式<x++>/3的值是__0___.20、设有数组定义:intMyIntArray[]={10,20,30,40,50,60,70};则执行以下几个语句后的输出结果是:120.intMyIntArray[]={10,20,30,40,50,60,70}; ints=0; for<inti=0;i<MyIntArray.length;i++> if<i%2==1> s+=MyIntArray[i]; System.out.println<s>;21、数组对象的长度在数组对象创建之后,就__不会____改变.数组元素的下标总是从___0___开始.22、对于数组int[][]t={{1,2,3},{4,5,6}}来说,t.length等于__2___,t[0].length等于__3____.2.3简答题1、Java的基本数据类型有哪8种,每种类型的内存空间分别是多少.2.4综合题26、编程计算10~20的整数的平方值,将结果保存在一个数组中.27、编写一个程序使之从键盘读入10个整数存入整型数组a中,并输出这10个整数的最大值和最小值.importjava.util.Scanner;publicclasslianxi30{publicstaticvoidmain<Stringargs[]>{ Scannertemp;float[]sum=newfloat[11];floatmax,min;for<inti=0;i<10;i++>{ System.out.println<"请输入第一个数字<回车结束>:">; temp=newScanner<System.in>; Stringa=temp.nextLine<>; sum[i]=Integer.parseInt<a>;//获取输入的字符串 } max=sum[0]; min=sum[0];for<intj=1;j<10;j++> {if<max<sum[j]> max=sum[j];elseif<min>sum[j]> min=sum[j]; }System.out.println<max>; System.out.println<min>;}}31、如果我国经济以每年10%的速度保持稳定增长,请编写一个程序,计算每年达到多少,多少年可以实现总量翻两番.classexA4_1{publicstaticvoidmain<Stringargs[]>{inta=0;doublei=0.10,sum=1;while<sum<=4>{sum=<i+1>*sum;a++;System.out.println<"第"+a+"年达到"+sum>;}System.out.println<"需要"+a+"年实现两番">;}}第3章类和对象3.1单项选择题1、下列关于变量的叙述哪个是错的?〔A.实例变量是类的成员变量.B.在方法中定义的局部变量在该方法被执行时创建.C.实例变量用关键字static声明.D.局部变量在使用前必须被初始化.解答:C2、在Java语言中,下列哪个包是编译器自动导入的?〔A.java.applet B.java.langC.java.io D.java.awt解答:B6、不允许作为类及类成员的访问控制符的是〔.A.public B.privateC.static D.protected解答:C7、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为〔.A、staticvoidmethod<> B、publicvoidmethod<>C、finalvoidmethod<> D、abstractvoidmethod<>解答:A8、 可以在下面代码段pointx处写入的是?〔//pointxpublicclassInteresting{//dosomething}A. Stringstr;B. staticintPI=3.14;C. publicclassMyClass{//dootherthing…}D. importjava.awt.*;解答:D9、Java提供的许多类在不同的包中,使用下面哪个语句可以引入包中的类.A.packageB.includeC.importD.add解答:C11、已知A类被打包在packageA,B类被打包在packageB,且B类被声明为public,且有一个成员变量x被声明为protected控制方式.C类也位于packageA包,且继承了B类.则以下说法正确的是:〔A、A类的实例不能访问到B类的实例B、A类的实例能够访问到B类一个实例的x成员C、C类的实例可以访问到B类一个实例的x成员D、C类的实例不能访问到B类的实例解答:C〔太难13、在Java中,关于final关键字的说法正确的是〔A、如果修饰变量,则一旦赋了值,就等同一个常量.B、如果修饰类,则该类只能被一个子类继承.C、如果修饰方法,则该方法不能在子类中被覆盖.D、如果修饰方法,则该方法所在的类不能被继承.解答:A,C14、关于构造方法以下说法错误的是<D>.〔A构造方法名必须与类名一致〔B构造方法可以重载〔C构造方法是通过new来调用〔D每个类都必须编写构造方法代码15、关于类的定义以下说法错误〔B.〔A类定义使用class关键字〔B每个类中必须有一个main方法〔C一个包可以包含多个类〔Djava中所有类都是Object类的子类16、在创建对象时必须〔CA>先声明对象,然后才能使用对象B>先声明对象,为对象分配内存空间,然后才能使用对象C>先声明对象,为对象分配内存空间,对对象初始化,然后才能使用对象D>上述说法都对17、在调用方法时,若要使方法改变实参的值,可以〔BA>用基本数据类型作为参数B>用对象作为参数C>A和B都对D>A和B都不对18、关于以下程序代码的说明正确的是〔DclassHasStatic{ privatestaticintx=100; publicstaticvoidmain<Stringargs[]>{ HasStatichs1=newHasStatic<>; hs1.x++; HasStatichs2=newHasStatic<>; hs2.x++; hs1=newHasStatic<>; hs1.x++; HasStatic.x--; System.out.println<"x="+x>; }}A、5行不能通过编译,因为引用了私有静态变量B、10行不能通过编译,因为x是私有静态变量C、程序通过编译,输出结果为:x=103D、程序通过编译,输出结果为:x=10219、以下关于构造函数的描述错误的是〔A.A、构造函数的返回类型只能是void型.B、构造函数是类的一种特殊函数,它的方法名必须与类名相同.C、构造函数的主要作用是完成对类的对象的初始化工作.D、一般在创建新对象时,系统会自动调用构造函数.20、Java中,在如下所示的Test类中,共有〔C个构造方法.publicclassTest{privateintx;publicTest<>{x=35;}publicvoidTest<doublef>{This.x=<int>f;}publicTest<Strings>{}}A、0B、1C、2D、321、在Java中,关于构造方法,下列说法错误的是<C>A、构造方法的名称必须与类名相同B、构造方法可以带参数C、构造方法不可以重载D、构造方法绝对不能有返回值22、在Java语言中,下列关于类的继承的描述,正确的是〔B.A、一个类可以继承多个父类B、一个类可以具有多个子类C、子类可以使用父类的所有方法D、子类一定比父类有更多的成员方法23、分析选项中关于Java中this关键字的说法正确的是〔AA、this关键字是在对象内部指代自身的引用B、this关键字可以在类中的任何位置使用C、this关键字和类关联,而不是和特定的对象关联D、同一个类的不同对象共用一个this24、在Java接口中,下列选项中有效的方法声明是〔A.A、publicvoidaMethod<>;B、publicfinalvoidaMethod<>;C、protectedvoidaMethod<>;D、privatevoidaMethod<>;25、下列选项中关于Java中super关键字的说法正确的是〔A.A、super关键字是在子类对象内部指代其父类对象的引用B、super关键字不仅可以指代子类的直接父类,还可以指代父类的父类C、子类通过super关键字只能调用父类的方法,而不能调用父类的属性D、子类通过super关键字只能调用父类的属性,而不能调用父类的方法3.2填空题1、在Java程序中,通过类的定义只能实现____单重继承____,但通过接口的定义可以实现多____多重继承____.2、_抽象〔abstract___方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法必须在抽象类之中定义.__final____方法是不能被当前类的子类重新定义的方法.3、面向对象程序设计的三个特征是_____封装、____多态、____继承4、Java是面向对象语言,类是客观事物的_抽象____,而对象是类的_实例____.5、如果在子类中想使用被子类隐藏的父类成员变量或方法,就可以使用关键字__super_____.6、Java中有一种叫作___构造方法__的特殊方法用来对类的对象成员进行初始化.7、JAVA语言中提供了两种类型的字符串类来处理字符串,它们是___String_和___StringBuffer类8、Java语言中,所有的类都是___Object的子类,Java的窗口通常是___JFrame__的子类,___抽象_类只能定义但不能被实例化,_最终_类不能被继承9、一般Java程序的类体由两部分组成:一部分是_属性_,另一部分是_方法_10、分别用__class_关键字来定义类,用_new__关键字来分配实例存储空间.11、Java中类成员的限定词有以下几种:__private__,public___,protected___,_缺省__.其中,_public__的限定的范围最大.类中限定为_private__的成员,只能被这个类本身内部访问.12、Java类中,如果类的定义者没有显式的定义任何构造方法,系统将自动提供一个___无参默认_构造方法.13、在子类中定义与父类的相同的方法,若在多个子类中定义相同的方法,则可以调用不同子类中的相同方法而实现不同的功能,这实现了程序运行时的______多态.3.3简答题1.简单阐述方法的重载和方法的重写之间的区别解答:重写是子类的方法覆盖父类的方法,要求方法名和参数都相同重载是在同一个类中的两个或两个以上的方法,拥有相同的方法名,但是参数却不相同2、简述实例变量和类变量的区别.解答:类变量也叫静态变量,也就是在变量前加了static的变量;实例变量也叫对象变量,即没加static的变量;区别在于:类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象;2、简述实例方法和类方法的区别解答:实例方法可以对当前对象的实例变量进行操作,也可以对类变量进行操作,实例方法由实例对象调用.但类方法不能访问实例变量,只能访问类变量.类方法可以由类名直接调用,也可由实例对象进行调用.类方法中不能使用this或super关键字.3、面向对象的三个基本特征是什么,分别简单介绍每个特征.解答:三大特性是:封装,继承,多态.封装性就是把对象的属性和服务结合成一个独立的单位,并尽可能隐蔽对象的内部细节.特殊类的对象拥有其一般类的全部属性与服务,称作特殊类对一般类的继承.对象的多态性是指在一般类中定义的属性或服务被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为.这使得同一个属性或服务在一般类及其各个特殊类中具有不同的语义.4、简单阐述成员变量和局部变量的区别.解答:1>成员变量在整个类内都有效,局部变量只在定义它的方法内有效.2>成员变量又分为实例成员变量〔简称实例变量和类变量〔也称静态变量,如果成员变量的类型前面加上关键字static,这样的成员变量称为类变量或静态变量.3>如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏,也就是说,这个成员变量在这个方法内暂时失效.这时如果想在该方法内使用成员变量,必须使用关键字this.5、简述对象的引用和实体.解答:当用类创建一个对象时,类中的成员变量被分配内存空间,这些内存空间称为该对象的实体,而对象中存放着引用,以确保实体由该对象操作使用.没有实体的对象称为空对象,空对象不能使用,即不能让一个空对象去调用方法产生行为.6、简述this关键字的意义,以及它在成员方法和构造方法中如何使用.解答:this是Java的一个关键字,表示某个对象.this可以出现在实例方法和构造方法中,但不可以出现在类方法中.this可以出现在实例方法和构造方法中,但不可以出现在类方法中.this关键字出现在类的构造方法中时,代表使用该构造方法所创建的对象.实例方法必须通过对象来调用,当this关键字出现在类的实例方法中时,代表正在调用该方法的当前对象.成员函数中定义了和成员变量中相同的变量时,引用成员变量要用this;构造函数中调用同一个类的其他构造函数时用this.7、简单描述Java的参数传值中的两种方式,基本数据类型参数的传值和引用类型参数的传值?解答:在基本数据类型参数的传值中,基本数据类型的参数向该参数传递的值的级别不可以高于该参数的级别.在引用类型参数的传值中,Java的引用类型数据包括对象、数组和接口,当参数是引用类型时,"传值"传递的是变量的引用而不是变量所引用的实体.如果改变参数变量所引用的实体,就会导致原变量的实体发生同样的变化,但是如果改变参数的引用不会影响向其传值的变量的引用.8、基本数据类型和对象作为参数传递的不同?解答:〔1基本数据类型作为参数在方法中传递的是值传递.〔2对象是引用传递,当对象作为参数传递时,传递的是对象的地址.3.4综合题1、定义一个"点"<Point>类用来表示三维空间中的点,类体的成员变量x,y,z分别表示三维空间的坐标.类体中具有如下成员方法的定义:1构造方法Point〔可以生成具有特定坐标的点对象.2setX<>,setY<>,setZ<>为可以设置三个坐标的方法.3.getDistance<>为可以计算该点距离原点距离平方的方法.解答:classPoint{ doublex,y,z; Point<double_x,double_y,double_z> { x=_x; y=_y; z=_z; } voidsetX<double_x>{ x=_x; } voidsetY<double_y>{y=_y; } voidsetZ<double_z>{z=_z; } doublegetDistance<>{ return<x*x+y*y+z*z>; }}2、编写一个Java应用程序Test类,实现成员方法max<a,b>的重载.具体要求如下:a> 编写voidmax<inta,intb>成员方法,对两个整数进行大小的比较,输出打印较大的那个整数.b> 编写voidmax<floata,floatb>成员方法,对两个float数进行大小的比较,输出打印较大的那个float数.c> 编写voidmax<doublea,doubleb>成员方法,对两个double数进行大小的比较,输出打印较大的那个double数.publicclassTest{ voidmax<inta,intb>{ System.out.println<a>b?a:b>; } voidmax<floata,floatb>{ System.out.println<a>b?a:b>; } voidmax<doublea,doubleb>{ntln<a>b?a:b>; } publicstaticvoidmain<String[]args>{ Testt=newTest<>; t.max<3,4>; }}3、编写一个矩形类对数学中的矩形进行抽象描述,并具有方法可以计算矩形的周长和面积,具体分为以下三个子任务完成.〔1创建Rectangle类,添加属性width、height,并定义构造方法Rectangle<double_width,double_height>;〔2在Rectangle类中添加两种方法computCircum<>和computArea<>分别计算矩形的周长和面积;〔3编程利用Rectangle对象输出一个30*40的矩形的周长和面积.解答:publicclassTestRectang{publicstaticvoidmain<String[]args>{ //TODOAuto-generatedmethodstub Rectanglerect1=newRectangle<20,30>; System.out.println<putArea<>>; System.out.println<putCircum<>>; }}classRectangle{doublewidth,height;Rectangle<>{ width=0; height=0; } Rectangle<double_width,double_height>{ width=_width; height=_height; }doublecomputArea<>{returnwidth*height; }doublecomputCircum<>{return2*<width+height>; }}第4章继承、接口和内部类4.1单项选择题1、Java中用于定义接口的关键字是〔A、import B、packageC、class D、interface解答:D2、以下关于abstract的说法,正确的是<>A、abstract只能修饰类B、abstract只能修饰方法C、abstract类中必须有abstract方法D、abstarct方法所在的类必须用abstract修饰解答:D3、下列哪种说法是正确的〔A、私有方法不能被子类覆盖.B、子类可以覆盖超类中的任何方法.C、覆盖方法可以声明自己抛出的异常多于那个被覆盖的方法.D、覆盖方法中的参数清单必须是被覆盖方法参数清单的子集.解答:A4、关于类继承的说法,正确的是〔A、Java类允许多重继承B、Java接口允许多继承C、接口和类都允许多继承D、接口和类都不允许多继承解答:B5、 关于抽象类,正确的是______.A.抽象类中不可以有非抽象方法B.某个非抽象类的父类是抽象类,则这个子类必须重载父类的所有抽象方法C.可以用抽象类直接去创建对象D.接口和抽象类是同一个概念解答:B8、抽象类A和抽象类B的定义如下:abstractclassA{ abstractintgetinfo<>;}publicclassBextendsA{ privateinta=0; publicintgetinfo<>{ returna; } publicstaticvoidmain<Stringargs[]>{Bb=newB<>; System.out.println<b.getinfo<>>; }}关于上述代码说明正确的是〔.A.输出结果为0 B.通过编译但没有输出任何结果C.第5行不能通过编译 D.程序第2行不能通过编译解答:A9、 下面程序的运行结果是______classex4_5_11_A{ protectedstaticintcount=0; publicex4_5_11_A<>{ count++; }}classex4_5_11_Bextendsex4_5_11_A{ publicex4_5_11_B<>{ count++; }}classex4_5_11{ publicstaticvoidmain<Stringargs[]>{ex4_5_11_Bx=newex4_5_11_B<>;System.out.println<"count="+x.count>; }}A.count=1 B.count=2C.count=3 D.count=4解答:B10、设有下面两个类的定义:classPerson{ longid;//身份证号Stringname;//姓名}classStudentextendsPerson{ intscore;//入学总分intgetScore<>{returnscore;}} 问:类Person和类Student的关系是〔A、包含关系 B、继承关系C、关联关系 D、无关系,上述类定义有语法错误解答:B11、以下程序代码错误的是〔B.abstractclassP{}classAextendsP{}abstractclassBextendsP{}〔APp=newA<>;〔BPp=newB<>;〔CAa=newA<>;〔DPp=newP<>{voidfoo<>{}};12、下面是People和Child类的定义和构造方法,每个构造方法都输出编号.在执行newChild<"mike">的时候都有哪些构造方法被顺序调用?请选择输出结果<D>classPeople{Stringname;publicPeople<>{System.out.print<1>;}publicPeople<Stringname>{System.out.print<2>;=name;}}classChildextendsPeople{Peoplefather;publicChild<Stringname>{System.out.print<3>;=name;father=newPeople<name+":F">;}publicChild<>{System.out.print<4>;}}A312B32C432D13213、选项中哪一行代码可以替换题目中//addcodehere而不产生编译错误?〔ApublicabstractclassMyClass{publicintconstInt=5;//addcodeherepublicvoidmethod<>{}}Apublicabstractvoidmethod<inta>;BconstInt=constInt+5;Cpublicintmethod<>;DpublicabstractvoidanotherMethod<>{}15、以下哪项是接口的正确定义?〔DA、interfaceB{voidprint<>{}}B、abstractinterfaceB{voidprint<>}C、abstractinterfaceBextendsA1,A2//A1、A2为已定义的接口{abstractvoidprint<>{};}D、interfaceB{voidprint<>;}16、A派生出子类B,B派生出子类C,并且在Java源代码中有如下声明:1.Aa0=newA<>;2.Aa1=newB<>;3.Aa2=newC<>;问以下哪个说法是正确的?〔DA、只有第1行能通过编译B、第1、2行能通过编译,但第3行编译出错C、第1、2、3行能通过编译,但第2、3行运行时出错D、第1行、第2行和第3行的声明都是正确的17、假设A类有如下定义,设a是A类的一个实例,下列语句调用哪个是错误的?〔CclassA{inti;staticStrings;voidmethod1<>{}staticvoidmethod2<>{}}A、System.out.println<a.i>;B、a.method1<>;C、A.method1<>;D、A.method2<>18、以下关于继承的叙述正确的是〔A.A、在Java中类只允许单一继承B、在Java中一个类只能实现一个接口C、在Java中一个类不能同时继承一个类和实现一个接口D、在Java中接口只允许单一继承19、以下关于抽象类和接口的说法错误的是〔EA、抽象类在Java语言中表示的是一种继承关系,一个类只能使用一次继承.但是一个类却可以实现多个接口.B、在抽象类中可以没有抽象方法C、实现抽象类和接口的类必须实现其中的所有方法,除非它也是抽象类.接口中的方法都不能被实现D、接口中定义的变量默认是publicstaticfinal型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值.E、接口中的方法都必须加上public关键字.4.2填空题1、 在Java语言中所有的类都是直接或间接地继承_Object_____类而得到的.2、在Java中一个父类可以有___多___个子类,一个类只能有__一____个直接父类.3、Java中不能被实例化、只能被子类继承的是____抽象_____类4、当子类中的变量或方法与父类的变量和方法重名时,子类的变量被______隐藏,子类中的方法被______重载.此时,指向父类中的变量或方法,则用______super关键字实现.5、用来定义一个类指定继承父类的关键字是______extends,用来指定接口的继承的关键字是______implements7、在已有类的基础上构造一个新的类,称为类的______继承.4.3简答题1、请举例简要说明JAVA语言的继承机制有何特点?解答:子类可以使用父类中的成员变量和方法,然后也可以添加自己的属性和方法.如果子类没有构造方法,则编译器首先为子类添加一个无参的构造方法,然后调用父类的默认构造方法,如果子类有构造方法,则先调用父类的默认构造方法,再调用子类的构造方法;如果父类中没有默认构造方法,则出错.〔太难2、什么是继承?什么是多重继承和单继承?Java采用何种机制来实现多重继承?解答:继承是面向对象编程的一种特性,是保留原有类功能的前提下拓展或改写部分功能,实现代码复用的方式.单继承就是一个类只可以继承自一个父类,多继承是指一个类可以同时继承多个父类.java中使用的是单继承,也就是一个类有且只能有一个父类,java中可以使用接口实现来实现类似多继承的效果.3、简述super关键字的意义,以及如何使用.解答:关键字super表示父类对象.通过在子类中使用super做前缀可以引用被子类隐藏的父类变量或被子类重写的父类方法.super用来引用当前对象的父类,虽然构造方法不能够继承,但利用super关键字,子类构造方法中也可以调用父类的构造方法.1>操作被隐藏的变量和方法;2>使用super调用父类的构造方法.4、抽象类是什么,抽象方法是什么.解答:抽象类就是不能使用new方法进行实例化的类,即没有具体实例对象的类.抽象类有点类似"模板"的作用,目的是根据其格式来创建和修改新的类.对象不能由抽象类直接创建,只可以通过抽象类派生出新的子类,再由其子类来创建对象.抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和所需的参数,没有方法体,也就是说抽象方法只需要声明而不需要实现.当一个方法为抽象方法时,意味着这个方法必须被子类的方法所重写,否则其子类的方法仍然是abstract的.4、接口是什么,以及它的用处体现在哪几个方面.解答:接口是抽象类的一种,只包含常量和方法的定义,而没有变量和方法的实现,且其方法都是抽象方法.它的用处体现在下面几个方面:1>通过接口实现不相关类的相同行为,而无需考虑这些类之间的关系.2>通过接口指明多个类需要实现的方法.3>通过接口了解对象的交互界面,而无需了解对象所对应的类.5、什么是接口,什么是抽象类,接口和抽象类的区别?解答:抽象类就是不能使用new方法进行实例化的类,即没有具体实例对象的类.抽象类有点类似"模板"的作用,目的是根据其格式来创建和修改新的类.对象不能由抽象类直接创建,只可以通过抽象类派生出新的子类,再由其子类来创建对象.接口是抽象类的一种特殊形式,只包含常量和方法的定义,而没有变量和方法的实现,且其方法都是抽象方法.抽象层次不同,抽象类是对类的抽象,而接口是对行为的抽象.跨域层次不同,抽象类的跨域是具有相似的类,接口可以跨域不同的类.设计层次不同,抽象类是自底向上抽象而来,子类抽象父类接口是自顶向下设计的,无需知道子类.6、接口的用处体现哪几个方面?解答:通过接口实现不相关类的相同行为,而无需考虑这些类之间的关系.通过接口指明多个类需要实现的方法.通过接口了解对象的交互界面,而无需了解对象所对应的类.7、接口与实现类〔具体类关系:解答:多个无关的类可以实现同一个接口.一个类可以实现多个无关的接口.与继承关系类似,接口与实现类之间存在多态性.14、子类与父类的继承关系中,什么是属性隐藏?什么是方法重写?解答:隐藏是指当父类和子类有相同名字的属性的时候,父类的同名变量形式上不可见了.但是实际还是存在的.重写是针对方法的,通常是父类的方法在子类中重新写过.当执行子类的实例得时候,实际运行的是子类的方法.在子类里面可以通过super.method〔来显式的访问.15、子类会继承父类的所有方法和属性么?解答:在同一个包中除private声明外的方法都可以继承.不在同一个包中,只继承protected和public声明的方法.〔太难了16、Java中的方法重写<Overriding>和方法重载<Overloading>分别是什么?解答:Java中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况.与此相对,方法重写是说子类重新定义了父类的方法.子类中重写的方法和父类中被重写的方法必须有相同的方法名,参数列表和返回类型,只是方法体不同.4.4综合题1、写出一个类People,并由该类做基类派生出子类Employee和Teacher.其中People类具有name、age两个保护成员变量,分别为String类型、整型,且具有公有的getAge成员函数,用于返回age变量的值.Employee类具有保护成员变量empno为String类型,Teacher类有teano为String类型和zc成员变量为String类型.解答://People类:publicabstractclassPeople{protectedStringname;protectedintage;publicintgetAge<>{returnage;}}//Employee类:publicclassEmployeeextendsPeople{protectedStringempno;}//Teacher类:publicclassTeacherextendsPeople{protectedStringteano;protectedStringzc;}2、定义一个新的类Student类,继承Person类.要求:1增加"school"属性为String类型.2重载Student类的构造方法,Student<Stringn,Stringl,Stringschool>.3重写Person类的info<>方法,增加school信息.classPerson{ privateStringname; privateStringlocation; Person<Stringname,Stringlocation>{ =name; this.location=location; } publicStringinfo<>{ return"name:"+name+"location:"+location; }}解答:classStudentextendsPerson{ privateStringschool; Student<Stringn,Stringl,Stringschool>{ super<n,l>; this.school=school; } publicStringinfo<>{ return<>+"school:"+school; }}3、定义一个接口,该接口中只有一个抽象方法getClassName<>.设计一个类Horse,该类实现接口ClassName中的方法getClassName<>,功能是获取该类的类名.interfaceClassname{ publicStringgetclassname<>;}classHorseimplementsClassname{ publicStringgetclassname<>{ returnthis.getClass<>.getName<>; }}publicclassTest{ publicstaticvoidmain<String[]args>{ Classnamename=newHorse<>; System.out.println<name.getclassname<>>; }}4、编写一个Java应用程序,该程序中有1个Cat类继承Object类,具有三个成员属性Stringname、intfurColor、intheight,一个构造方法Cat<Stringname,intfurColor,intheight>,并且重写Cat类的toString<>和equals<Objectobj>成员方法.具体要求如下:a> 重写toString成员方法,返回值是成员属性Stringname的值.b> 重写equals成员方法,如果两个Cat对象的furColor和height属性相等那么返回值是true,否则返回值是false.classCat{ intcolor; intheight,weight; publicCat<Stringname,intcolor,intheight,intweight>{ =name; this.color=color; this.height=height; this.weight=weight; } publicStringtoString<>{ return; } publicbooleanequals<Objectobj>{ if<obj==null>returnfalse; else{ if<objinstanceofCat>{ Catc=<Cat>obj; if<c.color==this.color&&c.height==this.height> returntrue; } } returnfalse; }}18.定义一个动物类Animal,具有name成员变量,构造方法和sing<>方法.定义一个Cat类继承Animal类,增添furColor成员变量,重写构造方法和sing<>方法.定义一个Bird类继承Animal类,增添featherColor成员变量,重写构造方法和sing<>方法.在main方法中接收用户的输入"1.Cat2.Bird"创建Cat或者Bird对象,并把该对象的引用赋值给一个Animal引用变量pet,最后调用引用变量pet的方法sing<>,并将结果输出.packagecom.pm.Poly;classAnimal{ privateStringname; Animal<Stringname>{ =name; } publicvoidenjoy<>{ System.out.println<"叫声">; }}classCatextendsAnimal{ privateStringeyesColor; Cat<Stringn,Stringc>{ super<n>; eyesColor=c; } publicvoidenjoy<>{ System.out.println<"猫叫声">; }}classDogextendsAnimal{ privateStringfurColor; Dog<Stringn,Stringc>{ super<n>; furColor=c; } publicvoidenjoy<>{ System.out.println<"狗叫声">; }}classBirdextendsAnimal{ privateStringfeatherColor; Bird<Stringn,Stringf>{ super<n>; featherColor=f; } publicvoidenjoy<>{ System.out.println<"鸟叫声">; }}classLady{ privateStringname; privateAnimalpet; Lady<Stringname,Animalpet>{ =name;this.pet=pet; } publicvoidmyPetEnjoy<>{ pet.enjoy<>; }}publicclassTestPolymoph{ publicstaticvoidmain<String[]args>{ //TODOAuto-generatedmethodstub Ladyl3=newLady<"l3",newBird<"birdname","green">>; l3.myPetEnjoy<>; }}第5章JavaAPI5.1单项选择题2、仔细分析下面程序,正确的输出结果是〔publicclassTest1{ publicstaticvoidchangeStr<Stringstr>{ str="welcome"; } publicstaticvoidmain<String[]args>{ Stringstr="1234"; changeStr<str>; System.out.println<str>; }}A、welcome B、welcome1234C、1234 D、1234welcome解答:C〔太难3、Java语言中的一些常用的实用工具,如处理时间的Date类,处理变长数组的Vector类等,所在的包是〔.A、java.lang包 B、java.io包C、java.awt包 D、java.util包解答:D6、在Java中,所有类的根类是〔.B、java.lang.Class解答:A7、以下用于创建容器对象的类是〔AA、FrameB、CheckboxC、ButtonD、TextField8、在JAVA中,以下〔C类的对象以键-值的方式存储对象A、java.util.ListB、java.util.ArrayListist9、给定如下Java程序代码片段,编译运行这段代码,结果是〔B.java.util.Hashtabletable=newjava.util.Hashtable<>;table.put<"name",null>;table.put<"name","Jack">;System.out.println<table.get<"name">>;A.

null

B.

Jack

C.

nullJack

D.运行时出现异常5.2填空题1、java的___自动垃圾收集机制大大减轻了程序员的负担,不用再编写专门的内存回收程序解决内存分配问题2、Math.random<>可以产生一个在0和1之间的数,请写出产生一个在125与175之间的整数的语句Math.round<125+50*Math.random<>>5.3简答题1、请举例说明string类与StringBuffer类的区别?StringBuffer对象的内容可以修改;而String对象一旦产生后就不可以被修改,重新赋值其实是两个对象.StringBuffer的内部实现方式和String不同,StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类.所以在实际使用时,如果经常需要对一个字符串进行修改,使用StringBuffer要更加适合一些.2、写出下面代码的结果,并简单说明原因publicclassTestString{publicstaticvoidlink<Stringa>{a+="World";}publicstaticvoidmain<String[]args>{Stringa="Hello";link<a>;System.out.println<a>;}}解答:这道题考两个方面:1>.String对象的内容是不能改变的,a+="World"并不是把a所指对象改变,而是先生成一个临时String对象,其值为a+"World",然后在把这个临时对象赋给a.2>.Java中函数参数传递方式为Callbyvalue,link方法中会生产a的一个拷贝,同样指向a所指的对象,综合以上两点,得出结果为Hello5.4综合题1、请编写程序,将下列字符串s="1,2;3,4,5;6,7,8"转为二维实数数组?publicclassArrayParser{ publicstaticvoidmain<String[]args>{ double[][]d; Strings="1,2;3,4,5;6,7,8"; String[]sFirst=s.split<";">; d=newdouble[sFirst.length][]; for<inti=0;i<sFirst.length;i++>{ String[]sSecond=sFirst[i].split<",">; d[i]=newdouble[sSecond.length]; for<intj=0;j<sSecond.length;j++>{ d[i][j]=Double.parseDouble<sSecond[j]>;rintln<sSecond[j]>; } } for<inti=0;i<d.length;i++>{ for<intj=0;j<d[i].length;j++>{ System.out.print<d[i][j]+"">; } System.out.println<>; } }}第6章图形用户界面设计6.1单项选择题1、下列哪一项不是直接或者间接继承了Component类的子类.A、FrameB、PanelC、ButtonD、Menu解答:D2、下列哪一项是一个用于在GridLayout中的特定区域中放置多个组件的容器?A、AppletB、PanelC、ButtonD、Rectangle解答:B3、下列容器类中哪一个是从java.awt.Window继承的?〔A、FrameB、PanelC、ContainerD、Applet解答:A4、下面哪个事件监听器可以处理在文本框中输入回车键的事件______.A.ItemListenerB.ActionListenerC.KeyListenerD.MouseListener解答:B5、Frame类对象的默认布局是什么布局?〔.A、FlowLayout布局 B、BorderLayout布局C、CardLayout布局 D、GridLayout布局解答:B6、Panel类对象的默认布局是什么布局?〔.A、FlowLayout布局 B、BorderLayout布局C、CardLayout布局 D、GridLayout布局解答:A7、下列方法中,不属于WindowListener接口的是<D>.A.windowOpened<>B.windowClosed<>C.windowActivated<>D.mouseDragged<>8、JAVA中,容器被重新设置后,哪种布局管理器的容器中的组件大小不随容器大小的变化而改变〔B〔ACardLayout〔BFlowLayout〔CBorderLayout〔DGridLayout6.2填空题1、Java中GUI工具包有__java.awt____和__java.Swing____.2、通过调用方法__setLayout____可以改变当前容器的布局方式.3、通过__add____方法向容器中添加组件.4、AWT布局管理器有______、______、______、______和______.5、图形用户界面的设计中有事件处理模型处理事件,在该模型中主要包括事件源、事件对象和________事件监听器6、_______BorderLayout布局管理器包括五个明显的区域:东、南、西、北、中.6.3简答题1、请举例简要说明JAVA语言使用事件监听器进行事件处理的过程.首先事件监听器〔包含真正处理事件的代码向事件源〔与事件关联的控件,如按钮、滚动条注册,事件〔敲击键盘,或点击鼠标发生时,事件源向事件监听器发送一个事件对象〔如果在该事件源上注册了多个事件监听器,则向所有的监听器发送1对于某种类型的事件XXXEvent,要想接收并处理这类事件,必须定义相应的事件监听器类,该类需要实现与该事件相对应的接口XXXListener;2事件源实例化以后,必须进行授权,注册该类事件的监听器,使用addXXXListener<XXXListener>方法来注册监听器.2、什么是布局管理器?解答:Java语言中,提供了布局管理器〔LayoutManager这个工具来管理组件在容器中的布局,如:排列顺序,组件的大小、位置,当窗口移动或调整大小后组件如何变化等,而不使用直接设置组件位置和大小的方式.每个容器都有一个布局管理器,不同的布局管理器使用不同算法和策略,当容器需要对某个组件进行定位或判断其大小尺寸时,就会调用其对应的布局管理器.容器可以通过选择不同的布局管理器来决定布局.3、JAVA的事件处理模型主要涉及到哪3类对象,简单介绍其内容.解答:事件:用户对界面操作在java语言上的描述,以类的形式出现,例如键盘操作对应的事件类是KeyEvent.事件源:事件发生的场所,通常就是各个组件,例如按钮Button.事件处理者:接收事件对象并对其进行处理的对象.4、简述JAVA的组件Component类和容器Container类.解答:Java的图形用户界面的最基本组成部分是组件〔Component,组件是一个以图形化的方式显示在屏幕上并能与用户进行交互的对象,例如一个按钮,一个标签等.组件不能独立地显示出来,必须将组件放在一定的容器中才可以显示出来.容器java.awt.Container也是一个类,实际上是Component的子类,因此容器本身也是一个组件,具有组件的所有性质,但是它的主要功能是容纳其它组件和容器.一个容器可以容纳多个组件,并使它们成为一个整体.容器可以简化图形化界面的设计,以整体结构来布置界

温馨提示

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

评论

0/150

提交评论