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/