一、static关键字
1、概念
static关键字即静态修饰符,并且标识成员可以被类直接调用,如我们的主方法public static void main(){}就可以直接用类名来调用带有static关键字的属性和方法。
2、static关键字的应用方面(五种)
- 静态成员变量(在数据类型前加static)
- 静态成员方法(在方法访问修饰符后加static)
- 静态代码块 如:static{ } 代码块中的内容具有最高优先级
- 静态内部类 如:在类里面的类可以加static
- 静态导包 (可以省略包名,也可以省略静态方法/字段所在类的类名。)
3、用static修饰的调用
static关键字修饰的属性和方法如何调用:
属性:类名.属性名
方法:类名.方法名
4、static与非static之间的区别
区别1
- static修饰的成员是随着类的加载而加载(优先)
- 非static成员是随着对象的创建而加载
区别2
- 静态方法|静态代码块只能调用静态成员,非静态成员是不能直接调用的,创建对象(不能使用this关键字)
- 非静态方法可以直接调用非静态成员,也可以调用静态成员.类的对象进行调用静态成员
区别3
- 静态成员对于多个对象而言是共享的
- 非静态成员对于多个对象是彼此独立的
二、封装
1、概念
把类的公有属性定义在内部的过程被称之为封装。为了保证字段的隐私性: 我们选择使用private修饰符修饰变量。
2、get/set方法
生成get set的快捷键:alt+shift+s 点击R键 选择对应的字段 生成get/set方法
声明对应的get/set方法对变量的读写操作提供支持
3、如何设置不定常参数
方法: 类型…参数名
语法: 不定长参数的要求:必须写在参数列表的末尾
三、递归函数
递归函数在一定程度上可以理解为循环,它具有重复做相同操作的性质,所谓递归函数即自己调用自己本身的方法。
注意!!:递归算法要求一定要判断何时结束!否则会无限循环至内存溢出。
斐波那契数列
//递归方法实现斐波那契数列
public static int fibonacci(int a) {
if (a==1||a==2) {
return 1;
}else {
return fibonacci(a-1)+fibonacci(a-2);
}
}
图示:
//循环方法实现斐波那契数列
public static void fibonacci1(int a) {
int a1 = 1;
int a2 = 1;
System.out.print(a1 + " "+a2 + " ");
int c = 0;
for (int i = 1; i <= a-2; i++) {
c = a1 + a2;
System.out.print(c + " ");
a1 = a2;
a2 = c;
}
}