重点知识点概要

来源:互联网 发布:电子软件采购合同 编辑:程序博客网 时间:2024/05/16 15:20

1:重写和重载
(1)方法的参数,类型必须一致(2)必须是在子类中重写(3)重写之后不能比父类抛出更多的异常(4)父类的静态方法不能
重写为非静态方法(5)父类的非静态方法不能重写为静态方法(6)父类的抽象方法可以重写为抽象方法(7)父类的抽象方法
可以重写为抽象方法(8)子类重写不能缩小访问权限(9)父类的私有方法不能被重写
重载:(1)方法名必须相同(2)方法的参数类型,参数个数,参数顺序至少有一样不同(3)返回值类型可以不同
(4)修饰符可以不同(5)抽象方法可以被重载
相同点:(1)方法名都相同 (2)都能实现在静态方法或者非静态方法 (3)都能实现在抽象或非抽象方法中
不同点:(1)重写是在子类中进行的,而重载是在同一个类中(2)重写需要参数类型必须一致,而重载要求参数类型必须不一致
(3)重写不能缩小访问权限,而重载对此没有限制(4)父类的私有方法不能被重写,而重载没有限制(5)重写只能在子类
中重写一次,而重载没有限制(6)重写的返回值类型必须一致,而重载没有限制(7)父类的静态方法不能重写为非静态方法
而重载对此没有限制
2:instanceof

  (a instanceof S) (判断a是否是S的子类或者S的对象)用于判断前面的对象是否是后面类/接口的子类实例、实现类的实例,如果是则返回true,否则返回false;
3:接口与抽象类
抽象类:(1)抽象方法包括:属性,方法,构造方法,初始化块,内部类,枚举类,其中构造方法是用于子类的调用
(2)抽象方法中不能创建实例,有抽象方法的类一定是抽象类
接口:(1)接口中包括抽象方法,常量,枚举类,内部类(2)接口可以被多继承(3)接口不能定义初始化块(4)接口不能实例化
(5)修饰符可以是public或者省略,主要看包的情况(6)接口中默认的修饰符为final,static,public
接口与抽象类的相同点:(1)接口和抽象类都不能实例化,都是处于类的顶端被用于子类继承(2)在子类继承了接口或抽象方法之后
都必须实现父类中的抽象方法。
接口与抽象类的不同点:(1)接口不能有实例方法,而抽象类中可以有抽象方法(2)一个类中可以实现多个接口,而
一个类只能继承一个抽象类(3)接口中只能定义常量,而抽象类中可以包括静态常量和普通属性(4)接口中不能包括
构造函数,而抽象类中可以包括构造函数(5)接口中不能定义静态方法,而抽象类中可以定义静态方法
(6)接口中不能含有初始化块,而抽象类中可以包含初始化块
4:final,finally,finalize
final 用于修饰类,方法,变量
常量:final类不能被继承,不能重新分配内存空间,不能被重写,但是可以被重载
1final 可以修饰静态变量,局部变量,实例变量被final修饰后为静态常量,局部常量,实例常量。
2.被final修饰的成员变量,都必须显式初始化,否则会导致编译出错,静态常量只能在定义时显式初始化
3.final变量只能赋值一次4.如果将引用类型的变量用final修饰,那么该变量只能引用一个对象,
但是可以改变对象的内容。
5:equals方法
public boolean equals()
{
}
6:toString方法  public String toString(){}
7:继承,封装,多态
8:Array与Arrays
Array 类提供了动态创建和访问 Java 数组的方法。
Array 允许在执行 get 或 set 操作期间进行扩展转换,但如果发生收缩转换,则抛出 IllegalArgumentException。
Arrays此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂
9:Collection与Collections
Collections:此类完全由在 collection 上进行操作或返回 collection 的静态方法组成。它包含在 collection 上操作的多态算法,
即“包装器”,包装器返回由指定 collection 支持的新 collection,以及少数其他内容。
10:set 与 list   Map
set:是无序的 add
list:先进先出允许元素重复 add
map:将键值映射到值的对象  无序的。键相同则被覆盖 put方法
11:ArrayList与Vector  Hashtable与HashMap
ArrayList 是线程安全不安全的  Vector是线程安全的 先进先出,可以重复
Hashtable是线程安全的,HashMap是线程不安全的,但是HashMap性能比较高,但是遇到多线程时用hashtable。
hashtable不允许有null,hashmap允许有null
12:基本数据类型互相转换

基本数据类型与String之间互相转换,子类,父类之间转换规则
byte char short int long float double boolean

13:说出5个常见的编译时异常,与5个常见的运行时异常
FileNotFoundException, IOException ,ClassNotFoundException, IllegalAccessException,ParseException(解析异常)
ClassCastException,NullPointerException,IndexOutOfBoundsException,ArithmeticException,EmptyStackException
14:Java中垃圾回收机制
System.gc();Runtime.getRuntime().gc();
15:异常处理机制的描述
try catch finally
16:写出5个常见的字节流与字符流
InputStream OutputStream FileInputStream FileOutputStream BufferedInputStream BufferedOutputStream
17:序列化相关知识
基本类型 的数据可以直接序列化
对象要被序列化,它的类必须要实现Serializable接口;如果一个类中有引用类型的实例变量,
这个引用类型也要实现Serializable接口。
Transient关键字:如果一个类中的引用类型没有实现Serializable,但该类又需要被序列化,
则可以将一个变量声明成transient,那么 在序列化的过程 中,这个变量是会被无视的。
18:throw与throws区别
throws Exception throw 异常对象
19:静态变量与实例变量
用static修饰的变量叫做静态变量,生命周期比实例变量长,调用时直接使用。实例变量分为局部变量和全局变量,
全局变量的生命周期比局部变量周期长。
20:static修饰的相关知识   static修饰的方法中不能使用this引用,静态方法中调用其它非静态方法,必须实例化。
21:break,return,continue
跳出循环语句。return:直接退出此方法,continue:跳过某个循环语句块的一次执行,执行下次循环
22:三种循环
for while  foreach
23:&&与||
24:short s = 1;s = s+1 是否正确,如果是 s += 1?
25:super与this关键字
子类引用父类中的构造方法使用:super();子类引用父类中的被屏蔽的方法和属性
super.methodName();或者super.varName;在同一个类中一个构造方法引用另一个构造方法:this();
在同一个类中引用被屏蔽的属性或者引用另外一个实例成员:
this.varName;或者this.methodName();

使用this注意:
1.一个成员直接调用另一个成员,可以省略this前缀
2.static修饰的方法中不能使用this引用
3.当this作为对象的默认引用使用时,程序可以向访问普通引用变量一样来访问这个this引用

根据this出现位置的不同,this作为对象的默认引用有两种情形:
1.构造方法中引用该构造方法执行初始化的对象
2.在方法中引用调用该方法的对象
26:构造函数,或  类  对象名 = new 类(参数)

•构造函数
–1.用来初始化类中的属性。
–2.构造函数不能手工调用,只有创建对象(new)的时候,调用相应的构造函数
–3.构造函数,无返回值,函数名与类名相同,且可以重载。
–4.默认类中,有一个空的构造函数,但是,一旦我们手工定义了构造函数,则该空的构造函数,系统不再分配。需要我们手工创建。
–5.当new 一个子类对象的时候,先调用父类的构造函数。
•关于多态和继承
–A extends B 且A中重写了B中的xxx方法
–1、声明什么类型,就调用什么类型的方法(不存在子类对象转换为父类)
•A a = new A();
•B b = new B();
•a.xxx()使用A中方法,b.xxx()使用B中方法
–2、创建什么类型,就调用什么类型的方法(存在B b = new A())
•B b = new A();
•b.yyy(),B中的方法,b.xxx()调用A中的xxx的方法。
–3、子类自动转换成父类,则父类一定可以强制转换为子类。
–B b = new A();才可以A a = (A)b;

 

27.单例类
public Class Singleton
{
 private static Singleton instance;
 private Singleton()
 {
 
 }
 public static Singleton getInstance()
 {
  if(instance==null)
  {
   instance = new Singleton();
  }
  else
  {
   return instance;
  }
 }
}
public Class Test
{
 public static void main(String [] args)
 {
  Singleton s1=Singleton.getInstance();
  Singleton s2= Singleton.getInstance();
  System.out.println(s1.equals(s2));  
 }
}