您好,欢迎访问三七文档
第一章习题及思考题1、Java程序是由什么组成的?一个程序中必须有public类吗?Java源文件的命名规则是怎样的?2、怎样区分应用程序和小应用程序?应用程序的主类和小应用程序的主类必须用public修饰吗?3、开发与运行Java程序需要经过哪些主要步骤和过程?4、安装JDK之后如何设置JDK系统的PATH,CLASSPATH?他们的作用是什么?5、Java语言特点是什么?6、简述面向过程问题求解和面向对象问题求解的异同。试列举出面向对象和面向过程的编程语言各两种。第二章习题及思考题1.试分析基本数据类型和引用数据类型的基本特点?2.请使用异或运算符^,实现两个整数的交换。3.下列哪个是合法的标识符:()。A、a=bB、_HelloC、2ndD、Chongqing4.下列哪些是合法的标识符()。A、newB、classC、intD、const25.如果定义有变量doubled1,d2=4.0则下列说法正确的是:A、变量d1,d2均初始化为4.0B、变量d1没有初始化,d2初始化为4.0C、变量d1,d2均未初始化D、变量d2没有初始化,d1初始化为4.06.判断题:所有的变量在使用前都必须进行初始化。()7.内部数据类型byte的取值范围是:()A、0~65,535B、(-128)~127C、(-32,768)~32,767D、(-256)~2558.下列哪些是不能通过编译的语句:()A、inti=32;B、floatf=45.0;C、doubled=45.0;D、chara=‘c’;9.判断题:Java中数据类型的长度与具体使用的机器相关。()10.如果定义有doublex;floaty;intm,则表达式x*y-m的类型为():A、doubleB、floatC、intD、short11.如果定义有shorts;byteb;charc,则表达式s*b+c的类型为():A、charB、shortC、intD、byte12.已知inti=2147483647;++i;则i的值等于多少()A-2147483648B2147483647C214748364813.已知bytei=127;++i;则i的值等于多少()A-128B127C12814.已知bytei=127;i=i+1;这两行语句能否编译成功?()15.执行以下程序段inta=5,b;b=++a*3后b的值为:()A、17B、18C、16D、1516.如果x=3,y=5,则表达式x|y的值为:()A、15B、8C、1D、717.如果inta=3,b=2,则执行a*=b+8后a的值为:()A、20B、14C、30D、1618.若所用变量都已正确定义,以下选项中,非法的表达式是:()A、a!=4||b==1B、'a'%3C、'a'=1/2D、'A'+3219.设有定义语句inta[]={1,1,2};则以下对此语句的叙述错误的是()。A、定义了一个名为a的一维数组B、a数组有3个元素C、a数组的下标为1~3D、数组中的每个元素是整型20.以下数组初始化形式正确的是:()A、intt1[][]={{1,2},{3,4},{5,6}}B、intt2[][]={1,2,3,4,5,6}C、intt3[3][2]={1,2,3,4,5,6}D、intt4[][];t4={1,2,3,4,5,6}第三章习题及思考题1、编写一个程序,用选择法对数组a[]={20,10,55,40,30,70,60,80,90,100}进行从大到小的排序2、求两个整数的最大公约数3、请打印出如下九九乘法表*|123456789-------|------------------------------------1|12|243|3694|4812165|5101520256|612182430367|71421283542498|8162432404856649|918273645546372814、求一元二次方程ax2+bx+c=0的根,要求a、b、c从控制台输入。5、求前40个Fibonacci数列。Fibonacci数列:1,1,2,3,5,8,13,21,34,…从数列看到:F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)6、已知公鸡5元1只,母鸡3元一只,小鸡1元3只,要求用100元刚好买100只鸡,问有多少种采购方案。7、判断一个字符串是否是回文,例如“rotor“反转之后还是”rotor“,所以是回文。需查阅String类的一些方法。8、求2-1000内的所有素数9、在一个循环中使用break,continue和return有什么不同?10、结构化程序设计有哪三种流程?他们分别对应Java中那些语句第四章习题及思考题1.什么是类?什么是对象?对象和类是什么关系?2、什么是方法?方法的结构是怎样的?设计方法应考虑哪些因素?3.创建一个有两个方法的类,其中第一个方法两次调用第二个方法,第一次不使用this,第二个使用this。4、创建一个类,该类还有int和char类型的成员变量且未被初始化,然后编程输出这些成员变量的值,查看java是否执行了默认的初始化操作。5、创建一个类,该类含有的成员变量和成员方法,创建一个该类的对象,察看当时图访问这些成员时,编译程序会给出那些信息(注意:在同一目录下的类都属于一个默认的包)。6、下面给出了一个矩形类Rectangle,其中含有多个构造方法。上机编译并运行此程序,观察运行结果,体会其中不同构造方法的设计和使用。importjava.io.*;classRectangle//矩形类{privateintwidth;//矩形的宽度privateintlength;//矩形的长度Rectangle()//矩形的不带参数的构造函数,缺省的给出长(30)和宽(20){length=30;width=20;}Rectangle(intl,intw)//矩形的带参数的构造函数{length=l;width=w;}Rectangle(Rectangler)//此构造方法以另一个Rectangle作为参数{width=r.width();//通过对象调用函数并附值给相应变量length=r.length();}intwidth()//返回宽度{returnwidth;}intlength()//返回长度{returnlength;}}publicclassCRctngle{publicstaticvoidmain(Stringargs[]){Rectanglex1=newRectangle();//声明类的对象并实例化Rectanglex2=newRectangle(50,40);//声明类的对象并初始化Rectanglex3=newRectangle(x1);System.out.println(x1.length());System.out.println(x1.width());System.out.println(x2.length());System.out.println(x2.width());System.out.println(x3.length());System.out.println(x3.width());}}运行结果:3020504030207、下面给出了一个计算阶乘的类Fact和使用该类计算阶乘的程序Check1。编译并运行该程序,观察运行结果,体会方法的参数的传递和返回值的用法。在调用时改变参数的个数和类型,看看编译时会得到什么信息。classFact{floatfact(intn)//定义计算n!的方法{inti;floatx=1;for(i=1;in;i++)x=x*n;returnx;}}publicclassCheck1{publicstaticvoidmain(Stringargs[]){Factx=newFact();System.out.println(x.fact(10));//计算10!System.out.println(x.fact(15));//计算15!}}运行结果:1.0E92.91929271E168、编译并运行下面的程序,观察分析运行结果,体会程序中super和this的用法,进一步理解变量隐藏和方法重写的概念。importjava.io.*;classSuperClss//定义父类{intx;SuperClss()//父类的构造方法{x=10;}voiddoClss(){System.out.println(SuperClss.doClass());}}classSubClssextendsSuperClss//定义子类{intx;SubClss()//子类的构造方法{super();//调用父类的构造方法x=100;}voiddoClss()//重写父类的doClss方法{System.out.println(SubClss.doClss());}voiddoDemo()//演示super和this的方法{intx;x=1000;super.doClss();//调用父类的doClss方法doClss();//调用本类的doClss方法System.out.println(super.x=+super.x);//父类的xSystem.out.println(this.x=+this.x);//本类的xSystem.out.println(x=+x);//本方法的x}}publicclassSuperDemo{publicstaticvoidmain(Stringargs[])//主方法{SubClsss=newSubClss();s.doDemo();}}运行结果:SuperClss.doClass()SubClss.doClss()super.x=10this.x=100x=10009、编译并运行下面的程序,分析运行结果,体会其中方法重载的用法,进一步理解方法重载的概念。classFather//本类中的speak方法重载了两次{voidspeak()//无参数的speak方法{System.out.println(″IamFather!″);}voidspeak(Strings)//有参数的speak方法{System.out.println(″Ilike″+″″+s+″.″);}}publicclassOverLoadingDemo{publicstaticvoidmain(Stringargs[]){Fatherx=newFather();x.speak();//调用无参的speak方法x.speak(″music″)//调用有参的speak方法}}运行结果:IamFather!Ilikemusic.第五章习题及思考题1、什么是继承?什么是父类?什么是子类?继承的特性可给面向对象编程带来什么好处?什么是单重继承?什么是多重继承?2、“子类的域和方法的数目一定大于等于父类的域和方法的数目”,这种说法是否正确?为什么?3、什么是方法的覆盖?方法的覆盖与域的隐藏有何不同?与方法的重载有何不同?4、什么是多态?面向对象程序设计为什么要引人多态的特性?使用多态有什么优点?5、父类对象与子类对象相互转化的条件是什么?如何实现它们的相互转化?6、什么是包?它的作用是什么?7、CLASSPATH是有关什么的环境变量?它如何影响程序的运行?如何设置和修改这个环境变量?8、一个类如何实现接口?实现某接口的类是否一定要重载该接口中的所有抽象方法?9、为某研究所编写一个通用程序,用来计算每一种交通工具运行1000公里所需的时间,已知每种交通工具的参数都是3个整数A、B、C的表达式。现有两种工具:Car007和Plane,其中Car007的速度运算公式为:A*B/C,Plane的速度运算公式为:A+B+C。需要编写三类:ComputeTime.java,Plane.java,Car007.java和接口Common.java,要求在未来如果增加第3种交通工具的时候,不必修改以前
本文标题:第一章习题及思考题
链接地址:https://www.777doc.com/doc-2202207 .html