Java考试题(五)

20int 和 Integer 有什么区别 
答案:int是基本类型。Integer是引用类型。Integer可以把String转换成int

21.运行时异常与一般异常有何异同? 
答案:异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常

22说出一些常用的类,包,接口,请各举5
答案:常用类-System,ArrayList,FileInputStream,Thread,Socket.

常用的包-java.io,java.util,java.sql,java.javax.naming,java.NET
常用接口-Collection,Connection, Cloneable, Comparable, Serializable

23.说出ArrayList,Vector, LinkedList的存储性能和特性.
答案:ArrayListVector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

24设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。

注:因为这4个线程共享J,所以线程类要写到内部类中。

加线程:每次对j加一。

减线程:每次对j减一。
public class TestThreads

{

private int j=1;

//加线程

private class Inc implements Runnable

{

public void run()

{

for(int i = 0;i < 10;i++)

{

inc();

}

}

}

//减线程

private class Dec implements Runnable

{

public void run()

{

for(int i = 0;i < 10;i++)

{

dec();

}

}

}

//1

private synchronized void inc()

{

j++;

System.out.println(Thread.currentThread().getName()+"-inc:"+j);

}

//1

private synchronized void dec()

{

j--;

System.out.println(Thread.currentThread().getName()+"-dec:"+j);

}

//测试程序

public static void main(String[] args)

{

TestThreads test = new TestThreads();

//创建两个线程类

Thread thread = null;

Inc inc = test.new Inc();

Dec dec = test.new Dec();

//启动4个线程

for(int i = 0;i < 2;i++)

{

thread = new Thread(inc);

thread.start();

thread = new Thread(dec);

thread.start();

}

}

}

25.数组转换问题。

Object[] object  =  new Person[2];

Person [] person  =  new Person [3];

person  =  (Person [])object;//可以转换

int[] i = new int[2];

long[] l = new int[3];

i = (long[])l;//不可以转换

26socket通讯写出客户端和服务器端的通讯,要求客户发送数据后能够回显相同的数据。 
Server.java:源代码

import java.Net.*;

import java.io.*;

 

class  Server

{

public Server()

{

BufferedReader br = null;

PrintWriter pw = null;

try

{

ServerSocket server = new ServerSocket(8888);//建立服务器端

Socket socket = server.accept();//监听客户端

//得到该连接的输入流

br = new BufferedReader(new InputStreamReader(socket.getInputStream()));

//得到该连接的输出流

pw = new PrintWriter(socket.getOutputStream(),true);

//先读后写

String data = br.readLine();

System.out.println(data);//输出到控制台

pw.println(data);//转发给客户端

}catch(Exception e)

{

e.printStackTrace();

}

finally

{

try

{

//关闭读写流

br.close();

pw.close();

}catch(Exception e)

{}

}

}

public static void main(String[] args)

{

Server server = new Server();

}

}

Client.java:源代码

import java.net.*;

import java.io.*;

 

class  Client

{

public Client()

{

BufferedReader br = null;

PrintWriter pw = null;

try

{

  Socket socket = new Socket("localhost",8888);//与服务器建立连接,服务器要先启

  //得到Socket的输入与输出流

  br = new BufferedReader(new InputStreamReader(socket.getInputStream()));

  pw = new PrintWriter(socket.getOutputStream(),true);

  //先写后读

  pw.println("Client:你好!");

  String data = null;

  while(true)

  {

   data = br.readLine();

   if(data!=null) break;

  }

  System.out.println(data);

}catch(Exception e)

{

e.printStackTrace();

}

finally

{

try

{

br.close();

pw.close();

}catch(Exception e)

{}

}

}

public static void main(String[] args)

{

Client c = new Client();

}

}

27谈谈final, finally, finalize的区别。

答案:final 用于声明属性,方法和类,分别表示属性不可变,注意:如果是基本类型说明变

量本身不能改变,如果是引用类型,说明它不能指向其他的对象了。但对象还是可以改变

的。方法不可覆盖,类不可继承。

finally是异常处理语句结构的一部分,表示无论是否出现异常总是执行。

finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。

28Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 
    答案:可以继承其他类或完成其他接口,在swing编程中常用此方式。
29.Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。 
    答案:Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例       

被实例化。而通常的内部类需要在外部类实例化后才能实例化。

 


30.&和&&的区别。 
    答案:&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and).

另外,&也可以用于逻辑运算,与&&的区别在于&是非短路运算符,&&是短路运

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值