2012广东省Java程序员竞赛【竞赛大纲】 小巫总结
2. 定义和描述垃圾收集、安全性和Java虚拟机。
自动垃圾收集器是Java提供的一种自动解决方案。在多数情况下,它能使你从必须为应用程序添加所有内存管理逻辑的任务中解脱出来。自动垃圾收集的缺点是不能完全控制它什么时候执行或不执行。
什么是内存?内存通常是用来创建栈、堆以及Java中的常量池和方法区域的。什么是堆?堆是Java对象所在的内存部分,它是垃圾收集过程所涉及的一块内存,也是唯一一块内存。
Java垃圾收集考虑的是要确保堆有尽可能多的自由空间。这个问题的核心就是要删除Java程序运行时不可再到达的任何对象。
何时运行垃圾收集器?垃圾收集器受JVM控制,JVM决定什么时候运行垃圾收集器。
每个Java程序有一个到多个线程,每个线程都有其资金的小执行栈。
当没有线程能够访问对象时,该对象就是适合进行垃圾收集的。
垃圾收集不能保证有足够的内存,它只能保证可用内存得到尽可能高效的管理。
Java安全性主要是指java语言本身的一些特性,主要是:
1. 严格遵循了面向对象的规范。
2. 无指针运算。
3. 数组边界检查。
4. 强制类型转换。
5. 语言对线程安全的支持。
Java虚拟机(Java Virtual Machine)是运行所有Java程序的抽象计算机,是java语言的运行环境,它是java最具吸引力的特性之一。它的一非常重要的特点就是与平台的无关性。
3. 描述和使用java语言面向对象的特点。
什么是对象?对象是系统中描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的服务组成。
什么是类?类是具有相同属性和服务的一组对象的集合。它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。
面向对象有那几个重要特性?
1. 封装性
2. 继承性
3. 多态性
具体细节请参考http://blog.csdn.net/wwj_748/article/details/8066352
4. 断言机制
断言机制可以看做是java对异常处理的一种高级形式。
我们使用断言机制来为我们捕捉一些假设条件,这样我们就不必付出为异常而编写异常处理程序的代价,你可以假设一旦程序已经开发完成并全面部署,这些异常将永远不会发生。
断言只用两种使用形式:
1. assert Expression1;
2. assert Expression1 :Expression2;
详情请参考http://blog.csdn.net/wwj_748/article/details/8066419
5. 使用java的异常处理来控制程序执行和自定义异常。
什么是java异常处理机制?
异常处理是Java中唯一正式的错误报告机制,并且通过编译器强制执行。
什么是异常?
异常是程序中的一些错误,但不是所有错误都是异常,并且有些错误是可以避免的。
Java中是如果处理异常的?
通过5个关键字来处理:try、catch、finally、throw、throws。基本过程是用try语句包住要监视的语句,如果try语句块内出现异常,则会抛出异常,你的代码catch块中可以捕捉到这个异常并做出处理。还有以部分系统生成的异常在Java运行时抛出。你也可以通过throws关键字在方法上声明要抛出的异常,然后在方法内用throw抛出异常对象。Finally语句块会在方法执行return之前执行。
如何自定义异常呢?
创建一个Exception或RuntimeException的子类即可得到一个自定义类的异常。
如何使用自定义异常?
用throws关键字声明方法可能抛出自定义的异常,并用throw语句在适当的地方抛出自定义的异常。
详情请参考http://blog.csdn.net/wwj_748/article/details/8066652
6. 使用Java面向对象的特点,包括方法重载、方法覆盖、抽象类、接口、final、static和访问控制。
什么是方法重载?
方法重载指多个方法享有相同的名字,但是这些方法参数必须不同,或是参数个数不同,或是参数类型不同。返回类型不同不能用来区分重载的方法。
什么是方法覆盖?
方法覆盖也叫方法重写,子类从父类中继承方法,只修改方法内的实现,方法的签名完全相同。
什么是抽象类?
用关键字abstract修饰的类,这个类叫做抽象类。
什么是接口?
接口是抽象类的一种,只包含方法和常量的定义,而没有变量和方法的实现,其方法都都是抽象方法。
【final关键字】
final可以用来修饰类、成员方法和成员变量,但作用不同。
final修饰类,该类不能被继承。
final修饰成员方法,该方法不能被修改,即不能被重写。
final修饰成员变量,该变量为常量。
【static关键字】
static可以用来修饰类方法和类变量
类方法被称为静态方法,类变量被称为静态变量。则没有被关键字static修饰的方法为实例方法,变量为实例变量。
【访问控制】
default : 包访问权限。
public :接口访问权限,任何人都可以访问。
private :你无法访问。
protected :继承访问权限。
7. 使用java语言内在的线程机制来控制多线程。
Java中实现多线程的方法:
1. 继承Thread类,重写run()方法。
2. 实现Runnable接口。
详情参考http://blog.csdn.net/wwj_748/article/details/8067043
8. 在特定的条件下选择适合的集合类和接口。
集合是用来做什么的?
1. 将对象添加到集合。
2. 从集合中删除对象。
3. 找出一个对象(或一组对象)是否位于集合内。
4. 从集合中检索对象(不删除它)。
5. 迭代遍历集合,逐个查看每个元素(对象)。
集合框架的重点接口和类:
接口 具体实现类
Collection
Set HashSet、LinkedHashSet、TreeSet
SortedSet
List ArrayList、Vector、LinkedList
Map HashMap、Hashtable、TreeMap、 LinkedHashMap
SortedMap
Queue PriorityQueue
NavigableSet
NavigableMap
集合有4种基本形式:
1. List。事物列表(实现List的类)。
2. Set。具有唯一性的事物(实现Set的类)。
3. Map。具有唯一ID的事物(实现Map的类)。
4. Queue。按照被处理的顺序排列的事物。
【List接口】
List关心的是索引。
ArrayList。可以将它理解成一个可增长的数组。当需要快速迭代但不会做大量的插入和删除操作时,应选择ArrayList而不是LinkedList。
Vector。
LinkedList。需要快速的插入和删除时,它是一个不错的选择。
【Set接口】
HashSet。如果希望集合不具有重复值,并且当迭代遍历时不关心顺序,则可以使用这个类。
LinkedHashSet。会按照元素的插入顺序进行迭代遍历。
TreeSet。保证元素将按照元素的自然顺序进行升序排列。
【Map接口】
Map关心唯一的标识符。
HashMap。提供一种unsorted、unordered的Map。
Hashtable。是HashMap的同步版本。
LinkedHashMap。
TreeMap。
【Queue接口】
PriorityQueue。目的是创建“优先进,优先出”的队列。