就业数据资源平台
当前位置:首页 > Java语言程序设计
2010计算机等级考试二级Java初级练习(3)

21. 编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”

解:import java.io.*;

class interceptString

{

String interceptStr;

int interceptByte;

public interceptString(String str,int bytes)

{

interceptStr=str;

interceptByte=bytes;

System.out.println("字符串为:‘"+interceptStr+"‘;字节数为:"+interceptByte);

}

public void interceptIt()

{

int interceptCount; interceptCount=(interceptStr.length()%interceptByte0)?(interceptStr.length()/interceptByte):(interceptStr.length()/interceptByte+1);

System.out.println("截取后断数为:"+interceptCount);

for (int i=1;i<=interceptCount ;i++ )

{ if (iinterceptCount)

{

System.out.println(interceptStr.substring((i-1)*interceptByte,interceptStr.length()));

} else

{

System.out.println(interceptStr.substring((i-1)*interceptByte,(i*interceptByte)));

}

}

}

public static void main(String args)

{

String s="";

InputStreamReader ir=new InputStreamReader(System.in);

BufferedReader in = new BufferedReader(ir);

try {

s = in.readLine();

interceptString ss = new interceptString(s,4);

ss.interceptIt();

in.close();

} catch (IOException e)

{ e.printStackTrace();}

}

}

22. 多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?

答:多线程有三种实现方法,分别为:

① 实现Runnable接口,覆盖Run()方法。

② 继承Thread,覆盖Run()方法。

③ 继承TimerTask,覆盖Run()方法。

同步的实现是在方法前加synchronized,在调用wait()和notify()。

23. 请说出你所知道的线程同步的方法

答:1. synchronized 方法:通过在方法声明中加入 synchronized关键字来声明 synchronized 方法。

2. synchronized 块:通过 synchronized关键字来声明synchronized 块。


24. 当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?

答:不可以。synchronized 方法都必须获得调用该方法的类实例的锁方能执行,否则所属线程阻塞,方法一旦执行,就独占该锁,直到从该方法返回时才将锁释放,此后被阻塞的线程才能获得该锁,重新进入可执行状态。

25. 用JAVA SOCKET编程,实现简单的Echo功能

如: 客户端从键盘输入 hi (当用户输出exit 退出程序),服务端响应为 hi(服务器要求为多线程)

解:服务器程序:

import java.io.*;

import java.net.*;

public class MyServer extends Thread{

private Socket cq ;

public MyServer(Socket cq)

{

this.cq = cq;

}

public void run()

{

try

{

BufferedReader in=new BufferedReader(new InputStreamReader(cq.getInputStream()));

PrintWriter out=new PrintWriter(cq.getOutputStream());

while(true)

{

String str=in.readLine();

System.out.println(str);

out.println("message: "+str);

out.flush();

if(str.equals("exit"))

break;

}

}

catch(IOException e)

{

System.out.println(e.message());

}

}

public static void main(String args) throws IOException{

ServerSocket server=new ServerSocket(8009);

while(true)

{

Socket s=server.accept();

new MyServer(s).start();

}

}

}

客户端程序:

import java.net.*;

import java.io.*;

public class MyClient{

public static void main(String args)throws Exception

{

Socket server=new Socket("localhost",8009);

BufferedReader in=new BufferedReader(new InputStreamReader(server.getInputStream()));

PrintWriter out=new PrintWriter(server.getOutputStream());

BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

while(true)

{ 考试通

String str=br.readLine();

out.println(str);

out.flush();

if(str.equals("exit")){

break;

}

System.out.println(in.readLine());

}

server.close();

}

}

就业数据资源平台