JAVA企业面试题精选 Java SE 51-60

来源:互联网 发布:api原油库存数据预测 编辑:程序博客网 时间:2024/05/18 12:43

3.51.写一个简单的socket实现聊天功能程序的例子(不要求界面,只实现数据传输)一个主服务端,一个客户端

参考答案:

public class ServerDemo{    public static void main(String[] args) throws IOExcetpion{        ServerDemo server = new ServerDemo();        server.start();    }    public void start() throws IOException{        ServerSocket ss = new ServerSocket(8088);        System.out.println("等待客户的连接...");        Socket s = ss.accept();        System.out.println("客户连接成功:" + s.getInetAddress());        InputStream in = s.getInputStream();        OutputStream out = s.getOutputStream();        Reader r = new Reader(out);        r.start();        Writer w = new Writer(in);        w.start();    }}public class ClientDemo{    public static void main(String[] args) throws IOException{        ClientDemo client = new ClientDemo();        client.open();    }     public void open() throws IOException{        Socket s = new Socket("localhost",8088);        InputStream in = s.getInputStream();        OutputStream out = s.getInputStream();        new Reader(out).start();        new Writer(in).start();    }}class Reader extends Thread{    OutputStream out;    public reader(OutputStream out){        this.out = out;        setDaemon(true);    }    public void run(){        Scanner s = new Scanner(System.in);        try{            while(true){                String str = s.nextLine();                out.write(str.getBytes());                out.flush();            }        } catch(IOException e){            e.printStackTrace();        }    }}class Writer extends Thread{    InputStream in;    public Writer(InputStream in){        this.in = in;    }    public void run(){        try{            int b;            while((b = in.read()) != -1){                System.out.write(b);            }        } catch(Exception e){            e.printStackTrace();        }    }}

3.52.Java Socket编程,从服务器读几个字符,再写入本地控制台

参考答案:

public class ServerDemo{    public static void main(String[] args) throws IOException{        ServerSocket ss = new ServerSocket(8088);        Socket s = ss.accept();        OutputStream out = s.getOutputStream();        out.write("从服务器读取几个字符!\n".getBytes());        out.flush();        out.close();    }}public class ClientDemo{    public static void main(String[] args) throws IOException{        Socket s = new Socket("localhost",8088);        InputStream in = s.getInputStream();        int b;        while((b = in.read()) != -1){            System.out.write(b);        }    }}

3.53.什么是Java序列化,如何实现Java序列化?

参考答案:

  序列化就是一种用来处理对象流的机制,所谓对象刘也就是将对象的内容进行流化.可以对硫化后的对象进行读写操作,也可将硫化后的对象传输于网络之间.序列化是为了解决在对对象流进行读写操作时所引发的问题;
  序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如FileOutputStream)来构造一个ObjectOutPutStream(对象流)对象,接着,使用ObjectOutPutStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流.

3.54.Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出它们分别是哪些类

参考答案:

  Java中有字节流,字符流.
  字节输入流的父类为InputStream,字节输出流的父类为OutPutStream;字符输入流的父类为Reader,字符输出流的父类为Writer.

3.55.字节流和字符流有什么区别?

参考答案:

  字节流与字符流主要的区别是它们的处理方式.字节流是最基本的,所有的InputStream和OutputStream的子类用于处理二进制数据,它是按字节来处理的.而字符流是以字符为单位读写数据的.

3.56.文件和目录(IO)操作:

1)如何列出某个目录下的所有文件?

2)如何列出某个目录下的所有子目录?

3)如何判断一个文件或目录是否存在?

参考答案:

1)列出D盘demo目录下的所有文件的示例代码如下所示:

    File file = new File("d:/demo");    File[] files = file.listFiles();    for(int i = 0; i < files.length; i++){        if(files[i].isFile()){            System.out.println(files[i]);        }    }

2)列出D盘demo目录下的所有子目录的示例代码如下:

    File file = new File("d:/demo");    File[] files = file.listFiles();    for(int i = 0; i < files.length; i++){        if(files[i].isFile()){            System.out.println(files[i]);        }    }

3)创建File对象,调用其exists()方法即可判断文件和目录是否存在,实例代码如下所示:

    System.out.println(new File("d:/t.txt").exists());

3.57.String s = new String(“xyz”);创建了几个String Object?

参考答案:

  如果在执行这行代码之前没有创建过”xyz”对象(也就是说这行代码之前没有String str = “xyz” 或 String str2 = new String(“xyz”);类似的代码),则执行这行代码会创建两个String Object;如果在执行这行代码之前创建过”xyz”对象,则执行这行代码会创建一个String Object.

3.58.是否可以继承String类?

参考答案:

  String类是final的,所以不能能够被继承.

3.59.说出”==”和equals()方法在字符串变量操作中的不同

参考答案:

  ”==”比较的是引用,相当于比较两个字符串是否是同一个对象.
  String类的equals()比较的是字符串的内容.

3.60.数组有没有length()这个方法?String有没有length()这个方法?

参考答案:

  数组没有length()方法,有length属性;String有length()方法.

原创粉丝点击