当前位置:文档之家› Java复习题(已完成)

Java复习题(已完成)

Java复习题(已完成)
Java复习题(已完成)

一.阅读分析下面程序,将程序中的代码补充完整,并回答问题。

1.// FirstApplet.java

import java.applet.*;

import java.awt.*;

public class FirstApplet extends Applet

{

public void paint(Graphics g)

{

【代码:g.setColor(Color.blue);】//将当前字体颜色设置为蓝色

g.drawString("这是一个Java Applet 程序",10,30);

//在Java Applet中绘制一行文字:“这是一个Java Applet 程序”

【代码:g.setColor(Color.red);】 //将当前字体颜色设置为红色

g.setFont(new Font("宋体",Font.BOLD,36));

【代码:g.drawString(“我改变了字体”,10,100);】//在Java Applet中坐标(10,100)处绘制一行文字:“我改变了字体”

}

}

(1)将源文件保持为FirstApplet.java,编译源文件。编译命令:【代码javac FirstApplet】

(2)编写一个html文件FirstApplet.html,将该文件和源程序保持在同一目录下。文件内容如

下:

(3)若用appletviewer打开FirstApplet.html文件。

运行命令为:【代码appletviewer FirstApplet】

2. 要求:从键盘输入任意两个实数,比较两个数字的大小,将较大的数输出。数据输入和输出用Java的标准输入流和输出流来实现。阅读分析下面程序,将程序中的代码补充完整,实现数据比较功能。

import java.util.Scanner;

publicclass CompareTwoNumbers {

double number1,number2;

Scanner scanner;

public CompareTwoNumbers(){

System.out.println("请输入两个数字:");

scanner=new Scanner(代码1:system.in);//实例化一个Scanner对象;

number1=代码2 :scanner.nextDouble();//从键盘输入一个实数赋值给number1; number2=代码3 :scanner.nextDouble();;// 从键盘输入一个实数赋值给number2; System.out.println("较大的数值是:"+代码4 :Math.max(number1,number2)); //将number1和number2中的较大值输出;

}

publicstaticvoid main(String args[]){

CompareTwoNumbers ct=new CompareTwoNumbers ();

System.exit(0);

}

}

3.猜数字游戏

阅读分析下面程序,将程序中的代码补充完整,编辑运行查看结果。

//GuessNumber.java

import javax.swing.JOptionPane;

public class GuessNumber

{

public static void main (String args[ ])

{

System.out.println("给你一个1至100之间的整数,请猜测这个数"); int realNumber=(int)(Math.random()*100)+1;

int yourGuess=0;

String str=JOptionPane.showInputDialog("输入您的猜测:"); yourGuess=Integer.parseInt(str);

while(【代码1 : yourGuess != realNumber】) //循环条件

{

if(【代码2 : yourGuess > realNumber】) //条件代码

{

str=JOptionPane.showInputDialog("猜大了,再输入你的猜测:");

yourGuess=Integer.parseInt(str);

}

else if(【代码3 : yourGuess < realNumber】) //条件代码

{

str=JOptionPane.showInputDialog("猜小了,再输入你的猜测:");

yourGuess=Integer.parseInt(str);

}

}

System.out.println("猜对了!");

}

}

4.String类的常用方法。

阅读分析下面程序,把程序中的代码补充完整,并查看结果。

//StringExample.java

class StringExample

{ public static void main(String args[])

{ String s1=new String("you are a student"),

s2=new String("how are you");

if(【代码1 :s1.equals(s2)】) // 使用equals方法判断s1与s2是否相同 {

System.out.println("s1与s2相同");

}

else

{

System.out.println("s1与s2不相同");

}

String s3=new String("22030219851022024");

if(【代码2 :s3.startWith(“220302”)】) //判断s3的前缀是否是“220302”。 {

System.out.println("吉林省的身份证");

}

String s4=new String("你"),

s5=new String("我");

if(【代码3 :https://www.doczj.com/doc/e04042866.html,pareTo(s5) > 0】)//按着字典序s4大于s5的表达式。

{

System.out.println("按字典序s4大于s5");

}

else

{

System.out.println("按字典序s4小于s5");

}

int position=0;

String path="c:\\java\\jsp\\A.java";

String fileName=【代码4 :path.concat(“A.java”);】//获取path中“A.java”子字符串。

System.out.println("c:\\java\\jsp\\A.java中含有的文件

名:"+fileName);

String s6=new String("100"),

s7=new String("123.678");

int n1=【代码5 :Integer.parseInt(s6);】 //将s6转化成int型数据。 double n2=【代码6 :Double.parseDouble(s7);】 //将s7转化成double

型数据。

double m=n1+n2;

System.out.println(m);

String s8=【代码7 :String.valueOf(m);】 //String调用valuOf(int n)方法将m转化为字符串对象

position=s8.indexOf(".");

String temp=s8.substring(position+1);

System.out.println("数字"+m+"有"+temp.length()+"位小数") ;

String s9=new String("ABCDEF");

char a[]=【代码8 :s9.toCharArray();】 //将s9存放到数组a中。

for(int i=a.length-1;i>=0;i--)

{

System.out.print(" "+a[i]);

}

}

}

5.掌握嵌套类和内部类的概念和用法

编写一个程序要求定义一个外部类Outer,然后在Outer类中定义一个内部类Inner

和局部类Local,内部类Inner和局部类Local的任务都是显示出外部类中的数组

元素,然后求出这些数组元素的平均值。

请按模版要求,将代码补充完整。

class Outer {

privateint data[];

Outer(int x[]) {

data = x;

}

void checkInner() {

Inner innerObj = new Inner();

【补充代码 : innerObj.show();】// 调用Inner对象的show()方法

System.out.println("内部类计算的平均值: " +

innerObj.average());

}

void checkLocal() {

class Local {

void show() {

System.out.print("从局部类显示数组元素:");

for (int i = 0; i

System.out.print(data[i] + " ");

}

System.out.println();

}

int average() {

int sum = 0;

for (int i = 1; i

sum += data[i];

}

【补充代码return (sum/data.length);】// 返回data 数组的平均值

}

}

Local localObj = new Local();

localObj.show();

System.out.println("局部类计算的平均值: " +

localObj.average());

class Inner {

void show() {

System.out.print("从内部类显示数组元素:");

for (int i = 0; i

【补充代码system.out.print(“ “ + data[i]);】// 打印data数组的每个元素

}

System.out.println();

}

int average() {

int sum = 0;

for (int i = 1; i

sum += data[i];

}

return sum / data.length;

}

}

}

publicclass InnerClassTest {

publicstaticvoid main(String[] args) {

int a[] = { 6, 8, 9, 22, 34, 7, 2, 1, 15 };

Outer outerObj = new Outer(a);

outerObj.checkInner();

【补充代码outerObj.checkLocal();】// 调用outerObj对象的checkLocal方法

}

}

6.通过一个简单的例子理解多态的概念

/**

* 人民警察

*/

publicinterface IPolice {

/**

* 抓小偷

*/

publicvoid catchThief();

}

/**

* 一个警察,执行抓小偷任务.

publicclass PoliceReal implements IPolice {

publicvoid catchThief() {

System.out.println("抓住小偷了");

}

}

/**

* 另一个警察,也执行抓小偷任务.

*/

publicclass PoliceHyp implements IPolice {

publicvoid catchThief() {

System.out.println("大冷天的抓什么小偷啊,不如偷个菜."); }

}

/**

* 市民

*/

publicclass Citizen {

private String mName;

public Citizen(String name) {

mName = name;

}

/**

* 市民报案

*/

publicvoid report(IPolice police) {

System.out.println(String.format("市民%s丢失手机,向警察报案抓小偷.", mName));

police.catchThief();

}

}

案情:

市民虽然向警察报了案,

但你不知道能不能把小偷抓住,

甚至你都不知道他们有没有去抓小偷,

还有可能你在电影里看到的剧情真的发生了...

事情经过可能是这样:

publicclass Main {

publicstaticvoid main(String[] args) {

Citizen citizen = new Citizen("张三");

IPolice police = getPolice();

citizen.report(police);

privatestatic IPolice getPolice() {

returnnew PoliceReal();

}

}

事情结果一:

市民张三丢失手机,向警察报案抓小偷.

抓住小偷了

事情经过也可能是这样:

publicclass Main {

publicstaticvoid main(String[] args) {

Citizen citizen = new Citizen("张三");

IPolice police = getPolice();

citizen.report(police);

}

privatestatic IPolice getPolice() {

returnnew PoliceHyp();

}

}

事情结果二:

市民张三丢失手机,向警察报案抓小偷.

大冷天的抓什么小偷啊,不如偷个菜.

事情经过还可能是这样:

publicclass Main {

publicstaticvoid main(String[] args) {

Citizen citizen = new Citizen("张三");

IPolice police = getPolice();

citizen.report(police);

}

privatestatic IPolice getPolice() {

returnnew PoliceReal() {

@Override

publicvoid catchThief() {

System.out.println("抓小偷?笑话,抓了小偷我哪儿收保护费去啊.");

}

};

}

}

事情结果三:

市民张三丢失手机,向警察报案抓小偷.

抓小偷?笑话,抓了小偷我哪儿收保护费去啊.

7.阅读并分析以下程序,将程序中的代码补充完整。

public class CalendarFrame extends Frame implements ActionListener

{ Label labelDay[]=new Label[42];

Button titleName[]=new Button[7];

String name[]={"日","一","二","三", "四","五","六"};

Button nextMonth,previousMonth;

int year=2006,month=10;

CalendarBean calendar;

Label showMessage=new Label("",Label.CENTER);

public CalendarFrame()

{ Panel pCenter=new Panel();

【代码1 :pCenter.setLayout(new GridLayout(7,7));】//将pCenter的布局设置为7行7列的GridLayout 布局。

for(int i=0;i<7;i++)

{ titleName[i]=new Button(name[i]);

【代码2 : pCenter.add(titleName[i]);】//pCenter添加组件titleName[i]。

}

for(int i=0;i<42;i++)

{

labelDay[i]=new Label("",Label.CENTER);

【代码3 : pCenter.add(labelDay[i]);】//pCenter添加组件labelDay[i]。

}

calendar=new CalendarBean();

calendar.setYear(year);

calendar.setMonth(month);

String day[]=calendar.getCalendar();

for(int i=0;i<42;i++)

{ labelDay[i].setText(day[i]);

}

nextMonth=new Button("下月");

previousMonth=new Button("上月");

nextMonth.addActionListener(this);

previousMonth.addActionListener(this);

Panel pNorth=new Panel(),

pSouth=new Panel();

pNorth.add(previousMonth);

pNorth.add(nextMonth);

pSouth.add(showMessage);

showMessage.setText("日历:"+calendar.getYear()+"年"+ calendar.getMonth()+"

月" );

ScrollPane scrollPane=new ScrollPane();

scrollPane.add(pCenter);

【代码4 :add(“Center”,scollPane);】// 窗口添加scrollPane在中心区域

【代码5 :add(“North”,pNorth);】// 窗口添加pNorth 在北面区域

【代码6 :add(“South”,pSouth);】// 窗口添加pSouth 在南区域。

}

public void actionPerformed(ActionEvent e)

{ if(e.getSource()==nextMonth)

{ month=month+1;

if(month>12)

month=1;

calendar.setMonth(month);

String day[]=calendar.getCalendar();

for(int i=0;i<42;i++)

{ labelDay[i].setText(day[i]);

}

}

else if(e.getSource()==previousMonth)

{ month=month-1;

if(month<1)

month=12;

calendar.setMonth(month);

String day[]=calendar.getCalendar();

for(int i=0;i<42;i++)

{ labelDay[i].setText(day[i]);

}

}

showMessage.setText("日历:"+calendar.getYear()+"年"+calendar.getMonth()+"月" );

}

}

8.使用滚动条改变背景颜色

程序功能:移动滚动条可以改变背景颜色。阅读并分析以下程序,将程序中的代码补充完整。

publicclass KY7_2 extends Applet implements AdjustmentListener { Scrollbar r1, r2, r3;

int red, green, blue;

TextField t;

Label a;

publicvoid init() {

setLayout(null);

r1 = new Scrollbar(Scrollbar.HORIZONTAL, 0, 1, 0, 255);

r2 = new Scrollbar(Scrollbar.HORIZONTAL, 0, 1, 0, 255);

r3 = new Scrollbar(Scrollbar.HORIZONTAL, 0, 1, 0, 255);

t = new TextField("0", 5);

t.setEditable(false);

a = new Label("移动滚动条可改变背景颜色", Label.CENTER);

add(a);

a.setBounds(120, 10, 150, 15);

代码1 :add(r1);//添加滚动条r1

r1.setBounds(20, 30, 100, 20);

代码2 :add(r2);//添加滚动条r2

r2.setBounds(140, 30, 100, 20);

代码3 :add(r3);//添加滚动条r3

r3.setBounds(260, 30, 100, 20);

add(t);

t.setBounds(20, 120, 220, 18);

r1.addAdjustmentListener(this);

代码4 :r2.addAdjustmentListener(this);

代码5 :r3.addAdjustmentListener(this);

}

publicvoid adjustmentValueChanged(AdjustmentEvent e) {

red = r1.getValue();

代码6 :green = r2.getValue();

代码7 :blue =r3.getValue();

t.setText("red 的值"+ String.valueOf(r1.getValue()) + ",green 的值" + String.valueOf(r2.getValue()) + ",blue 的值"

+ String.valueOf(r3.getValue()));

Color c = new Color(red, green, blue);

代码8 :setBackground(c);//设置背景色

}

}

9.创建电闪雷鸣的动画

程序功能:本程序可以通过按钮控制声音和动画的开始和停止操作。动画显示了电闪雷鸣的场面。注意:图像文件要分别表现不同时间段的电闪场面,这样才会有动画效果。

阅读并分析以下程序,将程序中的代码补充完整。

import java.awt.*;

import java.applet.*;

import java.awt.event.*;

publicclass KY7_3extends Applet implements Runnable, ActionListener { Image iImages[]; // 图像数组

Thread aThread;

int iFrame; // 图像数组下标

AudioClip au; // 定义一个声音对象

Button b1, b2;

publicvoid init() {

int i, j;

iFrame = 0;

aThread = null;

iImages = new Image[10];

for (i = 0; i < 10; i++) {

iImages[i] = getImage(getCodeBase(), "images/"+ "tu"+ (i + 1)+ ".JPG");

}

au = getAudioClip(getDocumentBase(), "Wav/receivemedia.au");

代码1 :au.play();// 播放一次声音文件

Panel p1 = new Panel();

b1 = new Button("开始");

b2 = new Button("停止");

p1.add(b1);

p1.add(b2);

b1.addActionListener(this);

b2.addActionListener(this);

setLayout(new BorderLayout());

add(p1, "South");

}

publicvoid start() {

if (aThread == null) {

aThread = new Thread(this);

代码2 :aThread.star();// 线程启动

b1.setEnabled(false);

}

}

publicvoid stop() {

if (aThread != null) {

代码3 :aThread.interrupt();// 线程中断

aThread = null;

代码4 :au.stop();// 停止播放声音文件

}

}

publicvoid run() {

while (true) {

iFrame++;

iFrame %= (iImages.length); // 下一幅图像的下标

repaint();

try {

Thread.sleep(100);

} catch (InterruptedException e) { // 中断时抛出

break; // 退出循环

}

}

}

publicvoid update(Graphics g) {

g.drawImage(iImages[iFrame], 0, 0, this);

}

publicvoid actionPerformed(ActionEvent e) {

if((e.getSource() == b1) && (aThread== null)) { // 单击 Start 按

钮时触发

aThread = new Thread(this);

代码5 :aThread.star();// 线程启动

b1.setEnabled(false);

b2.setEnabled(true);

代码6 :au.loop();// 循环播放声音文件

}

if (代码7 :au.stop();) { // 单击 Stop 按钮时触发

aThread.interrupt(); // 线程中断

aThread = null;

b1.setEnabled(true);

b2.setEnabled(false);

au.stop(); // 停止播放声音文件

}

}

}

10.要求设计一个能通过Runnable接口实现多线程动态地显示时间的Applet程序。

阅读并分析以下程序,将程序中的代码补充完整,编译并运行程序,查看结果。

import javax.swing.*; // Japplet

import java.util.*; // Calendar

import java.awt.*; // Graphics

publicclass AppletThreaded extends JApplet 代码1 :implements Runnable {

Thread appletThread;

int hours, mins, secs;

Boolean stopFlag;

// applet的start( )方法

publicvoid start() {

appletThread = new Thread(this);

代码2 :appletThread.star();;//启动线程

stopFlag=false;

}

// 线程的run( )方法

publicvoid run() {

while (true) {

try {

代码3 :Thread.sleep(1000);让线程休眠时间为1000

}

catch(InterruptedException exception){

exception.printStackTrace();

}

//产生一个代表当前时间的Calendar子类的实例

Calendar time = Calendar.getInstance();

hours = time.get(Calendar.HOUR);

mins = time.get(Calendar.MINUTE);

secs = time.get(Calendar.SECOND);

System.out.println("秒 : " + secs);

代码4 :repaint();;//刷新显示时间

if(stopFlag) break;

}

}

publicvoid stop()

{

stopFlag=true;

}

publicvoid paint(Graphics g)

{

super.paint(g);

g.drawString(String.valueOf(hours) + ":" +

String.valueOf(mins) + ":" +

String.valueOf(secs), 50 , 50);

}

}

11.编写一个应用程序,除了主线程外,还有两个线程:first和second。first 负责模拟一个红色的按钮从坐标(10,60)运动到(100,60);second负责模拟一个绿色的按钮从坐标(100,60)运动到(200,60)。阅读并分析以下程序,将程序中的代码补充完整。

//MoveButton.java

import java.awt.*;

import java.awt.event.*;

public class MoveButton extends Frame implements Runnable,ActionListener { 【代码1:Thread first,second;】//用Thread类声明first,second两个线程对象 Button redButton,greenButton,startButton;

int distance=10;

MoveButton()

{ 【代码2 :first = new Thread ();】 //创建first线程,当前窗口做为该线程的目标对象

【代码3 :second = new Thread ();】 //创建second线程,当前窗口做为该线程的目标对象

redButton=new Button();

greenButton=new Button();

redButton.setBackground(Color.red);

greenButton.setBackground(Color.green);

startButton=new Button("start");

startButton.addActionListener(this);

setLayout(null);

add(redButton);

redButton.setBounds(10,60,15,15);

add(greenButton);

greenButton.setBounds(100,60,15,15);

add(startButton);

startButton.setBounds(10,100,30,30);

setBounds(0,0,300,200);

setVisible(true);

validate();

addWindowListener(new WindowAdapter()

{ public void windowClosing(WindowEvent e)

{ System.exit(0);

}

}

);

}

public void actionPerformed(ActionEvent e)

{ try{ first.start();

second.start();

}

catch(Exception exp){}

}

public void run()

{ while(true)

{ if(【代码4 :Thead.currentThread() == first】) //判断当前占有CPU资源的线程是否是first

{ moveComponent(redButton);

try{ Thread.sleep(20);

}

catch(Exception exp){}

}

if(【代码5 :Thread.currentThread() == second】) //判断当前占有CPU 资源的线程是否是second

{ moveComponent(greenButton);

try{ Thread.sleep(10);

}

catch(Exception exp){}

}

}

}

public synchronized void moveComponent(Component b)

{

if(Thread.currentThread()==first)

{ while(distance>100&&distance<=200)

try{ wait();

}

catch(Exception exp){}

distance=distance+1;

b.setLocation(distance,60);

if(distance>=100)

{ b.setLocation(10,60);

notifyAll();

}

}

if(Thread.currentThread()==second)

{ while(distance>=10&&distance<100)

try{ wait();

}

catch(Exception exp){}

distance=distance+1;

b.setLocation(distance,60);

if(distance>200)

{ distance=10;

b.setLocation(100,60);

notifyAll();

}

}

}

}

// MoveButtonMainClass.java

MoveButtonMainClass.java

public class MoveButtonMainClass

{ public static void main(String args[])

{ MoveButton mb =new MoveButton();

}

}

12.读写基本数据类型数据

编写一个Java应用程序,将若干基本数据写入到一个文件,然后在按顺序读出。阅读下面程序,将程序中的代码补充完整。

import java.io.*;

public class NumberExample{

public static void main(String args[]){

int a1=12, a2=1180;

long b=808080;

float x1=3.14F,x2=12.456F;

double d=1234.9876;

Boolean boo1=true,boo2=false;

char c=’我’;

File f=【代码1 :new File(“E://1.txt”);】//创建文件

try{FileOutputStream fos=【代码2 :new FileOutputStream(f);】//

创建指向f文件输出流

DataOutputStream out_data=【代码3 :new DataOutputStream(fos);】//创建指向fos的数据输出流

【代码4 : out_data.writeInt(a1);】//out_data将数据a1写入到文件

【代码5 :out_data.writeInt(a2);】//out_data将数据a2写入到文件

【代码6 : out_data.writeLong(b);】//out_data将数据b写入到文件

【代码7 :out_data.writeFloat(x1);】//out_data将数据x1写入到文

【代码8 :out_data.writeFloat(x2);】//out_data将数据x2写入到文

【代码9 :out_data.writeDouble(d);】//out_data将数据d写入到文件

【代码10 :out_data.writeBoolean(boo1);】//out_data将数据boo1写入到文件

【代码11 :out_data.writeBoolean(boo2);】//out_data将数据boo2写入到文件

【代码12 :out_data.writeChar(c);】//out_data将数据c写入到文件}

Catch(IOException e) { }

try {FileInputStream fis=【代码13 :new FileInputStream(f);】//创建指向f

文件输入流

DataInputStream in_data=【代码14 :new

DataInputStream(fis);】//创建指向fis的数据输入流

System.out.println(【代码15 : in_data.readInt()】);

//in_data读取int整数

System.out.println(【代码16 : in_data.readInt()】);

//in_data读取int整数

System.out.println(【代码17 :in_data.readLong()】);

//in_data读取long整数

System.out.println(【代码18:in_data.readFloat()】);

//in_data读取float数

System.out.println(【代码19 :in_data.readFloat()】);

//in_data读取float数

System.out.println(【代码20 : in_data.readDouble()】);

//in_data读取double数

System.out.println(【代码21 :in_data.readBoolean()】);

//in_data读取boolean数

System.out.println(【代码22 : in_data.readBoolen()】);

//in_data读取boolean数

System.out.println(【代码23 :in_data.readChar()】);

//in_data读取char数据

}

Catch(IOException e){ }

}

}

}

13.练习使用InetAddress类。对程序进行分析,写出分析结果。

import https://www.doczj.com/doc/e04042866.html,.*;

publicclass GetIP {

publicstaticvoid main(String args[]) {

try {

InetAddress address_1 = InetAddress.getLocalHost();

// 获得本地主机的计算机名和IP地址

System.out.println(address_1.toString());

InetAddress address_2 = InetAddress.getByName("https://www.doczj.com/doc/e04042866.html,");

// 获得主机地址的域名和IP地址

System.out.println(address_2.toString());

InetAddress address_3 = InetAddress.getByName("61.183.20.30");

System.out.println(address_3.toString());

} catch (UnknownHostException e) {

System.out.println("无法找到………….");

}

}

}

14.阅读下面的程序并补充完整,掌握获取URL信息的一些方法。

import https://www.doczj.com/doc/e04042866.html,.*;

import java.io.*;

publicclass URLTest {

publicstaticvoid main(String[] args) {

URL url = null;

InputStream is;

try {

url = new URL("https://www.doczj.com/doc/e04042866.html,:8080/eas/index.html");

is = url.openStream();

int c;

try {

while ((c = is.read()) != -1)

System.out.print((char) c);

} catch (IOException e) {

} finally {

is.close();

} catch (MalformedURLException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

System.out.println("文件名:"+ 【代码1 :url.getFile()】); //获取url 对象的文件名

System.out.println("主机名:" + 【代码2 :url.getHost()】);//获取主

机名

System.out.println("端口号:" + 【代码3 :url.getPort()】);//获取端

口号

System.out.println("协议名:"+ 【代码4 :url.getProtcol()】);//获取协议名称

}

}

15.练习使用Socket和ServerSocket进行套接字编程

下面是一个简单的字符界面的聊天程序。

服务器端程序如下:

i mport java.io.*;

import https://www.doczj.com/doc/e04042866.html,.*;

public class ServerDemo {

public static void main(String args[]){

try{

ServerSocket server=new ServerSocket(4566);

Socket socket=server.accept();

String line;

BufferedReader is=new BufferedReader(

new InputStreamReader(socket.getInputStream()));

PrintWriter os=new PrintWriter(socket.getOutputStream());

BufferedReader sin=new BufferedReader(

new InputStreamReader(System.in));

System.out.println("Client:"+is.readLine());

System.out.print("Server:");

line=sin.readLine();

while(!line.equals("bye")){

os.println(line);

os.flush();

System.out.println("Client:"+is.readLine());

System.out.print("Server:");

line=sin.readLine();

sin.close();

os.close();

is.close();

socket.close();

server.close();

}catch(Exception e){

System.out.println("Error:"+e);

}

}

}

客户端程序如下:

import java.io.*;

import https://www.doczj.com/doc/e04042866.html,.*;

publicclass ClientDemo {

publicstaticvoid main(String args[]){

try{

Socket socket=new Socket("127.0.0.1",4566);

BufferedReader is=new BufferedReader(

new InputStreamReader(socket.getInputStream()));

PrintWriter os=new PrintWriter(socket.getOutputStream());

BufferedReader sin=new BufferedReader(

new InputStreamReader(System.in));

String readline;

System.out.print("Client:");

readline=sin.readLine();

while(!readline.equals("bye")){

os.println(readline);

os.flush();

System.out.println("Server:"+is.readLine());

System.out.println("Client:");

readline=sin.readLine();

}

sin.close();

os.close();

is.close();

socket.close();

}catch(Exception e){

System.out.println("Error:"+e);

}

}

}

16. 要求:编写带图形界面的聊天程序,实现让客户可以持续地发送消息给服务器,服务器也可以即时看到客户端发送的消息,并回消息给客户端。程序运行界面如下:

//服务器端程序如下:

public class MyServer extends JFrame implements ActionListener { JTextArea jta;

JTextField jtf;

JButton jb;

JPanel jp;

ServerSocket ss;

Socket socket;

DataOutputStream out;

DataInputStream in;

public MyServer() {

jta = new JTextArea();

jtf = new JTextField(15);

jb = new JButton("发送");

jp = new JPanel();

jp.add(jtf);

jp.add(jb);

JScrollPane jsp = new JScrollPane(jta);

this.add(jsp, BorderLayout.CENTER);

this.add(jp, BorderLayout.SOUTH);

jb.addActionListener(this);

jtf.addActionListener(this);

java基础笔试测试题与答案

Java 一章至五章考试 一. 填空题(8 分) 1. 面向对象的三大原则是( 封装),( 继承) 和( 多态).2 分 2. 如果想在对象实例化的同时就初始化成员属性,则使用( 构造函数).2 分 3. ( 实体) 方法和( 构造) 方法不能修饰为abstract ?2分 二.选择题(60 分) 1) 在Java 语言中,下列(a,d )是不满足命名规范的变量名。(选择二项) a) 姓名 b) $Name c) _instanceof d) instanceof 2) 下列Java 代码片段的输出结果是( a ) 。 char c='a'; int i=c; float f=i; byte b=(byte)c; System.out.println(c+","+i+","+f+","+b); a) 编译错误 b) a,97,97,97 c) a,97,97.0,97 d) a,97,97.0f,97 3) 下列Java 代码中,空白处的代码是(b,c )。( 选择两项) public interface Fee{ public float calLabFee(float unitPrice, float time); } public class FeeImpl implements Fee { public float calLabFee(float unitPrice, float time){ return unitPrice * time; } } public class FeeInterfaceTest { public static void main(String[] args){ ________________ Float labFee = fee.calLabFee(400.00,5); } }

JAVA复习题 有答案

复习题 一、选择题 1、下列Java标志符中合法的是:() A H3_sum B -name C student# D 9_Hello123 2.Java源文件和编译后的文件扩展名分别为() A. .class和.java B. .java和.class C. .class和.class D. .java和.java 3.对于同一消息,对象可以产生不同的行为,这称为类的什么特性?()A)继承性B)封装性C)多态性D)抽象性 4、用来引入包语句的关键词是:() A)import B)abstract C)package D)extends 5.对于小程序,当离开包含Applet的主页后又再返回时将调用()方法。A)start( ) B)init( ) C)destroy( ) D)stop( ) 6.下列对Java中的继承描述错误的说法是() A.子类只能有一个父类 B.子类可作为另一个子类的父类 C.子类可以访问父类的私有属性 D.子类继承父类的方法访问权限保持不变 7.哪种循环在条件表达式被计算之前至少执行循环体语句一次?( ) A)do-while循环B)for循环C)while循环D)以上都不是 8.定义数组String[] a={"ab","abc","abcd","abcde"},数组中a[1]指的是()。 A.ab B.abc C.abcde D.数组越界 9.如果希望组件从左往右,从上到下自动布局界面,应使用哪种布局?()A)没有B)BorderLayout C)FlowLayout D)GridLayout 10.下列说法正确的是() A. 最终类在特殊情况下可以有子类 B. 抽象类只能有一个子类 C. 多态可以通过方法重写和方法重载实现 D. 抽象类不可以声明成员变量和成员方法,只能声明抽象方法 11.下列语句中访问类的方法正确的是:() A)https://www.doczj.com/doc/e04042866.html, B)https://www.doczj.com/doc/e04042866.html,( ) C)book->name D)book_name 12.下列选项中哪个是类Pen的构造方法() A)public void Pen() {} B)public static Pen() {} C)public Pen() {} D)public static void Pen() {} 13.单击菜单触发的事件是?() A. ActionEvent B.ItemEvent C.MouseEvent D. KeyEvent 14.关于try/catch/finally结构的异常捕获和处理,说法错误的是()A)try部分是必须的B)catch部分也是必须的 C)可以有多个catch部分D)finally部分也是必须的

JAVA测试题(三套含答案)

1.在单一文件中import、class和package的正确出现顺序是:A A.package, import, class B.class, import, package C.import, package, class D.package, class, import 2.public static void main方法的参数描述是:A,D A.String args[] B.Strings args[] C.String args D.String []args 3.下面哪行代码会在编译的时候出现错误或警告:A,B,C,D A.float f=; B.char c="a"; C.byte b=257; D.boolean b=null; E.int i=10; 4. 编译,运行下列代码后的结果是:D public class Test { public static void main (String args []) { int age; age = age + 1; "The age is " + age); } } A.编译,运行后没有输出 B.编译,运行后输出:The age is 1 C.能通过编译,但运行时产生错误 D.不能通过编译 4.下面那些关键字不是JAVA的关键字B A if B then C goto D while E case 5.下面那些不是合法的变量定义:A,F C. _whatavariable D. _3_

6.内部数据类型byte的取值范围是B - 65, 535 B.(–128) – 127 C.(–32,768) – 32,767 D.(–256) – 255 7.下列哪些表达式返回true AB A."john" == "john" B."john".equals("john") C."john" = "john" D."john".equals(new Button("john")) 8.声明公用的abstract方法的正确格式是A A.public abstract void add(); B.public abstract void add() {} C.public abstract add(); D.public virtual add(); 9.下面的代码能打印出的结果为:C int i=1; switch (i) { case 0: "zero"); break; case 1: "one"); case 2: "two"); default: "default"); } B.one, default C.one, two, default D.default 10.下面的代码能打印出的结果为:B int i=9; switch (i) { default: "default"); case 0:

JAVA期末试题及答案

Java 程序设计》课程试卷 1.使用 Java 语言编写的源程序保存时的文件扩展名是( )。 (A ) .class ( B ) .java C ) .cpp ( D ) .txt 2.设 int a=-2 ,则表达式 a>>>3 的值为( )。 (A ) 0 (B )3 (C ) 8 (D )-1 3.设有数组的定义 int[] a = new int[3] ,则下面对数组元素的引用错误的是( ) ( A )a[0]; ( B ) a[a.length-1]; (C )a[3]; (D )int i=1 ; a[i]; 4.在类的定义中可以有两个同名函数,这种现象称为函数( )。 (A )封装 (B )继承 (C )覆盖 (D )重载 5.在类的定义中构造函数的作用是( )。 (A )保护成员变量 (B )读取类的成员变量 (C )描述类的特征 (D )初始化成员变量 6.下面关键字中,哪一个不是用于异常处理语句( )。 ( A ) try ( B ) break ( C ) catch ( D ) finally 7.类与对象的关系是( )。 (A )类是对象的抽象 (B )对象是类的抽象 15. Java 语言使用的字符码集是 (A) ASCII (B) BCD (C) DCB 16. 如果一个类的成员变量 (A) public (B) (C 对象是类的子类 (D )类是对象的具体实例 )。 8.下面哪一个是 Java 中不合法的标识符( ( A )$persons ( B ) twoNum ( C )_myVar ( D )*point 9.为 AB 类的一个无形式参数无返回值的方法 ( ) 。 ( A ) static void method( ) ( B ) public void method( ) ( C ) final void method( ) ( D ) abstract void method( ) 10.欲构造 ArrayList 类的一个实例,此类继承了 ( A ) ArrayList myList=new Object( ) ( B ) List myList=new ArrayList( ) ( C ) ArrayList myList=new List( ) ( D ) List myList=new List( ) 11. Java 源文件和编译后的文件扩展名分别为( (A) .class 和 .java (C).class 和 .class 12. 在 Java Applet 程序用户自定义的 (A) start( ) (B) stop( ) (C) init( ) 13. 对于一个 Java 源文件, (A) package,import,class (C) import,package,class 14. 下面哪个是非法的: (A) int I = 32; (C) double d = 45.0; method 书写方法头,使得使用类名 List 接口,下列哪个方法是正确的( ) ( B).java 和 .class (D) .java 和 .java Applet 子类中,一般需要重载父类的 (D) paint( ) import, class (B) class,import,package (D) package,class,import ( ) 定义以及 package 正确的顺序是: (B) float f = 45.0; (D) char c = // 符号错 AB 作为前缀就可以调用它,该方法头的形式为 方法来完成一些画图操作。 (D) Unicode 只能 在所在类中使用 则该成员变量必须使用的修饰是

JAVA复习题库及答案

第一题单项选择题 1、在下列说法中,选出最正确的一项是(A )。 A、Java 语言是以类为程序的基本单位的 B、Java 语言是不区分大小写的 C、多行注释语句必须以//开始 D、在Java 语言中,类的源文件名和该类名可以不相同 2、下列选项中不属于Java 虚拟机的执行特点的一项是(D )。 A、异常处理 B、多线程 C、动态链接 D、简单易学 3、下列选项中,属丁JVM 执行过程中的特点的一项是( C )。 A、编译执行 B、多进程 C、异常处理 D、静态链接 4、在Java 语言中,那一个是最基本的元素?( C ) A、方法 B、包 C、对象 D、接口 5、如果有2 个类A 和B,A 类基于B 类,则下列描述中正确的一个是( B )。 A、这2 个类都是子类或者超类 B、A 是B 超类的子类 C、B 是A 超类的子类 D、这2 个类郡是对方的子类 6、使用如下哪个保留字可以使只有在定义该类的包中的其他类才能访问该类?(D ) A、abstract B、private (本类) C、protected(本包及其他包的子类) D、不使用保留字 7、编译一个定义了3 个类的Java 源文件后,会产生多少个字符码文件,扩展名是什么?(D ) A、13 个字节码文件,扩展名是.class B、1 个字节码文件,扩展名是.class C、3 个字节码文件,扩展名是.java D、3 个字节码文件,扩展名是.class 8、下列关于Java 程序结构的描述中,不正确的一项是( C )。 A、一个Java 源文件中可以包括一个package 语句 B、一个Java 源文件中可以包括多个类定义,但是只能有一个public 类 C、一个Java 源文件中可以有多个public 类 D、源文件名与程序类名必须一致 9、下列说法正确的一项是( C )。 A、java.1ang.Integer 是接口 B、java.1ang.Runnable 是类 C、Doulble 对象在iava.1ang 包中 D、Double 对象在java.1ang.Object 包中 10、以下关于面向对象概念的描述中,不正确的一项是( B )。 A、在现实生活中,对象是指客观世界的实体

Java笔试题及答案

Java笔试题及答案 一、单项选择题 1.Java是从()语言改进重新设计。 A.Ada B.C++ C.Pasacal D.BASIC 答案:B 2.下列语句哪一个正确() A. Java程序经编译后会产生machine code B. Java程序经编译后会产生byte code C. Java程序经编译后会产生DLL D.以上都不正确 答案:B 3.下列说法正确的有() A. class中的constructor不可省略 B. constructor必须与class同名,但方法不能与class同名 C. constructor在一个对象被new时执行 D.一个class只能定义一个constructor 答案:C 详解:见下面代码,很明显方法是可以和类名同名的,和构造方法唯一的区别就是,构造方法没有返回值。 package net.study; public class TestConStructor { public TestConStructor() {

} public void TestConStructor() { } public static void main(String[] args) { TestConStructor testConStructor = new TestConStructor(); testConStructor.TestConStructor(); } } 4.提供Java存取数据库能力的包是() 答案:A 5.下列运算符合法的是() A.&& B.<> C.if D.:= 答案:A 详解: java 中没有<> := 这种运算符,if else不算运算符 6.执行如下程序代码 a=0;c=0; do{ --c; a=a-1; }while(a>0); 后,C的值是()

JAVA语言复习题及答案

14年(下)程序设计(JA V A语言)复习题 第一:单选 1. 若有定义int x=3,y;则执行语句y=(++x)+(++x)+(++x);后y=()。 (A) 12 (B) 18 (C) 9 (D) 15 2. 下列选项中,不是Java关键字的是()。 (A) double (B) Integer (C) float (D) default 3. 在成员变量与局部变量重名时,若想在方法内使用成员变量,要使用的关键字是()。 (A) super (B) import (C) this(D) return 4. 下列说法中错误的是( B )。 (A) 一个类中的实例方法可以调用其他实例方法 (B) 静态方法可以调用实例方法 (C) 实例方法可以调用静态方法 (D) 静态方法可以调用静态方法 5. 下列关于super的说法中错误的是()。 (A) 用来访问父类被隐藏的成员变量 (B) 用于调用父类中被重写的方法 (C) 用于定义父类 (D) 用于调用父类的构造函数 6. 下列选项属于接口中方法默认访问控制方式的是()。 (A) public (B) private (C) protected(D) default 7. 定义一个名为key的类,下列选项中使其不能被继承的定义是()。 (A) class key{} (B) native class key{} (C) class key{ final;} (D) final class key{} 8. 若有定义String tom=""我们是学生"";则tom.length()的值是()。 (A) 5 (B) 10 (C) 6 (D) 11 9. 调用repaint()方法,会出现什么情况( C )。 (A) 清除以前pain()方法所画的内容 (B) 保留原来pain()所画的内容 (C) 清除pain()以前所画的内容,再一次调用pain()方法 (D) 在pain()以前所画内容基础上,再一次调用pain()画新的内容 10. 从下面的main()调用java lyrics a kiss is but a kiss 中可以访问单词“kiss”的是()。 (A) args[0] (B) args[5] (C) args[4] (D) args[3] 11. 使一个线程放弃处理器并休眠1.5秒,应调用的方法是()。 (A) sleep(1.5) (B) sleep(1500) (C) suspend(1.5) (D) suspend(1500) 12. 如要使处于等待状态的线程恢复到运行状态,应调用的方法是()。 (A) start() (B) run() (C) resume() (D) notify() 13. 如果想获得一个InetAddress对象的主机域名,可调用的方法是()。

java期末考试试题及答案

1.谈谈final, finally, finalize的区别。 final关键字: a) 如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为abstract的,又被声明为final的。 b) 将变量或方法声明为final,可以保证它们在使用中不被改变。 c) 被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。 d) 被声明为final的方法也同样只能使用,不能重载。 finally关键字:在异常处理时提供finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的catch 子句就会执行,然后控制就会进入finally 块。 finalize:方法名,不是关键字。Java技术允许使用finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在Object 类中定义的,因此所有的类都继承了它。子类覆盖finalize() 方法以整理系统资源或者执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。 2.GC是什么? 为什么要有GC? GC是垃圾收集器。Java 程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一: System.gc() Runtime.getRuntime().gc() 3.Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 写程序Math.round(11.5) = 12 Math.round(-11.5) = -11 4.给我一个你最常见到的runtime exception ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException

JAVA测试题(三套含答案)

<测试一> 1.在单一文件中import、class和package的正确出现顺序是:A A.package, import, class B.class, import, package C.import, package, class D.package, class, import 2.public static void main方法的参数描述是:A,D A.String args[] B.Strings args[] C.String args D.String []args 3.下面哪行代码会在编译的时候出现错误或警告:A,B,C,D A.float f=1.3; B.char c="a"; C.byte b=257; D.boolean b=null; E.int i=10; 4.编译,运行下列代码后的结果是:D public class Test { public static void main (String args []) { int age; age = age + 1; System.out.println("The age is " + age); } } A.编译,运行后没有输出 B.编译,运行后输出:The age is 1 C.能通过编译,但运行时产生错误 D.不能通过编译 4.下面那些关键字不是JAVA的关键字B A if B then C goto D while E case 5.下面那些不是合法的变量定义:A,F A.2variable B.variable2 C. _whatavariable

D. _3_ E. $anothervar F. #myvar 6.内部数据类型byte的取值范围是B A.0 - 65, 535 B.(–128) – 127 C.(–32,768) – 32,767 D.(–256) – 255 7.下列哪些表达式返回true AB A."john" == "john" B."john".equals("john") C."john" = "john" D."john".equals(new Button("john")) 8.声明公用的abstract方法的正确格式是A A.public abstract void add(); B.public abstract void add() {} C.public abstract add(); D.public virtual add(); 9.下面的代码能打印出的结果为:C int i=1; switch (i) { case 0: System.out.println("zero"); break; case 1: System.out.println("one"); case 2: System.out.println("two"); default: System.out.println("default"); } A.one B.one, default C.one, two, default D.default 10.下面的代码能打印出的结果为:B int i=9; switch (i) { default:

java笔试题及答案.doc

java笔试题及答案 有了下面java笔试题及答案,进行java笔试时就容易多了,请您对下文进行参考: 1、作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域当前类同一package子孙类其他package public 7 7 7 7 protected 7 7 7 X friendly 7 7 X X private 7 X X X 不写时默认为friendly 2、Anonymouslnner Class (匿名内部类)是否可以exte nd s (继承)其它类,是否可以imple ment s (实现)i nterf ace (接口) 答:匿名的内部类是没有名字的内部类。不能exte n ds (继承)其它类,但一个内部类可以作为一个接口,由另一个内部类实现 3、Sta ti cNestedC las s 和Inner Clas s 的不同答: Nes tedC lass (一般是C+ +的说法),In ne rClass (—般是JAVA的说法)。J ava内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。注:静态内部类(I

nn erClass)意味着1创建一个st atic内部类的对象,不需要一个外部类对象,2不能从一个st atic内部类的一个对象访问一个外部类对象 4、和的区别 答:是位运算符,表示按位与运算,是逻辑运算符,表示遷辑与(and ) 5、Coll ect ion 和Col lect ions 的区别 答:Coll ect ion是集合类的上级接口,继承与他的接口主要有Set和List. Col lections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作 6、什么时候用assert 答:asserti on (断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,a ssertion 就是在程序中的一条语句,它对一个boolea n表 达式进行检查,一个正确程序必须保证这个bool ean表达 式的值为tr ue;如果该值为fal se,说明程序己经处于不正确的状态下,系统将给出警告或退出。一般来说,

JAVA考试复习题(附答案)

《现代程序设计》(JAVA)考试复习题 一、选择题 1、关于Java语言叙述错误的是:(C) A.Java语言具有跨平台性B.Java是一种面向对象的语言 C.Java语言中的类可以多继承D.Java的垃圾收集机制自动回收程序已不再使用的对象 2、以下叙述正确的是:(B) A.构造方法必须是public方法B.main方法必须是public方法 C.Java应用程序的文件名可以是任意的D.构造方法应该声明为void类型 3、关于Java中数据类型叙述正确的是:(B) A、整型数据在不同平台下长度不同B.boolean类型数据只有2个值,true和false C.数组属于简单数据类型D.Java中的指针类型和C语言的一样 4、设int x=1,float y=2,则表达式x / y的值是:(D) A.0 B.1 C.2 D.以上都不是 5、以下语句有语法错的是:(A) A.int x=1;y=2;z=3 B.for (int x=10,y=0;x>0;x++); C.while (x>5); D.for(; ;); 6、关于类和对象的叙述正确的是:(A) A.Java的类分为两大部分:系统定义的类和用户自定义的类 B.类的静态属性和全局变量的概念完全一样,只是表达形式不同 C.类的成员至少有一个属性和一个方法D.类是对象的实例化 7、以下有关构造方法的说法,正确的是:(A) A.一个类的构造方法可以有多个B.构造方法在类定义时被调用 C.构造方法只能由对象中的其它方法调用 D.构造方法可以和类同名,也可以和类名不同 8、以下有关类的继承的叙述中,正确的是:(D) A.子类能直接继承父类所有的非私有属性,也可通过接口继承父类的私有属性 B.子类只能继承父类的方法,不能继承父类的属性 C.子类只能继承父类的非私有属性,不能继承父类的方法 D.子类不能继承父类的私有属性 9、void 的含义:(C ) A.方法体为空B.定义的方法没有形参 C.定义的方法没有返回值D.方法的返回值不能参加算术运算 10、关于Java中异常的叙述正确的是:(D ) A.异常是程序编写过程中代码的语法错误B.异常是程序编写过程中代码的逻辑错误 C.异常出现后程序的运行马上中止D.异常是可以捕获和处理的

Java程序设计试题及答案

一、判断题。判断下列各题是否正确,若正确,在()内打“√”,否则打“×”。 1、Java语言具有较好的安全性和可移植性及与平台无关等特性。√ 2、Java语言的源程序不是编译型的,而是编译解释型的。√ 3、Java语言使用的是Unicode字符集,每个字符在内存中占8位。× 4、Java语言中不同数据类型的长度是固定的,不随机器硬件不同而改变。√ 6、一个类可以实现多个接口,接口可以实现“多重继承”。√ 7、实现接口的类不能是抽象类。× 二、不定项选择题。 1、编译Java Application源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为(B)。 A、java B、class C、html D、exe 2、main方法是Java Application程序执行的入口点,关于main方法的方法首部,以下(B)项是合法的。 A、public static void main() B、public static void main(String args[]) C、public static int main(String[] arg) D、public void main(String arg[]) 3、关于下面代码的说法(C)是正确的 public class Example{ public static void main(String[] args){ int[] arr= new int[10]; } } A、编译时产生错误 B、编译时正确,运行时将产生错误 C、输出零 D、输出空(null) 4、不正确的表达式是(AB)。 A、float a=; B、Double a=new Double C、byte a = (byte)340; D、Byte a = 120; 5、定义一个类名为""的类,并且该类可被一个工程中的所有类访问,那么该类的正确声明应为( CD)。 A、private class MyClass extends Object B、class MyClass extends Object C、public class MyClass D、public class MyClass extends Object 6、下列构造方法的调用方式中,正确的是(C)。 A、按照一般方法调用 B、由用户直接调用

Java经典面试题大全_带答案

Java经典面试题带答案一、单项选择题 1.Java是从()语言改进重新设计。 A.Ada B.C++ C.Pasacal D.BASIC 答案:B 2.下列语句哪一个正确() A.Java程序经编译后会产生machine code B.Java程序经编译后会产生byte code(字节码) C.Java程序经编译后会产生DLL D.以上都不正确 答案:B 3.下列说法正确的有() A.class中的constructor不可省略 B.constructor必须与class同名,但方法不能与class同名C.constructor在一个对象被new时执行(构造器) D.一个class只能定义一个constructor 答案:C 4.提供Java存取数据库能力的包是() A.Java.sql /sql/数据库还有Oracle 也是一种数据库 B.java.awt C.https://www.doczj.com/doc/e04042866.html,ng D.java.swing 答案:A 5.下列运算符合法的是() A.&& B.<> C.if D.:= 答案:A 6.执行如下程序代码 a=0;c=0; do{ --c; a=a-1; }while(a>0); 后,C的值是() A.0 B.1 C.-1 D.死循环

答案:C 7.下列哪一种叙述是正确的() A.abstract修饰符可修饰字段、方法和类 B.抽象方法的body部分必须用一对大括号{}包住 C.声明抽象方法,大括号可有可无 D.声明抽象方法不可写出大括号 答案:D 8.下列语句正确的是() A.形式参数可被视为localvariable B.形式参数可被字段修饰符修饰 C.形式参数为方法被调用时,真正被传递的参数 D.形式参数不可以是对象 答案:A 9.下列哪种说法是正确的() A.实例方法可直接调用超类的实例方法 B.实例方法可直接调用超类的类方法 C.实例方法可直接调用其他类的实例方法 D.实例方法可直接调用本类的类方法 答案:D 二、多项选择题 1.Java程序的种类有() A.类(Class) B.Applet C.Application D.Servlet 2.下列说法正确的有() A.环境变量可在编译sourcecode时指定 B.在编译程序时,所能指定的环境变量不包括class path C.javac一次可同时编译数个Java源文件 D.javac.exe能指定编译结果要置于哪个目录(directory)答案:BCD 3.下列标识符不合法的有() A.new B.$Usdollars C.1234 D.car.taxi 答案:ACD 4.下列说法错误的有() A.数组是一种对象 B.数组属于一种原生类 C.intnumber=[]={31,23,33,43,35,63} D.数组的大小可以任意改变 答案:BCD 5.不能用来修饰interface的有()

Java复习习题答案

P13 2.参照例1-2编写一个java applet程序,程序能在浏览器中显示“你好,Hello”。(见p11例1-2) P24 2.参照2-4编写一个java应用程序,用户从键盘只能输入整数,程序输出这些整数的乘积。 import java.util.*; public class ZuoYe2_2{ public static void main (String args[ ]){ Scanner reader=new Scanner(System.in); long chengji=1; int m=0; while(reader.hasNextInt()){ int x=reader.nextInt(); m=m+1; chengji=chengji*x; } System.out.println(m+"个数的乘积为"+chengji); } } P41 1.有一个函数Y=-1+2x,x<0;-1,x=0;-1+3x,x>0编写一个java应用程序,从键盘输入一个X值,程序输出Y值。import java.util.*; public class ZuoYe3_1{ public static void main (String args[ ]){ Scanner reader=new Scanner(System.in); double y=0,x=0; x=reader.nextDouble(); if(x<0) y=-1+2*x; else if(x==0) y=-1; else if(x>0) y=-1+3*x; System.out.println(y); } } P41 2.编写一个java程序,使用while循环计算1-1000之间能被3和7同时整除的整数之和。 public class ZuoYe3_2{ public static void main(String args[]){ int sum=0,m=3,n=7,a=1; while(a<=1000){ if(a%m==0&&a%n==0) sum=sum+a; a++; } System.out.println("sum="+sum); } } P41 3.编写一个java程序,使用for循环计算8+88+888+8888+88888…的前十项和。 public class ZuoYe3_3{ public static void main(String args[]) {

java笔试题含答案

班级:_______________ 学号:______________ 姓名:___________ Java 笔试题 (可多选) 1. 下面哪些是Thread类的方法( ABD) A start() B run() C exit() D getPriority() 2. 下面关于类的说法正确的是(A) A 继承自Throwable B Serialable C 该类实现了Throwable 接口 D 该类是一个公共类 3. 下面程序的运行结果是( false ) String str1 = "hello"; String str2 = "he" + new String("llo"); == str2); 4. 下列说法正确的有( C) A. class中的constructor不可省略

B. constructor必须与class同名,但方法不能与class同名C. constructor在一个对象被new时执行 D.一个class只能定义一个constructor 5. 指针在任何情况下都可进行>, <, >=, <=, ==运算( true ) 6. 下面程序的运行结果:(B) public static void main(String args[]) { Thread t = new Thread() { public void run() { pong(); } }; (); "ping"); } static void pong() { "pong"); } A pingpong

B pongping C pingpong和pongping都有可能 D 都不输出 7. 下列属于关系型数据库的是(AB) A. Oracle B MySql C IMS D MongoDB 8. GC(垃圾回收器)线程是否为守护线程( true ) 9. volatile关键字是否能保证线程安全( false ) 10. 下列说法正确的是(AC) A LinkedList继承自List B AbstractSet继承自Set C HashSet继承自AbstractSet D WeakMap继承自HashMap 11. 存在使i + 1 < i的数吗(存在) 12. 的数据类型是(B) A float B double C Float D Double

Java试题及答案

1、在中如果声明一个类为,表示什么意思? 答:是最终的意思,可用于定义变量、方法和类但含义不同,声明为的类不能被继承。 2、父类的构造方法是否可以被子类覆盖(重写)? 答:父类的构造方法不可以被子类覆盖,因为父类和子类的类名是不可能一样的。 3、请讲述和的区别。 答:类所定义的对象是用于存放“长度固定”的字符串。 类所定义的对象是用于存放“长度可变动”的字符串。

4、如果有两个类A、B(注意不是接口),你想同时使用这两个类的功能,那么你会如何编写这个C类呢? 答:因为类A、B不是接口,所以是不可以直接继承的,但可以将A、B类定义成父子类,那么C类就能实现A、B类的功能了。假如A为B的父类,B为C的父类,此时C就能实现A、B的功能。 5、结合视频5(多线程),分析()和()方法的区别。 答:睡眠的意思 : () 方法用来暂时中止执行的线程。在睡眠后,线程将进入就绪状态。 等待的意思: 如果调用了 () 方法,线程将处于等待状态。 用于在两个或多个线程并发运行时。 6、谈谈你对抽象类和接口的理解。 答:定义抽象类的目的是提供可由其子类共享的一般形式、子类可以根据自身需要扩展抽象类、抽象类不能实例化、抽象方法没有函数体、抽象方法必须在子类中给出具体实现。 他使用来继承。 接口:一个接口允许一个类从几个接口继承而来,程序一次只能继承一个类但可以实现几个接口,接口不能有任何具体的方法,接口也可用来定义可由类使用的一组常量。其实现方式是来实现。 7. 的接口和的虚类的相同和不同处。 由于不支持多继承,而有可能某个类或对象要使用分别在几

个类或对象里面的方法或属性,现有的单继承机制就不能满足要求。与继承相比,接口有更高的灵活性,因为接口中没有任何实现代码。当一个类实现了接口以后,该类要实现接口里面所有的方法和属性,并且接口里面的属性在默认状态下面都是,所有方法默认情况下是.一个类可以实现多个接口。 8. 垃圾回收的优点和原理。并考虑2种回收机制。 语言中一个显著的特点就是引入了垃圾回收机制,使程序员最头疼的内存管理的问题迎刃而解,它使得程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。 9.谈谈,,的区别。 -修饰符(关键字)如果一个类被声明为,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为的,又被声明为的。将变量或方法声明为,可以保证它们在使用中不被改变。被声明为的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为的方法也同样只

Java开发工程师笔试题(带答案)

Java开发工程师笔试试题 (请不要在试题上留任痕迹,所有答案均写在答题纸上) 一.编程题(共26分) 1.任意写出一种排序算法。(6分) public void sort(int [] array){ //代码区 } 2.求1+2+3+..n(不能使用乘除法、for 、while 、if 、else 、switch 、case 等关键字 以及条件判断语句)(8分) public int sum(int n){ //代码区 return 0; } 3.完成下面法,输入一个整数,输出如下指定样式图案。(12分) 输入:3, 输出: 1*2*3 7*8*9 4*5*6

输入:4 输出: 1*2*3*4 9*10*11*12 13*14*15*16 5*6*7*8 public void drawNumPic(int n){ //代码区 } 二.选择题(定项选择每题3分,不定项选择每题4分,共63分) 1.在基本JAVA类型中,如果不明确指定,整数型的默认是__类型,带小数的默认是__类型?( B ) A.int float B.int double C.long float D.long double 2.只有实现了__接口的类,其对象才能序列化( A ) A.Serializable B.Cloneable https://www.doczj.com/doc/e04042866.html,parable

D.Writeable 3.代码System. out. println(10 % 3 * 2);将打印出?( B ) A. 1 B.2 C.4 D.6 4.以下程序运行的结果为( A ) public class Example extends Thread{ @Override public void run(){ try{ Thread.sleep(1000); }catch (InterruptedException e){ e.printStackTrace(); } System.out.print("run"); } public static void main(String[] args){ Example example=new Example(); example.run(); System.out.print("main"); } } A.run main B.main run C.main D.run E.不能确定 5.下面有关java实例变量,局部变量,类变量和final变量的说法,错误的是?( B ) A.实例变量指的是类中定义的变量,即类成员变量,如果没有初始化,会有默认值

相关主题
文本预览
相关文档 最新文档