目录
一、static关键字
1.概述:静态关键字
2.使用
a.修饰一个成员变量
b.修饰一个方法
3.调用静态成员:类名直接调用(不用new对象)
4.静态成员特点:
5.static修饰成员的访问特点
6.静态成员在开发中的使用场景
二、可变参数
1.定义格式
2.位置
3.注意
4.可变参数应用
三、递归
1.概述
2.分类
3.注意
4.递归应用
一、static关键字
1.概述:静态关键字
2.使用
a.修饰一个成员变量
static 数据类型 变量名
b.修饰一个方法
修饰符 static 返回值类型 方法名(形参){
方法体
return 结果
}
3.调用静态成员:类名直接调用(不用new对象)
4.静态成员特点:
a.静态成员属于类成员,不属于对象成员(非静态的成员属于对象成员)
b.静态成员会随着类的加载而加载
c.静态成员优先于非静态成员存在在内存中
d.凡是根据静态成员所在的类创建出来的对象,都可以共享这个静态成员
5.static修饰成员的访问特点
a.在静态方法中能直接访问非静态成员吗?
不能 (秦始皇-康熙),需要new对象
b.在非静态方法中能直接访问静态成员吗?
能,同类直接调用,或者类名调用。不同类需要类名调用。
c.在静态方法中能直接访问静态成员吗?
能,同类直接调用,或者类名调用。不同类需要类名调用。
d.在非静态方法中能直接访问非静态成员吗?
能,同类直接调用,或者new对象调用,不同类new对象调用。
6.静态成员在开发中的使用场景
问题1:可否把所有成员都定义成静态的?
不能,类加载都进内存,占用内存过大。
问题2:静态成员什么时候定义?
抽取工具类的时候可以把工具类中所有成员都定义成静态的。
问题三:什么时候定义工具?
代码反复实现且相同,功能一样,可以抽取出来当作工具类。
二、可变参数
1.定义格式
数据类型...变量名
2.位置
方法参数位置,只明确了参数类型,但是不明确参数个数,此时就可以定义成可变参数
3.注意
a.可变参数的本质是一个数组
b.参数位置不能连续写多个可变参数,而且可变参数和其他普通参数一起使用时,可变参数需要放到参数列表最后
public class Demo01Var {
public static void main(String[] args) {
sum(1,2,3,4,5);
}
public static void sum(int...arr){
int sum=0;
for (int i = 0; i < arr.length; i++) {
sum+=arr[i];
}
System.out.println(sum);
}
}
4.可变参数应用
a.字符串拼接
三、递归
1.概述
方法内部自己调用自己
2.分类
a.直接递归
public static void method(){
method();
}
b.间接递归
A(){
B()
}
B(){
C()
}
C(){
A()
}
3.注意
a.递归必须有出口,否则内存溢出
b.递归即使有出口,递归次数不要太多
4.递归应用
a.递减输出
b.阶乘
c.斐波那契数列