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

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()方法.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值