1、数组异常:
(1)数组下标越界
(2)空指针异常:java.lang.NullPointerException
(2.1)类似下例,引用对象可赋值为空,栈与堆之间地址关系断开;
boolean[] b = new boolean[3];
b=null;
System.out.println(b[0]);
(2.2)对象元素为空,调用该元素的成员与方法
1)String[] str = new String[4];
str[3]=”“;
System.out.println(str[0].toString());
2)String[][] strr1 = new String[4][];
strr1[3][0]=”xiaoming”;
2、内存中的基本结构包括:
栈stack:存放局部变量、对象的引用
堆heap:存放new出来的东西
方法区:常量池
静态域:
3、类与类之间的关系:
(1)关联关系、继承关系、聚集关系、组合关系(关联性更强)
4、java中变量访问权限:(默认的为friendly)
public 公共:
private 私有:只允许本类内部访问
protect 受保护:同一个包的类,及其子类可以访问
friendly 友好(默认的):此时只允许同一个包内的类访问
5、方法的重载(overload)
要求:同一个类中;方法名相同;参数列表不同【类型、个数】与返回值类型无关
6、匿名类对象:创建的类的对象是匿名的
只需一次调用类的对象时,可以考虑匿名类对象;
7、可变个数形参必须写在后面
8、java中参数传递机制:
(1)值传递:基本数据类型与引用数据类型的区别特别要注意
形参为基本数据类型:将实参的值(栈空间的实际的值)传递给形参的基本数据类型的变量;(原内容不变)
形参为引用数据类型:将实参的引用类型变量的值(堆空间对象实体的首地址值)传递给形参的引用类型变量;(原内容根据相关操作发生改变)
9、权限修饰符:public,protected,private,缺省
(1)类成员
修饰符 类内部 同一个包 子类 任何地方
public yes yes yes yes
protected yes yes yes
缺省 yes yes
private yes
(2)类
修饰符 同一个包 任何地方
public yes yes
default(缺省) yes
10、关于类中构造器的几点注意:
1)一旦显示地定义类的构造器,默认构造器不再提供(空参)
2)在重载的构造器中通过this显示调用当前已经重载的构造器,this(已重载构造器形参)必须放在首行
11、java只支持单继承;关键字extends
12、方法的重写: 修饰符 返回值类型 方法名 (参数列表){}
前提:有子类继承父类;父类方法对子类不适用,子类可以对父类的方法重写
规则:
(1)要求子类方法的“返回值类型 方法名 (参数列表)”与父类的方法一样;
(2)子类方法的修饰符不能小于父类方法的修饰符
(3)若父类方法抛异常,子类方法抛的异常不能大于父类的
(4)若父类中的方法定义为private访问权限,在子类中将该方法声明为default权限不叫重写(因此返回值类型什么的可以改变)
13、super:修饰属性、方法、构造器
(1)当子类中出现于父类同名的属性时,要调用父类的属性,可以通过super.此属性,子类中的属性通过this调用
(2)当子类重写父类的方法时,调用被重写的父类方法可以通过super.被重写的方法
(3)构造器:super(形参列表)—-首行,super与this两者不能共存;当构造器中不显示地调用构造器,默认调用父类的空参构造器
object:根父类
建议:在设计一个类时,尽量提供一个空参的构造器