首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 计算机考试 > 认证考试 > JAVA认证 >

Java精选25道题(2)

2009-03-06 
JAVA基础入门

  20. 编程题::写一个满足Singleton模式的类出来
  public class SingletonTest
  {
  private static SingletonTest sp;
  private SingletonTest() {}
  public static SingletonTest getInstance()
  {
  if (sp==null)
  { sp=new SingletonTest(); }
  return sp;
  }
  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()%interceptByte==0)?(interceptStr.length()/interceptByte):(interceptStr.length()/interceptByte+1);
  System.out.println("截取后断数为:"+interceptCount);
  for (int i=1;i<=interceptCount ;i++ )
  { if (i==interceptCount)
  {
  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();
  }
  }

 

3COME考试频道为您精心整理,希望对您有所帮助,更多信息在http://www.reader8.com/exam/

热点排行