final:
- 当不希望父类的某些方法被子类覆盖时可以用final关键字修饰【区别于private,private修饰的不能被继承,而final的可以被继承但是不能被重写】
- 当不希望类的某个变量的值被修改,可以用final修该,可以用final修饰【区别于static,static修饰的变量是可以被该类所有的实例共享的,可以访问和修改,而final修饰的量是被所有实例允许访问但是不允许修改】
- 当不希望类被继承时可以在类的修饰符中添加final进行修饰final就是为了满足以上三个要求的。
简而言之:final方法继承不重写,final变量恒定无法被修改,final类无法被继承
final变量在定义时赋值,否则之后不能赋值,称之为常量
数组:
定义
1数据类型 数组名[]=new 数据类型[数组长度]
2数据类型[] 数组名=new 数据类型[数组长度];
3数据类型[] 数组名;
数组名=new 数据类型[数组长度];
4数据类型[] 数组名={元素1,元素2,元素3,元素…};
int age=new int[90];
int arrayLength=age.length;
数组注意事项:
- 数组是定长的,一旦创建无法修改长度;数组在定义的时候必须指定长度。
- 数组是用来保存同一种类型的元素的
- 数组名是指向首个元素的首地址【头部】
地址寻址,数组名数字指向的是分配的空间的offset,0的时候指向0_offset即第一个元素。n的时候指向n个offset的开头,就是第n+1个元素。
对象数组:
类名称 对象数组名[] = new 类名称[长度];
即平常我们使用的是int之类的类型 而此处我们使用的是我们定义的class类
在声明对象数组后 ,必须对每个数组成员进行实例化话 才能直接使用,否则报空指针异常!
Person[] ps = new Person[3]; // 声明一个对象数组,里面有三个对象
for (int x = 0; x < ps.length; x++) {
System.out.print(ps[x] + " "); // 循环输出
}
// 创建3个人,并实例化
Person p1 = new Person("jerry", 18);
Person p2 = new Person("tom", 20);
Person p3 = new Person("rose", 25);
ps[0] = p1; // 实例化第一个元素
ps[1] = p2; // 实例化第二个元素
ps[2] =p3; // 实例化第三个元素
class Person{
public Person(String name,int age){
}
}
类名称 对象数组名[] = null;
对象数组名 = new 类名称[长度];
引自:https://blog.csdn.net/lxxiang1/article/details/82320720
Person ps[] = { new Person("jerry", 18), new Person("tom", 20),
new Person("rose", 25)};
静态初始化