javaoo知识要点二

1、什么是多态?多态有什么特点?

多态是指可以用父类变量指向子类对象,可以用接口变量指向实现类对象。

多态的特点:相同的行为不同的表现方式,可以动态绑定子类的行为。

 

2、面向对象的特征有哪些?

继承、封装、多态、抽象

 

3、什么是抽象类?什么是抽象方法?定义抽象类的关键字是什么?

如果一个方法在定义时,只有方法定义,没有方法实现,这个方法叫做抽象方法,拥有抽象方法的类叫抽象类。抽象类是不能直接实例化的。定义抽象类的关键字是abstract

 

 

4、接口如何定义?实现接口用什么关键字?一个类实现接口必须做什么?

接口定义用interface。

实现接口用implements

一个类实现接口,必须实现接口中所有的抽象方法,否则该类只能是抽象类。

 

5、接口中定义的方法修饰符是什么?接口中定义的变量修饰符是什么?

接口中方法修饰符是 public  abstract

接口中变量修饰符是 public static final

 

6、抽象类和接口的区别是什么?

1、  抽象类可以有方法的定义(抽象方法),也可以有方法的实现(具体方法)。而接口中只能有方法的定义。

2、  抽象类中的变量是属性,而接口中的变量是public static final

3、  抽象类只能被单根继承,而接口可以多实现。

 

7、异常的API结构是怎样的?Error和Exception有什么区别?

Throwable父类,下面两个子类,Error(错误,能捕获,不能处理)和Exception(异常,能捕获,能处理)

 

8、异常的执行顺序怎样?如果在try块中有return,finally会执行吗?

先执行try块,顺序执行,如果有异常,转去catch块执行,同时中止try块中其他代码。无论是否有异常,都会执行finally内容。如果在try块或catch块有return,finally同样会执行,在跳出方法前执行。

 

9、finally是否在任何时候都会执行?

不是,在虚拟机关闭时不会执行。System.exit(0);

 

10、throw 和throws的区别是什么?

throw是语句,表示显示抛出异常对象  throw new Exception();

throws是方法修饰符,表示该方法可能要抛出某种异常,调用该方法时,就需要处理该方法抛出的异常。

 

11、异常分为几种?如何区分?

异常分为编译期异常、运行期异常。编译期异常,必须要处理,否则编译无法通过。运行期异常可处理,可不处理,所有的运行期异常都是RuntimeException的子类。

 

12、如何得到当前工作目录?

System.getProperty(“user.dir”);

 

13、String x = "abc" 和 String x = new String("abc")有什么区别?

String x = “abc”。x指向数据段中的字符串常量。

String x = new String(“abc”); x指向堆中的字符串对象。但该对象必须以对应字符串常量为模版。

 

14、String和StringBuffer的区别?

String具有长度不可以变的特性,当对字符串作添加、删除、替换会产生新对象。

而StringBuffer是缓冲区的对象,当对其进行添加、删除、替换时不会产生新对象。

 

15、如何将字符串转化为基本数据类型?

int x = Integer.parseInt(“23”);

double x = Double.parseDouble(“23.3”);

 

16、如何将日期对象进行"2011-12-10"格式化输出?如何将"2011-12-10"字符串转化为日期类型?

SimpleDateFormat s = new SimpleDateFormat(“yyyy-MM-dd”);

String  str = s.format(new Date());

Date date = s.parse(“2011-12-10”);

 

17、javaBean规范有哪些内容?

1、  有公共的无参构造方法。

2、  私有属性加上get/set方法进行访问和设置。

3、  对象是可序列化的。

 

18、什么是反射?

反射是在编译时,不清楚应该加载哪个类,类的加载是在运行期进行的。通过反射我可以对类进行加载、探知、自审。

 

19、如何得到Class对象?如何利用Class对象产生该类的对象?

类名.class          对象名.getClass()       Class.forName(“类的全路径”)

 

Class对象.newInstance();

 

20、线程和进程的区别?

进程有自己独立的内存空间,进程一开启就会消耗内存。而线程是进程内部的顺序控制流。多个线程共享一个进程内存空间。

 

21、创建线程有几种方式?如何启动线程?调用start()和调用run()的区别?

创建线程:1、继承Thread类,重写run()   2、实现Runnable接口,实现run()。

启动线程:start();

启动线程用start,这时会在主线程之外产生新的线程,多个任务同时执行。而直接调用run(),不会产生新线程。

 

 

22、线程有几种状态?

新建     就绪    运行     死亡      休眠    等待    挂起   阻塞

 

23、什么是线程优先级?分为几级?

当两个或两个以上的线程同时要求启动时,优先级高的线程优先得到CPU的使用权。优先级分为10级,数字越大,优先级越高。

 

24、什么是线程同步?同步会造成什么结果?

线程同步是指当两个或两个以上的线程同时访问同一个资源,为了保护数据的安全,只允许在同一时间一个线程去访问。

线程同步会造成1、数据安全  2、效率低下。

 

25、wait和sleep的区别?

1、  sleep在Thread中定义,而wait在Object中定义。

2、  wait只能放在同步方法或同步块中,而sleep可以放在任何位置。

3、  wait会释放对象锁,而sleep不会。

4、  wait需要唤醒线程才会继续执行,而sleep在休眠结束后,自动恢复运行。

 

26、集合的作用是什么?集合框架的API结构是怎样的?

集合的作用是对数据进行存储、检索、操作、传输。

集合框架分为:接口、实现类、算法。

接口:Collection为父接口,下面两个子接口:List、Set,另外还有Map接口

 

27、List、Set、Map集合各自有什么特点?

List特点:线性,元素可以重复

Set特点:元素不可重复

Map特点:键值对,一个元素包含两个对象。键不能重复。

 

28、集合元素如何添加?如何删除?如何遍历?

添加:add()   put()

删除:remove()

 

遍历:

1、  for(int  i =0;i<list.size();i++){

Object  obj = list.get(i);

}

 

2、  Iterator  it = list.iterator();

while(it.hasNext()){

        Object obj = it.next();

}

 

3、  for(Object  obj  :  list){

}

 

29、List接口实现类ArrayList、Vector、LinkedList的区别?HashMap和Hashtable区别?

ArrayList底层由数组实现。是连续的空间,遍历、尾部追加速度快,中间插入、删除速度慢。

Vector底层也由数组实现。是线程安全的类。

LinkedList是不连续空间,中间插入、删除速度快,遍历速度慢。

 

HashMap允许空键和空值,线程不安全。Hashtable不允许空键和空值,线程安全。

 

30、集合如何进行排序?

Collections.sort(list,Comparator c);

posted @ 2017-06-04 22:06  萝卜撞地球  阅读(66)  评论(0)    收藏  举报