Java面向对象程序设计实验与练习Word文档格式.docx
《Java面向对象程序设计实验与练习Word文档格式.docx》由会员分享,可在线阅读,更多相关《Java面向对象程序设计实验与练习Word文档格式.docx(41页珍藏版)》请在冰豆网上搜索。
1.Can’tfindclassHelloWorldApp
系统找不到名为HelloWorldApp的类文件,一般地,该错误意味着类名拼写和原文件名不一样,系统创建filename.java文件时使用的是类名,并且区分大小写
2.InclassHelloWorldApp:
mainmustbepublicandstatic
main左边缺少public和static
3.文件中含有的类个数错误
按java规则,在一个原文件中最多只能有一个public类,否则会发生运行时错误,如果一个文件中有多个公有类,则要把它们各自放到不同的文件中,文件中非公有类的个数不限。
4.层次错误
package语句import语句和类的定义一定要按顺序出现。
实验一及综合练习一Java简单程序设计
实验准备:
熟悉集成环境2006的使用。
1、启动JBuilder2006。
2、创建默认工程和设置:
如果窗口中有打开默认程序,请先执行File—CloseProjects—All—OK.
新建工程的方法:
例如工程名为选菜单File---NewProject---Name中填入工程名字(可以自己按照文件名命名规则取一个如:
a1),Directory:
选择一个存放练习的文件夹如e:
\jiangyi\example---finish。
其它默认,不需要改动。
3、加入.java文件:
File---Newclass---Name:
给原文件取名假设为MyFirstApp,其它默认。
进入程序编辑界面,发觉已经建立了一个简单java文件,删除除第一行package以外的已经自动写入的原来的内容;
(输入相应原文件MyFirstApp.java的内容)。
4、选择Run菜单---configration---选择其中的运行配置—remove—此时可以使用默认配置运行了,找到工程窗口,右键单击工程窗口的MyFirstApp选runusingwithdefault可以运行程序(JB2006自动将原程序编译为与平台无关的字节码.class文件)
或者Buildtarget:
make—RunType:
Application—Mainclass—Browse--选择Application含有main文件的文件名—OK--用JBuilder的运行按钮(F9)就可以了.
输出结果在Message窗口,如果出现红色错误提示,则修改后再运行。
请观察一下e:
\jiangyi\example目录,可看到其中有一个a1文件夹,a1中的src原文件夹和一个classes输出.class文件夹。
如果要再编辑一个新的Java程序,重复DEF步骤,将相应的MyFirstApp改为相应新名称即可。
一、选择题
1.Javac是Java的(B)
A.解释器B.编译器C.小程序浏览器D.调试器
2.main方法是JavaApplication程序执行的入口点,关于main方法头以下(B)是合法的。
A.publicstaticvoidmain()B.publicstaticvoidmain(Stringargs[])
C.publicstaticintmain(String[]args)D.publicvoidmain(String[]args)
3.在Java中,一个类可同时定义许多同名的方法,这些方法的形式参数的个数、类型或顺序各不相同,传回的值也可以不相同。
这种面向对象程序特性称为(C)
A.隐藏B.覆盖C.重载D.Java中不支持此特性
4.不允许作为类及类成员的访问控制符的是(C)
A.publicB.privateC.staticD.protected
5.下面(C)不是面向对象编程的3个原则。
A.抽象B.封装C.继承D.多态
6.当在Java想引用包时,一般会使用(C)语句。
A.javacB.javadocC.importD.extend
二、填空题
1.Java具有的特点:
简单的、面向对象的、分布式的、健壮的、体系结构中立的、安全的、可移植的、解释的、高性能的、多线程的、动态的语言
2.开发与运行Java程序需要经过的三个主要步骤为编译源程序、编译生成字节码、解释运行字节码。
3.根据程序构成和运行环境不同,Java源程序分为两类:
JavaApplication程序、JavaApplet程序。
4.一个复杂的系统必然包括有多个对象,这些对象间可能存在的关系有三种:
包含、继承、关联
5.Java程序的工作机制是:
将Java程序源代码被译成字节码之后,交由Java运行环境(JRE)解释执行。
6.Java支持三种类型的注释分别是:
多行执行注释、单行注释、文档注释
7.类是指一个类(class)定义了将被一个对象集共享的结构和行为(数据和代码)。
8.包是指.由多个与某种特定用途相关的类组合而成,因此,可以将包理解成一个包含许多类的类库。
三、判断题
1.编译后的Java程序可以直接执行。
(×
)
2.在Java程序中,通过类和接口的定义都能实现多重继承。
3.如果一个Java源程序文件中定义有4个类,则使用Sun公司的JDK编译器javac编译该源程序文件,将产生4个文件名与类名相同而扩展名为.class的字节码文件。
(√)
四、程序设计题
1.编写一个JavaApplet,使之能够在浏览器中显示”WelcomtoJavaAppletWorld!
”的字符串信息。
importjava.awt.graphics;
importjava.applet.Applet;
pub;
icclassMyJavaZYAppletextendsApplent
{
publicvoid(Graphicsg)
{
g.drawString(“WelcometoJavaAppletWord!
”,10,20)
}
2.编程在屏幕上输出下面三行,并在JBuilder中调试运行:
ACupofHotJava!
ILikeHotJava!
:
)
IWillStudyJava!
实验二及综合练习二Java输入输出及基本语法
1.设a=8,则表达式a>
>
2的值是(B)
A.1B.2C.3D.4
2.设x=1,y=2,z=3,则表达式y+=z--/++x的值是(A)
A.3B.3.5C.4D.5
3.设x=2,则表达式(x++)/3的值是(B)2/3为0.67用整形表示是0;
A.1B.0C.2D.0.67
4.Java中的字符类型采用的是Unicode编码方案,每个Unicode码占用(B)个比特位。
A.8B.16C.32D.64
5.若a的值为3时,下面程序段被执行后,c的值是(C)
c=1
if(a>
0)
if(a>
3)
c=2;
else
c=3;
else
c=4;
A.1B.2C.3D.4
6.Java定义了4个整数类型:
字节型(byte)、短整型(int)、长整型(long)其中int占用的内存为(C)
A.8bitB.16bitC.32bitD.64bit
7.Java浮点类型分为单精度浮点型(float)及双精度浮点型(double),其中float占用的内存为(C)
A.8bitB.16bitC.32bitD.64bit
8.字符类型中有一类特殊的字符叫转义字符,可用这些转义字符控制输出,下面(B)是换行字符。
A.\rB.\nC.\tD.\b
9.同优先级的运算符号在运算的时候按照结合性进行运算,Java语言的结合性分成两种,左结合和右结合,下面(B、C)运算符是右结合。
A.<
<
B.!
=C.=(赋值)D.%
10.System包含三个预定义的流变量,下面(D)不是预定义的流变量。
A.inB.outC.errD.int
1.若x=5,y=10,则X<
y和x>
=y的逻辑值分别为true和false。
2.在Java的基本数据类型中,char型采用Unicode编码方案,每个Unicode码占用2字节内存空间,这样,无论是中文字符还是英文字符,都是占用2字节内存空间。
3.设x=2则表达式(++x)*3的值是9。
4.若x=5,y=10,则x>
y&
&
x++==y--的逻辑值为false。
5.若需要PhoneCard200类中声明变量additoryFee为浮点型双精度型的静态域并初始化其值为0.1,则应在类PhoneCard200的定义中加入一条域定义语句为:
staticdoubleadditoryFee=0.1;
6.顺序执行以下两条语句的结果为:
4。
Stringstr=”中山大学”;
System.out.println(str.length());
7.字符串分成两大类:
一类是字符串常量,使用String类的对象表示;
另一类是字符串变量,使用StringBuffer类的对象表示。
8.假设x、y都是float型,分别等于5和7,而x1,y1则是double型,分别等于5.0和7.0,那么x/y和x1/y1的值相等吗?
b(a.相等b.不相等)
说明理由:
5/7将产生无限不循环小数,而float与douboe两种数据类型的精度不同,因此产生不相等的输出值。
10.在Java语言中,或运算符号是||。
11.在Java语言中变量分为四种,分别是局部变量、类变量、方法参数变量、异常处理参数变量。
12.在Java中共有8种基本数据类型:
字节型、字符型、短整型、整型、长整型、浮点型、双精度型、布尔型。
13.在控制台输入取字符串,使用BufferedReader中的readLine()方法。
1.左移运算是每左移一次,就相当于该值除以2,并且舍弃了余数,可以利用这个特点将一个整数进行快速的2的除法。
2.关系表达式的类型总是boolean型。
(√)
3.在Java中真值和假值可以用0和非0不用一个或多个关系运算符。
(×
)
4.在逻辑AND的运算中,如果第一个运算数A为真,则不管第二个运算数是真或假,其运算结果为真。
5.a++b++(a、b是浮点型)是合法的Java语言表达式。
(×
1.编写一个字符界面的JavaApplication程序,接受用户输入的10个整数,比较并输出其中的最大值和最小值。
importjava.io.*;
publicclassClass1
{publicstaticvoidmain(String[]args)
{inti,j,max,min;
intx[]=newint[10];
Strngs;
try{
System.out.print(”请输入十个整数:
for(j=0;
j<
10;
j++)
Bufferedreaderbr=newBufferedreader(newInputStreamReader(System.in));
s=br.readLine();
x[j]=Integer.parseInt(s);
}catch(IOExpectione){}
max=min=x[10];
for(i=1;
i<
i++)
{if(max<
x[i])max=x[i];
if(min>
x[i])min=x[i];
System.out.println(“十个数中最大的是:
”+max);
System.out.println(“十个数中最小的是:
”+min);
2.编写一个字符界面的JavaApplication,接受用户从键盘输入的一个正整数,然后统计输出从1到这个正整数的累加和。
publicclassSUM
publicstaticvoidmain(String[]args)
{intn=-1,sum=0;
while(n<
1)
try{
n=Integer.parseInt(br.readLine());
catch(IOExpectione){}
=n;
sum+=i;
System.out.println(sum);
实验三与综合练习三控制语句与构造函数
1.编译运行以下程序后,关于输出结果的说明正确的是(C)
publicclassConditionl
{publicstaticvoidmain(Stringargs[])
{intx=4;
System.out.println(“Valueis”+((x>
4)?
99.9:
9));
}}//遵循精确度最高的输出原则
A.输出结果为:
Valueis99.99B.输出结果为:
Valueis9
C.输出结果为Valueis9.0D.编译错误
2.编译并运行以下程序,以下描述(C)选项是正确的。
1.classX
2.{protectedStringtoString()
3.{returnsuper.toString();
4.}
A.编译通过运行无异常B.编译通过但运行时出错
C.行2出错不能编译成功D.不能成功编译,行3出错
3.运行以下程序段后,变量t1的值是(C)
publicstaticvoidexchange(intx,inty)
{inttemp=x;
X=y;
Y=temp;
}
publicstaticvoidmain(Stringargs[])
{intt1=2;
intt2=3;
exchange(t1,t2);
A.5B.4C.2D.7
4.运行以下程序段,变量t2的值是(D)
publicstaticvoidexchange(intx,inty)
A.5B.4C.2D.3
5.下面变量var的作用域范围是(C)
1.//…
2.intx;
3.switch(x){
4.case0
5.{
6.intvar;
7.//process
8.}
9.break;
10.case1:
11.{
12.intvar1;
13.//process
14.}
15.break;
16.}
A.1和16行之间B.4和8行之间C.6和8行之间D.6和14行之间
6.以下关于构造函数的描述正确的是(ABC)
A.构造函数的方法名和类名相同
B.构造函数没有返回值
C.构造函数的主要作用是完成对类对象的初始化
D.构造函数可以由编程人员显示地直接调用
7.在循环语句中,当进入一个死循环时,可以按键盘的组合键(B)终止运行,可以达到程序被强行终止。
A.Ctrl+QB.Ctrl+CC.Ctrl+EscD.Ctrl+C
8.下面(A)语句可以用来退出循环,而循环提早退出当前循环进入下一轮是(B)
A.breakB.continueC.returnD.switch
1.抽象方法是仅有方法头,没有具体方法体和操作实现的方法,该方法必须在抽象类之中定义,最终方法是不能被当前类的子类重新定义的方法。
2.Java语言类体内的方法有方法头和方法体组成,其定义的一般格式为:
[public|private|protected][static][final][abstract][native][synchronized]
返回值类型方法名([形式参数表])[throws异常列表]{方法体语句}。
3.Java中的循环控制语句有for语句、while语句、do-while语句三种基本形式。
4.Java中选择控制语句有switch语句、if语句两种基本形式。
5.在闰年的判断中满足(a)能被4整除,但不能被100整除;
(b)能被4整除,又能被100整除。
试用一个表达式来表达:
(year%4==0&
year%100!
=0)||(year%4==0&
year%100==0)。
6.While循环语句中一般包括:
初始化部分、循环体部分、迭代部分、终止部分四部分。
7.do—while循环的基本结构:
{初始化部分}
do
{
循环体;
[]
}while();
1.有的类定义时可以不定义构造函数,所以构造函数不是必需的。
(×
2.当一个方法在运行时产生一个异常,则这个方法会终止,但是整个程序不一定终止运行。
(√)
3.判断下列各个循环结构是否合法:
(1)(不合法i没有初始化)
while(inti<
7)
{i++;
System.out.println(“iis“+i);
(2)(不合法)
intj=3;
while(j)
System.out.println(“jis“+j);
(3)(合法)
intj=0;
for(intk=0;
j+k!
=10;
j++,k++)
{
System.out.println(“jis“+”kis”+k);
(4)(不合法)
intj=0;
System.out.println(“jis“+j++);
if(j==3)
continueloop;
}while(j<
10);
4.在Java语言中控制结构分为顺序、分支、循环三种,而流程控制分为两种:
一种是判断选择,另一种是循环。
5.嵌套if语句中的一个else语句一定是它在同一个块中的最近的if语句,不会有其它情况出现。
6.在Java程序设计语言中,“方法和函数”是与类分不开的,每一个方法必定属于某一个类。
(√)
7.在Java的参数传递机制中参数传递有两种方式:
按值传递和按引用传递,其中按引用传递不会改变传递参数的值。
1.编程序计算1/1+1/2+1/3+……+1/100的值
publicclassSum
publicstaticvoidmain(String[]args)
doublesum=0.0;
for(inti=1;
=100;
sum+=1.0/(double)i;
System.out.println(“sum=”+sum);
2.不用递归的方法,写出计算阶乘n的函数。
publicclassRet
publicstaticintfact(intn);
{intret=n;
n;
ret=ret*i;
returnret;
3.比较两个数的大小(分别为10000.11、1999.33)并按从按从大到小输出。
Publicclassanswer3
publicstaticvoidmain(Stringargs[])
doubled1=10000.11;
doubled2=2004.33;
if(d1<
=d2)
System.out.println(d2+”>
=”+d1);
else
System..outprintln(d1+”>
=”+d2);
实验四与综合练习四数组
一.选择题
1.写出程序段运行之后array数组的值(B)
publicstaticvoidamethod(int[]a)
For(inti=0;
a.length;
A[i]=a[a.length/2+i];
a[0]=a[1]=2;
}a[1]=a[2]=3;
}a[2]=a[3]=a[2]=3
//mainmethod
Publicsataticvoidmain(stringargs[])
//arraydefinition
Int[]array=int[3];
Array[0]=1