首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

两种书写形式,后者比前者有什么优势呢

2013-08-13 
两种书写方式,后者比前者有什么优势呢?这段代码,其功能是从客服端读取小写字母字符串,然后返回给客服端大

两种书写方式,后者比前者有什么优势呢?
这段代码,其功能是从客服端读取小写字母字符串,然后返回给客服端大写字母字符串。
这是教程里的代码:

package cn.dzr.tcp.tran;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class TranService2
{
public static void main(String[] args) throws IOException
{
ServerSocket ss = new ServerSocket(10004);
Socket s = ss.accept();

String ip = s.getInetAddress().getHostAddress();
System.out.println(ip+"....connected!");

BufferedReader bufIn = new BufferedReader(new 
InputStreamReader(s.getInputStream()));

PrintWriter out = new PrintWriter(s.getOutputStream(),true);

String line = null;
while((line = bufIn.readLine())!= null)
{
System.out.println(line);
out.println(line.toUpperCase());
}
}
}


下面是我自己写的。
package cn.dzr.tcp.tran;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class TranService
{
public static void main(String[] args) throws IOException
{
/*
 * 1,建立服务端socket对象 ServerSocket
 * 2,与客服端进行连接
 * 3,读取客服端输入的字母
 * 4,将字母改成大写,传回给客服端
 */
System.out.println("翻译服务端启动......");

ServerSocket ss = new ServerSocket(10003);
Socket s = ss.accept();

InputStream in = s.getInputStream();
OutputStream out = s.getOutputStream();

while(true)
{
byte[] buff = new byte[1024];

int len = in.read(buff);


String str = new String(buff,0,len);

if(str.equals("over"))
{
break;
}
System.out.println(str);

String str2 = str.toUpperCase();
out.write(str2.getBytes());


}
ss.close();
}
}




教程里的,相比我自己写的,有哪些地方要好呢?


[解决办法]
如果不需要按行判断字符串的话,感觉你这样也挺好的。
byte[] buff = new byte[1024];还是放在循环外面比较好(只需要声明一次即可)。

另外,建议if(str.equals("over"))改为,if(str.endWith("over"))。当然,这个也看需求吧。
[解决办法]
BufferedReader的优势是能行读取,在这没有太多优势吧
[解决办法]
BufferdReader是Reader的封装类,速度更快。优化过的。

热点排行