1.写一个类,当该类的实例创建时即启动一个线程,按照指定格式每隔5秒循环打印出当前的时间(提示:使用Runnable接口或内部类创建线程,格式化日期使用java.text.SimpleDateFormat),指定的日期格式为:
××××年××月××日 ××点××分××秒。
package test;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test1 extends Thread{
public void run() {
for(;;){
Date date=new Date();
SimpleDateFormat rs=new SimpleDateFormat("yyyy年MM月dd日 hh点mm分ss秒");
System.out.println(rs.format(date));
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args){
Test1 t1 =new Test1();
t1.start();
}
}
2.写一个方法将一个字符串中连续出现的"Java"替换为一个"Java"。例如:字符串"JavaJavaBeaJ2eeJavaIBMJavaJavaJava"替换的结果为"JavaBeaJ2eeJavaIBMJava"。(提示:可以使用正则表达式)
package test;
public class Test2 {
public static void main(String[] args) {
String rs="JavaJavaBeaJ2eeJavaIBMJavaJavaJava";
//replaceall=========正则表达式
System.out.println(rs.replaceAll("(Java)+", "Java"));
}
}
3.写一个程序统计输入字符串中以","分隔的各种单词出现的次数。例如:输入的字符串为"java,java,j2ee,ibm,j2ee,ibm,j2me,java",则该程序的输出结果应该为:
java3个;j2ee2个;ibm2个;j2me1个
(提示:可以使用java.util.StringTokenizer和Map容器)
package test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
public class Test3 {
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
//输出提示语
System.out.println("请输入字符串 附:字符串之间用,隔开");
//读取输入字符串
String temp=br.readLine();
Map maps = new HashMap();
String[] templist = temp.split(",");
for(int i = 0 ; i < templist.length;i++){
//准备放map
String t = templist[i];
//判断key
boolean is = maps.containsKey(t);
if(is == true){
//++1
Integer vs = (Integer)maps.get(t);
vs++;
maps.put(t, vs);
}else{
//放`1
maps.put(t, 1);
}
}
System.out.println(maps);
}
}
4.已知在文件路径"c:\temp\target.bmp",写出Java程序将该文件同名拷贝到路径"c:\bak"下。注意,由于文件较大,应考虑到程序的效率问题。
package test;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Test4 {
public static void main(String[] args) {
FileInputStream fin=null;
FileOutputStream out=null;
try {
fin=new FileInputStream("d:\\A.java");
out=new FileOutputStream("e:\\A.java");
try {
byte bt[] = new byte[1024 * 2];
int len;
while((len=fin.read(bt))!=-1){
out.write(bt,0,len);
}
out.flush();
out.close();
fin.close();
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
5.写出一段程序,从备选字符串"red"、"green"、"blue"、"black"、"white"中随机选出3个不同的字符串,并打印到控制台。
package test;
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
public class Test5 {
public static void main(String[] args) {
String temp[]={"red","green","blue","black","white"};
Set sets=new HashSet();
for(;;){
//产生随数
int i= new Random().nextInt(temp.length);
sets.add(temp[i]);
if(sets.size()>2){
break;
}
}
System.out.println(sets);
}
}
6.写出一个基于SOCKET服务器,与客户机程序;
要求,客户机发送一个字符串,由服务器来读取,并输出
package test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Test6ServerSocket {
public static void main(String[] args) {
ServerSocket server=null;
Socket client =null;
try {
//创建服务吕
server =new ServerSocket(8888);
//侦听并接受到此套接字的连接
client=server .accept();
//控制台输出
BufferedReader br = new BufferedReader(
new InputStreamReader(client.getInputStream()));
System.out.println("客户机发送来的字符串:"+br.readLine());
} catch (IOException e) {
e.printStackTrace();
}
}
package test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class Test6Serverce {
public static void main(String[] args) {
Socket server=null;
System.out.println("请输入聊天内容:");
try {
//连接服务器
server = new Socket("127.0.0.1",8888);
//控制台输入
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String temp=br.readLine();
//产生输出流
PrintWriter pw = new PrintWriter(server.getOutputStream());
pw.println(temp);
pw.flush();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
7.多线程:启用两个线程,将100每隔5秒做++或--运算
package test;
public class Test7 extends Thread {
int rs = 100;
public static void main(String[] args) {
new Test7().s();
}
public void s() {
new Thread(new A()).start();
new Thread(new B()).start();
}
class A implements Runnable {
public void run() {
while (true) {
rs++;
System.out.println("A线程"+rs);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class B implements Runnable {
public void run() {
while (true) {
rs--;
System.out.println("B线程"+rs);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}