Java程序设计项目教程(第二版)答案_第1页
Java程序设计项目教程(第二版)答案_第2页
Java程序设计项目教程(第二版)答案_第3页
Java程序设计项目教程(第二版)答案_第4页
Java程序设计项目教程(第二版)答案_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

项目1

一、思考题

1.Java程序有几种版本,分别是什么?

Java有三种版本,分别是J2ME、J2SE、J2EE

2.Java程序有何特点?

Java语言的特点如下:

①面向对象:支持代码继承及重用,是完全面向对象的,它不支持类似C语言那样的面

向过程的程序设计技术。

②解释执行:Java解释器(运行系统)能直接运行目标代码有令。

③平台无关:Java源程序被编译成一种高层次的与机器无关的Byte-codes格式语言,被设

计在Java虚拟机上运行。

©多线程:Java提供的多线程功能使得在一个程序里可同时执行多个小任务。多线程带来

的好处是可以有更好的交互性能和实时控制性能。

⑤健壮性:Java致力于检查程序在编译和运行时的错误,类型检查帮助检查出许多开发早

期出现的错误。

3.什么是JVM,为什么需要JVM?

JVM即Java虚拟机,是一台可以存在于不同的真实的软、假件环境下的虚拟的计算机,其

功能是将字节码解释为真实平台能执行的指令。Java正是通过虚拟机JVV技术,实现了与平台

无关,实现“编写一次,到处运行”。因此,任何平台只要安装相应的Java虚拟机环境,就能

运行Java程序。

4.如何理解Java程序的基本结构?

①语句packagepl;是建立•一人包(文件夹),生成的类文件将存放于包中。

②程序第一行publicclass类名}是一个类定义语句。public关键字指明类的访问方式为

公有,也就是在整个程序内都可以访问到它。如果将类定义为public,则类其名称必须与主文件名

一致,并口大小写敏感。

③类后大括号内可以定义类的成员和方法,对于一个可■执行的Java类,main方法是必

需的,而且该main方法必须是公有(public)、静态(stalic)和没有返回值(void)的,同时它只能带一

个字符串型(StringU)的参数。

©程序的一行“〃……”是注释,只说明不运行。

⑤每个命令语句结束,必须以结尾。

二、编程

1.编写一Java应用程序,要求在屏幕上输出字符串“HappyNewYear!”。

classPracl

publiestaticvoidmain(Stringargs[])

(

System,printIn("H叩pyNewYear!");

)

)

2.编写一个简单的Java程序,在屏幕上输出如下图形:

*********

classBirdimplementsCanFlypublicvoidfly0(

System,out.priming鸟需借助翅膀飞上了天空。;)

classTest

(publicstaticvoidmain(Stringargs[])(Planep=newPlaneo;

Birdb=ncwBird();p.fly0;b.fly0;)

}项目4一、选择题

I.关于异常的定义,下列描述中最正确的一个是(D)。

A)程序编译错误B)程序语法错误

C)程序自定义的异常事件D)程序编译或运行时发生的异常事件

2.抛出异常时,应该使用的子句是(A)。

A)(hrowB)catchC)finallyD)throws

3.自定义异常类时,可以继承的类是(C)。

A)ErrorB)AppletC)Excepiion及其子类D)AssertionError

4.当方法产生异常但却无法确定该如何处理时,应采用的方法是(C)。

A)声明异常B)捕获异常C)抛出异常D)自定义异常

5.对于try(…)catch子句的排列方式,正确的一项是(A)。

A)子类异常在前,父类异常在后B)父类异常在前,子类异常在后

C)只能有子类异常D)父类异常与子类异常不能同时出现

6.下列关于try、catch和finally的表述,错误的是(C)。

A)(ry语句块后必须紧跟catch语句块B)catch语句块必须紧跟在try语句块后

C)可以有try但无catchD)可以有try但无finally

7.下列描述中,错误的一项是(A).

A)一个程序抛出异常,其他任何运行中的程序都可以捕获

B)算术溢出需要进行异常处理

C)在方法中检测到错误但不知如何处理时,方法就声明异常

I))任何没有被程序捕获的异常最终被默认处理程序处理

8.下面程序运行时,会产生的异常是(C)o

classTcst(

publicstaticvoidmain(Stringarf])(intx=O,y二20,z;

z=(x+y)/(x*y);

System,out.printin("z="+z);

)B)NumberFormatException

D)NulIPointerException

A)

ArraylndexOutOfBoundsExceptionAnB)NumberFormatException

C)thMelicExceplion二、填空题

D)NulIPointerException

1.一个try代

码段后必须跟calch代码段,finally代码段可以没有。

2.自定义异常类必须继承£2^国皿类或其子类。

3.异常处理机制可以允许根据具体的情况选择在何处处理异常’,可以在当前方法中捕获并

处理,也可以用throws子句把它交给调用方法去处理。

4.数组卜标越界对应的类是ArrayIndexOutOfBoundsException。

5.为达到高效运行的要求,运行时产生一的异常,可以直接交给Java虚拟机系统来处理,

而Exception类派生出的非运行异常,要求编写程序捕获或者声明,

三、编程题

1.从键盘输入5个数,求出5个数的阶乘之和。若输入负数时,产生异常并进行相应的处理。

importjavax.swing.*;classExceptionExam{

publicstaticvoidmain(Stringargs[])

inti,sum=0,j;for(i=0;i<5;i++)j=l;int

x=lnteger.parselnt(JOptionPane.showlnputDialog(null,"input:"));try(

if(x<0)thrownewException();fbr(intk=l;k<=x;k++)j=j*k;sum=sum4j;

}catch(Exccptionc){

System.out.printlnf输入了一个负数,请重新输入!i-;))System.out.printlnf

阶乘和为:"+sum);

2.设计自己的异常类,从键盘输入-♦个数,若输入的数不小于0,则输出它的平方根。若小于

0,则输出提示信息“输入错误”。(求平方根的方法为:Math.sqrl(inlx))importjavax.swing.*;class

MyExceptionextendsException{

staticinti=3;

MyException()

(supero产生异常!”);

))classExceptionTest(

publicstaticvoidmain(Stringargsfl)

{intx=intcgcr.parsclnt(JOptionPanc.showlnputDialog(nuIl,''input:"));try(

if(x<0)thrownewMyException();System.oul.prinUn("输入数的平方根

为:"+Math.sqrt(x));}catch(MyExccptione){

System.out.println(e.getMessage());(〃异常编号为:"+e.i);}

}}项目5—、选择题

1.下面属于容器类的是(A)

A.JFrameB.JTcxtFicldC.ColorD.JMenu

2.FlowLayout的布局策略是(A)

A.按添加的顺序由左至右将组件排列在容器中。

B.按设定的行数和列数以网格的形式排列组件。

C.将窗口划分成五部分,在这五个区域中添加组件。

D.组件相互叠加排列在容器中。

3.BorderLayout的布局策略是(C)

A.按添加的顺序由左至右将组件排列在容器中o

B.按设定的行数和列数以网格的形式排列组件。

C.将窗口划分成五部分,在这五个区域中添加组件。

D.组件相互叠加排列在容器中。

4.GridLayout的布局策略是(B)

A.按添加的顺序由左至右将组件排列在容器中。

B.按设定的行数和列数以网格的形式排列组件。

C.将窗口划分成五部分,在这五个区域中添加组件。

D.组件相互叠加排列在容器中。

5.JFrame中内容窗格缺省的布局管理器是(B)

A.FlowLayoutB.BordcrLayoutC.GridLayoutD.CardLayout

6.监听事件和处理事件(B)

A.都由Listener完成B.都由相应事件Listener处注册的构件完成

C.由Listener和构件分别完成D.由Lislener和窗口分别完成

7.在下列事件处理机制中不是机制中的角色的是(A)

A.事件B.事件源C.事件接口D.事件处理者

A.当有事件发生时,应该使用this监听器

8.ciddActionListener(this)方法中的this参数表示的意思是(B)

&街曲事伸傀施用其他事他用this监听器B.(his对象类会处理此事件

90.下列关于Component的方法中,错误的是(A)

(tot南能优nT其他事件D.只是一种形式

11.下列关于Component的方法中,错误的是(A)

A.getName()用于获得组件的名字B.getSize()用于获得组件的大小

C.setColor()用于设置前景颜色D.setVisible()设置组件是否可

10.当窗口关闭时,会触发的事件是(C)

D.Mous^氏翅胞啤陛题ItemEventC.WindowEvent

I.AWT的用户界加组件库被更稳定、通用、灵活的库取代,该库称为swing.

2.布局管理器用于安排容器上的GUI组件。

3.设置容器布局管理器的方法是selLayoulO0

4.当释放鼠标按键时,将产生mouseRelease事件。

5.Java为那些声明了多个方法的Listener接口提供了一个对应的固谖,在该类中实现了

对应接I1的所有方法。

6.ActionEvent事件的监听接II是ActionListener,注册方法名是addActionListener(),事

件处理方法名是_DublicvoidactionDerfonned,。

7.图形用户界面通过』住响应用户和程序的交互,产生事件的组件称为一坐住遮。

8.Java的Swing包中定义菜单的类是JMenu三、编程题

1.设计如图所示样式的图形用户界面(不要求实现功能)。

当前时间:厂时冒厂分忏"秒I闹钟时间:时~分「1秒

闹钟设置王I兰Iimportjavax.swing.*;cIassDemopubIicDemoO

JLabelbl=newJLabclC当前时间:〃);

JLabclb2=newJLabelC时”);

JLabelb3=newJLabel("分”);

JLabelb4=newJLabel(“秒”);

JLabelb5二new比abelC闹钟时间:”);

JLabclb6=newjGhel(〃时〃):

JLabelb7=newJLabelC分“);b8=new

JLabelJLabelC秒“);b9=newJLabel("

JLabel闹钟设置”).jTcxtFicld("8",3);

JTextFicl?Tcxt^iclS^,57,,,3);JTextField(,,59,\

JTexlFi叫);j忌牌fd(3);JTextField(3);

JText!例1rex臃瞰);

JTextFieldt4=ne\v

J'lexthieldt5=ne\v

@同祖讲出也也受g陶&图6映后0KAm此且岫^^单©羽能触理g创隼轴由爆玄邸阚蝴i仲#i说之颂'rame

}

publicstaticvoidinain(Stringarg[])(newDemo();

)

)

2.编写一个将华氏温度转换为摄氏温度的程序。其中一个文木框愉入华氏温度,另一个文

本框显示转换后的摄氏温度,一个按钮完成温度的转换。使用下面的公式进行温度转换:摄氏温

度=5/9x(华氏温度-32)。

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

classDemoimplementsAction!.istener

(JLabclbl,b2;

TJcxtFicId

publicDemo()

(bl=newJLabelC华氏温度:;b2=newJLabelC摄氏温度:");tl=newJ(6);

t2=newJTextField(6)JButtonbtl=ncwJButlon(/转换”);JFramewin=new

JFrameO;win.setLayout(newFlowLayoutO);

win.add(bl);win.add(tl);win.add(b2);win.add(t2);

win.add(bll);btl.addActionListcncr(this);win.sctSize(160,120);win.setVisiblc(truc);

)

publicvoidactionPerformed(Ac(ionEven(e)

{t2.setText(""+5.0/9*(Float.parseFloat(t1.getText())-32));

)

publicstaticvoidmain(Slringarg[])

{newDemoO;

)

)

3,设计一个界面如图。当点击“确认”按钮后,使“开始考试”按钮可用,并使“学号”、

“姓名”后的文本框及“确认”按钮不可用。点击“开始考试”按钮后,使“下一题”按钮可用,

同时设置“开始考试”按钮不可用。

.c,s考汰系

importjava,awl.*;

importjava.awt.event.*;

importjavax.swing.*;

classTestPanelextendsJPanelimplementsActionListener

(JButtonstartButton;JLabeltimeLabel;JTextAreaquestionArea;

JRadioButtonradioButton口二newJRadioButton[5]:〃五个单选按钮,目的是设置前四个答

案选项都不选中,而第五个选项选中,但第五个按钮设置为不可见ButtonGroup

buttonGroup二newButtonGroupO;JButtonanswerBLitton;JButtonqucstionButton;

JButtonscorcButton;publicTestPaine1()

(sctl.ciyout(newBorderUiyout());JPanelnorthPcinel=newJPaneK);northPanel.

setLayout(newGridLayout(2,1));startButton=newJButton(〃开始考试“);startButtDn.

addActionListener(this):timeLabel=newJLabelC考试剩余时间”);northPanel.

add(startButton);northPanel.add(timcLabel);

add(northPanel,BorderLayout.NORTH);questionArea=newJTextArea(30,10);

questionArea.setLineWrap(true);questionArea.setWrapSty1eWord(true);questionArea.

setFont(newFontC幼圆〃,Font.PLAIN,16));intvScroll=ScrolIPaneConstants.

VERTICALSCROLLBARASNEEDED:inthScrolI=ScroIlPaneCons(ants.

HORlZOXrAL_SCROLLBAR_NEVER;add(new

JScrollPane(questionArea,vScroll,hScroll),BorderLayout.CENTER);JPanelsouthPancl=ncw

JPanel();JPanelradioPanel=newJPanel();〃放5个单选按钮的面板Strings[]=

〃,〃〃};for(inti=0;i<radioButton.length;i++)(

radioBultonli]=ne\vJRadioButton(sli],false);buttonGroup.add(radioButton[i]);

radioPaneLaddiradioButton[i]);}

radioButton[radioButton.length-1].setVisible(false);单选按钮不可见〃第五个

answerButton=newJButton(,,提交答案”):answerButton.setEnabled(false);

answcrButton.addActionListcncr(this);qucstionButton=ncwJButton('?卜一题”);qucstionButton.

setEnabled(false);questionButton.addActionListener(this);scoreButton二newJButton("成绩〃);

scoreButton.setEnabled(false);scoreButlon.addActionListener(this);southPcinel.add(radioPanel);

southPanel.add(answerButton);southPane].add(questionButton);southPanel.add(scoieButton);add

(southPcinel,BorderLayout.SOUTH);}

publicvoidactionPerfdrmed(ActionEventc){if(e.getSource()==startButton)(

questionButton.setEnabled(true):

startBullon.setEnabled(false);

)}

classMyFrameextendsJFramcimplementsActionListencr

(

JBultonstartButton;

JLabelxh,xm;

JTcxtFieldxhl,xml;

JButtonok;TestPanellp=newTestPanelO:

MyFrame()

(

JPanclp=newJPanclO;xh=newJLabel(*学号:");xm=ncwJLabelC姓名:");xhl=new

JTcxtFicld(lO):xml=newJTextField(10):ok=newJButtonC确认”):p.add(xh):p.add(xhl):

p.add(xm);p.add(xml);p.add(ok);add(p,BorderLayout.NORTH);add(tp);ok.

addActionListener(this);setSize(400,300);setVisible(true);

JpublicvoidactionPerformed(Ac(ionEven(e)(tp.startButton.setEnabled(true);

xhl.setEnabled(false);xml.setEnabledJ'alse);ok.setEnabled(false);

}publicstaticvoidmain(Stringar[])(newMyFrameO;}

)项目6—、选择题

1.以下类中,具有绘图能力的类是(B)。

A)ImageB)GraphicsC)FontD)Color

2.Graphics类中提供的绘图方法分为两类:一类是绘制图形,另一类是绘制(B)。

A)屏幕B)文本C)颜色D)图像

3.下列方法中不属于Graphics类的显示文本的方法是(D)。

A)drawBytesB)drawCharsC)drawStringD)drawLine

4.下面的程序实现了在窗口中绘制一个以(70,70)为圆心,50为半径,边框是绿色的圆,圆

心是红色的。应填入的语句行是(B)。

classexamextendsFrame

(

publicvoi(1paint(Graphicsg)

(g.setColor(Color,green);g.drawOval(20,20,100,100);g.setColor(Color,red);

1

1

A)drawRect(70,70,I,l);B)g.drawRect(70,70,1,1);

C)g.drawLine(70,70,L1);D)g.drawOval(70,70,70,70);

5.在窗体的坐标(50,50)处以红色显示“红色文字”,填入的正确语句是(C)。

classexamextendsFrame

(publicvoidpaint(Graphicsg)

g.drawString(»红色文字”,50,50);

)

A)g.se(Color(Color.Red);B)se(Color(Color,red);

C)g.setColor(Color,red);D)setcolor(Color,red);

6.下列方法中不能完成画直线的方法是(D)。

A)drawPolylineB)drawRectC)drawLineD)drawChars二、填空题

1.paint。方法的参数是Graphics类的实例。

2.drawRect(intxl.intyl,intx2,inty2)中,x2和y2分别代表矩形的宽度、高度b

3.如果在(60,80)处画一个点,通过drawOva1方法实现,则该方法中的参数应为(60.80.1.1)。

4.如果画圆角矩形,drawRect方法中的参数应为。个,其中后两个参数的作用是o

5.如果设定输出在某个组件上的文本的字体,用的方法是setFontO.该方法中的参数应是_

Font类的对象。

6.以下程序输出的是。

classexamextendsFrame

(publicvoidpaint(Graphicsg)

{g.setColor(Color,green);g.drawRect(20,20,1,30);)

)三、编程题

1.编写程序,蓝色输出26个大写字母,随机彩色输出26个小写字母。

importjava.awt.*;publicclassExercise61extendsFrame(

publicExercise4_3_l()

(setSize(600,200);setVisibIe(true);

i

publicvoidpaint(Graphicsg)

(chars[]=newchar(26];inti;g.setColor(Co!or.blue);

for(i=0;i<26;i++)s[i]=(char)('A'+i);

classPrac2

publicstaticvoidmain(Stringargs[])

System,out.printing*");

System,out.printing****");

System,out.printing1*****");®02-、选择题

1.数组中可以包含什么类型的元素?(D)

A.int型B.String型C.数组D.以上都可以

A.Arr.length()B.Arr.length

2.Java中定义数组名为An■,下面哪项可以得到数组元素的个数?(B)

A.Arr.lcngth()B.Arr.lengthC.Arr(xyz)D.Arr(xyz)

3.下面哪条语句定义了3个元素的数组?(A)

A.int[]a={20,30,40);

B.inta[]=newint(3);

C.int[3]array;

D.int[]arr;

4.下面的代码段中,执行之后i和j的值是(B)。

inti=10;

intj;

j=i++;

A.10,10B.II,IOC.10,HI).11,11-编程

1.试编与一个程序,输入三条边长值,并判断这三条边长能小能构成三角形,如果能,能构

成什么样的三角形(一般、等边、等腰)。

importjava.util.*;

classPracticcl{

publicstaticvoidmainfStringargs[])(Scanners=ncwScanncr(Systcm.in);int

a,b,c;a=s.nextlnt();b=s.nextlnt();

c=s.nextlnt();if(a+b>c&&a+c>b&&b+c>a)if(a==b&&a=c)System.out.print("构成的三角

形为等边三角形。〃);elseif(a==b||a==c||b==c)

Systcm.out.print("构成的ZS角形为等腰三角形。");else

for(i=0;i<26;i4-+)g.drawChars(s,i,l,20+i*20,50);for(i=0;i<26;i++)s[i]=(char)(s[i]+32);

floatx,y,z;for(i=0;i<26;i++){x=(float)Math.random();y=(float)Math.random();

z=(noat)Math.random();Colorc=new

Color(x,y,z);g.setColor(c);g.drawChars(s,i,l,20+i*20,100);

}

)

publicstaticvoidmain(String[]args)

{newExcrcise4_3_l();

))

2.定义显示字符数组的方法drawChars(),将字符串中第1、3、5体中,要…个字符显示在窗

求显示字体为:宋体、斜体、大小30点。

importjava.awt.*;publicclassExcrcise62extendsFramc(

Strings(r=,'abcdefgh";

charc[]=str.toCharAnay();

publicExcrcisc4_3_2()

(setSize(300,200);setVisible(true);

i

publicvoidpaint(Graphicsg)

{inti;Fontf;f=newFont(“宋体〃,Font.ITALIC,30);

g.sctFont(f);for(i=0;i<c.Icngth;i=i+2)g.drawChars(c,i,l,10+i*20,60);

]

publicstaticvoidmain(Stringsargs)ncwExcrcise4_3_2();项目7

一、选择题

1.下列数据流中,属于输入流的是(B)。

A)从内存流向硬盘的数据流B)从键盘流向内存的数据流

C)从键盘流向显示器的数据流D)从网络流向显示器的数据流

2.Java语言中提供输入输出流的包是(I))。

A)java,sqIB)java,util

C)java,mathD)java,io

3.不是沁包中的接口的一项是(A)o

A)DatalnputR)DataOutput

C)DataInputStreamD)Objeclinput

4.下列流中那一个使用了缓冲区技术?(A)。

A)BufferedOutputStreamB)FilelnputStream

C)DataOutputS(reamD)FileReader

5.下列说法中,错误的是(B)。

A)FileReader类提供将字节转换为Unicode字符的方法

B)InputStrcamReader提供将字节转化为Unicode字符的方法

C)FileReader对象可以作为BufferedReader类的构造方法的参数

I))[nputStreamReader对象可以作为BufferedReader类的构造方法的参数

6.下列哪个方法返回的是文件的绝对路径?(B)。

A)getCanonicalPath()B)getAbsokitePath()

C)getCanonicalFile()D)getAbsoluteFile

7.下列程序建立一个myFileldat文件,并且允许按照不同的数据类型向里面写入数据,选

择正确的一项填入程序中的横线处9)0

importjava.io.*;

publicclassTesti(

publicstaticvoidmain(Stringa[])(try(FileOu(putSlreamfos=new

FileO.itputStream(',myFilel.daf,);}

catch(Exccptione)(e.printStrace();)

}

}

A)OutpulStreamos二newOuiputStream(fos);

B)DataOutputStrcamdos=ncwDataOutputStrcam();

C)Da(aOu(putStreamdos=ncwDataOutputStream(fos):

D)FilcOutputStrcamfos=ncwFilcOutputStrcam(fos);

8.下列说法错误的是(D)。

A)Java的标准输入对象为System,in

B)打开一个文件时不可能产生lOException

C)使用File对象可以判断一个文件是否存在

D)使用File对象可以判断一个目录是否存在二、填空题

1.按照流的方向来分,I/O流包括输入流和输出流。

2.流是一个流动的数据缓冲区,数据从数据是流向数据口数地°

3.FilelnputStream实现对磁盘文件的读取操作,在读双字符的时候,它一般与和

InDutSlreamReaderBufferedReader一起使用。

4.向DaiaOulpulSlream对象dos的当前位置写入一个保存在变量d中的浮点数的方法是dos,

iteFloat(d)。

5.使用BufferedOutputStreani输出时,数据首先写入缓冲区,直到写满才将数据写入输出

Mo

三、编程题

1.程序在运行过程中产生数组形式的数据如下:{2.23,4.67,6.54,2.22,

1.45,64},编程将数据存储到文件中去,以备后面再读入进行处理。imporljava.io.*;

classPracticel(publicstaticvoidmain(Stringa||){try(

FilcOutputStrcamfos=newFileOutputStrcam(ze:\\l\\a.txt");

DataOutputStreaindos:newDataOutputStream(fos);

doublearr[]={2.23,4.67,6.54,2.22,1.45,5.64);

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

dos.writeDouble(arr[i]);

)

catch(Exceptionc)(

e.printStackTrace();

)

)

}

2.利用输入输出流编程实现籽文件a2.ixl中的文本内容以可打的形式复制到文件a3.(xl

中去。

importjava.io.*;

importjava.io.*;

classPractice2

{publicstaticvoidmain(Stringargsl|)throvvsiOException(try(

FileReaderfr=newFileReader("a2.txt");Fi1eWriterfw=newFi1eWriter(-2a3.txtw);int

n;

while((n=fr.read())!=-l)(fw.write(n);)fr.close();

fw.close0;}caich(Excepiionc)(}}

)项目8—、选择题

1.JDBC是面向(B)的。

A.过程B.对象

C.用户D.应用

2.JDBCAPI主要都定义在下列哪个包中?(A)

A.java,sqlB.java,io

C.java,awtD.java,util

3.若要查询数据库的信息可以使用以下哪个方法?(D)

A.Connection类的getMetaDalaO方法B.DriverManager类的gctConncction()方法

C.Connexion类的createStaiemenl方法D.SlaiemenL类的ExecuteQuery()方法

4.Stalement类的execuleQuery()方法返I用的数据类型是(D)。

A.Statement类的对象B.Connection类的对象

C.DcitcibaseMetaDat类的对象D.ResuItSet类的对象

5.下列哪项不是gelConneclion()方法的参数?(C)

A.数据库用户名B.数据库的访问密码

C.JDBC驱动器的版本D.连接数据库的URL二、填空题

1.Java使用JDBC作为数据库的访问机制。

2.支持JDBC的数据库很好的实现了跨数据库平台的无去性。

3.JDBC驱动程序负责将应用程序中基于类和接口的Java方法转换为多种关系数据库能

够理解的命令。

4.查询数据库的标准步骤是:加载驱动程序类,定义连接的URL.生成连接对象,建立

Statement对象,执行查询,处理结果,关闭连接。

5.指向数据库的URL中一般包含:班溟和数据源o

7.JDBCDriverManager是连接数据库中的一个负责管理JDBC驱动程序的个块。

三、编程题

I.查询Sludeni数据库中的学生信息表Slulnfo,按年龄从低到高顺序愉出各行数据.

importjava,sql.*;

classQueryDemo(publicstaticvoidmain(String[]args)throwsException(Connectioncon二

null;

Class.forName("com.mysql.jdbe.Driver");〃加载MySQL驱动类String

connectionURL--jdbc:mysql://l27.0.0.l:3306/Student";con=DriverManager.

getConnection(connectionURL,"root",“123”);Statementstat=con.createStatement

();〃建立执行sql语句的容器Stringquery=〃select*fromStulnfoorderby年

龄〃;

Resul(Setrs=sta(.executeQuery(query);〃执行查询数据库的语句System,oul.

printin("Stulnfo用户表中的内容”);

System,out.printin(,,学号\t\t姓名\t性别\t年龄\t身高\t家庭住址〃);while(rs.

next())(

intxh=rs.getlnt产学号”);

Stringxm=rs.getString-姓名");

Stringxb=rs.getSlring("性别〃);

intnl=rs.getlnt(“年龄");floatsg=rs.getFloat(*身高”);

Stringzhuzhi=rs.getString("家庭住址”);

System,out.printin(xh+”\t”+xm+”\T'+xb+”\t”+nl+”\t"+sg+“\t”

+zhuzhi);)

2.对Student数据库中的学生信息表Stulnfo插入数据行,插入如下记录:(学号:20060307,

姓名:吴祥雷,性别:男,年龄:16,身高:1.73,家庭住址:王集镇大王村,电话:再以表格形

式输出表中数据。

importjava.sql.*;importjava.awt.*:importjavax.swing.*;importjava.util.*;

classPractice?extendsJFrame)

publicstaticfinalStringDBDRIVER="com.mysql.jdbc.Driver";

publicstaticfinalStringDBURL=,jdhc:mysql://:3306/Studcnt";

publicstaticfinalStringDBUSER="root";

publicstaticfinalStringDBPASS="123";

privateResultSetresultSet;

privateResultSetMetaDatarsmd:

privateJButtonsubmilQuery;

privateJTabletable;

VectorcolumnHeads;

VectorcuirentRowzVectorrows;

publicstaticvoidmain(Stringargs。)throwsException!〃所有的异常抛;Connectionconn=

null;//数据库连接Statementstmt=null;//数据库操作Class.forName(DBDRIVER);

conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS);stmt=

conn.createStatemenlO;//实例化Statement对象intid=20060307;Stringname=〃吴祥

云田”•,

Stringsex="男";intage=167;floatheight=1.7368f;Stringadress="王集镇大王村”;

Stringsql="inscrtintoStulnfovalucs(',+id+"z',+name+,,7"

+sex+T'+age+”,''+height+”,”』adress+〈'”+phone+”')“;

stmt.executeUpdate(sql);stmt.close();conn.close();

Practicc2p=ncwPracticc2();p.showData();

)

publicvoidshowData()

(

try(Class.forName("com.mysql.jdbc.Driver");"加载MYSQLJDBC驱动程序Stringconstr=

"jdbc:mysql://localhost:3306/Student";Connec(ionconnection=

DriverManager.getConnectionfconstr/'root"/'123");columnHeacs=newVector();rows=new

Vector();Stringquery="SELECT*FROMstuinfo";

Statementstatement=connection.createStatement();resultSet=

statemcnt.executeQucryCquery);rsmd=resultSct.getMctaDataf);for(inti=1;i<=

rsmd.gctColumnCountO;iii)columnlleads.addElcmcnt(rsmd.gctColumnNamc(i));

while(resuItSet.nextO)(

currentRow=newVector();for(inti=1;i<=rsnid.getColumnCount();++i)

currentRow.addElement(resultSet.getString(i));rows.addElement(currentRow);)

)catch(Exceptionsqlex){sqlex.printStackTrace();)

tabic=newJTablc(rows,columnHeads);

JScrollPanescroller=newJScrollPaneftable);

add(scroller);

setSize(500z200);

setVisible(true);

}}项目9

一、选择题

1.一个java程序运行后,在系统中作为一个(B)。

A)线程B)进程

C)进程或线程D)不可预知

2.设已编好了一个线程类MyThroad,要在main()中启动该线程,需使用的方法是(B)。

A)newMyThread

B)MyThreadmyThread=newMyThread();myThread.start。;

C)MyThreadmyThread=newMyThrcad();myThread.run():

D)newMyThread.start();

3.处于激活状态的线程可■能不是当前正在执行的线程,原因是(B)。

A)为当前唯一运行的线程B)线程被挂起

。线程被继续执行D)通知线程某些条件二、填空题

1.线程的创建方式是继承T是cad类和。

2.线程生命周期的五种状态为:创建、可运行运行中、瓜塞、和死亡o

3.一个线程对象的具体操作是由runO方法的内容确定的,但是Thread类的该方法是空的,

其中没有内容,所以用户程序要么派生一个Thread的子类并在子类里重新定义此方法,要么使-

个类实现Runnable接口并书写该方法的方法体。

4.当一个线程睡眠时,sleep。方法不消耗CEU时间。

三、编程题

1.设计4个线程对象,两个线程执行减操作,两个线程执行和操作。

publicclassThreadiest1{

privateintj;

publicstaticvoidmain(Stringargs[]){

ThreadTestItt=newThreadTestl();

Incinc=u.iicwInc();

Decdcc=t(.newDec();

foriinti=0;iv2;i++){

Threadt=newThread(inc);

LstartO;

t=ncwThrcad(dcc);

t.start();

);

privatesynchronizedvoidinc(){

j++;

Systcni.out.piintln(Thrcad.currcntThicad().gctNanic()+"-inc:"+j);

privatesynchronizedvoiddcc(){

j-;

System.out.println(Thrcad.currcntThrcad().gctNameO+''-dcc:"+j);

)

classIncimplementsRunnable{

publicvoidrun()(

for(in(i=0;i<IOO;i++)(

inc();classDecimplementsRunnable(publicvoidrun(){foninti=0;i<100;i++)(dec();

1

)

2.设计一个生产电脑和搬运电脑类,要求生产一台电脑就搬走一台电脑,如果没有新的电脑

生产出来,则搬运工要等待新电脑产出;如果生产出的电脑没有搬走,则要等待电脑搬走之后再

生产,并统计出生产的电脑的数量,

classInfo{〃定义信息类privateStringname="生产者”;//定义name属性privateStringcontent

="制造机器”;〃定义content属性privatebooleanflag=false;//设置标志位

publicsynchronizedvoidsct(Stringname,String

content){if(!flag)(try{super.wait();)catch(InterruptedExceptionc){

e.priniStackTrace();)}this.setNanie(name);//设置名称

try{Thread.sleep(300);}catch(In(crruptcdExccptionc){e.printS(ackTrace();}

this.setConteni(contenl);"设置内容flag=false;〃改变标志位,表示可以取走

supcr.notifyO;publicsynchronizedvoidget(){iftflag){

lry{super.wait();)catch(IntcrruptedExceptionc){c.printStackTracc();}

}try{Thread.sIeep(300);}catch(In(erruptedExceplione){

e.printStackTrace();

}Systeni.out.println(this.getName()+"—>"+this.getContcntO);

flag=irue;〃改变标志位,表示可以生产supcr.notifyO;}publicvoid

setName(Stringname)(=name;)

publicvoidsctContcnt(Stringcontent){this.content=content;(publicString

getName(){return;}

publicStringgetContent()(returnthis.content;}1classProducerimplements

Runnable{//通过Runnable实现多线程privateInfoinfo=null;//保存Info

引用

publicProducedInfoinfo)(=info;}publicvoidrun(){booleanflag=false;//

定义标记位

for(inti=0;iv50;i++){if(flag)(.setC生产者",“制造机器");//设置名称

flag=false;)else{

消费者“,“取走机器”);〃设置名称flag=true;classConsumer

implementsRunnable{privateInfoinfb=null;publicConsumedInfb

infd)(=info;)

publicvoidrun(){for(inti=0;i<50;i++){.gei(

温馨提示

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

最新文档

评论

0/150

提交评论