2022-7-27 第七组 代码块 与 static
1.代码块
1.1局部代码块
1.2构造代码块
构造代码块是定义在类中成员位置的代码块
1.3静态代码块
静态代码块是定义在成员位置,使用static修饰得代码块
1.4区分每种代码块的特点
1.4.1局部代码块
以”{}”划定的代码区域,此时只需要关注作用域的不同即可
方法和类都是以代码块的方式划定边界的
1.4.2构造代码块
优先于构造方法执行,构造代码块用于执行所有对象均需要的初始化动作
每创建一个对象均会执行一次构造代码块。
1.4.3静态代码块:
它优先于主方法执行、优先于构造代码块执行,当以任意形式第一次使用到该类时执行。
该类不管创建多少对象,静态代码块只执行一次。
可用于给静态变量赋值,用来给类进行初始化
2.static
当在定义类的时候,类中都会有相应的属性和方法。而属性和方法都是通过创建本类对象调用的。 我们可以通过static关键字来实现调用方法,static它是静态修饰符,一般用来修饰类中的成员。
2.1静态的特点
被static修饰的成员变量属于类,不属于这个类的某个对象。(也就是说,多个对象在访问或修改static修饰的成员变量时,其中一个对象将static成员变量值进行了修改,其他对象中的static成员变量值跟着改变,即多个对象共享同一个static成员变量)
被static修饰的成员可以并且建议通过类名直接访问 访问静态成员的格式:
类名.静态成员变量名
类名.静态成员方法名(参数)
静态的加载优先于对象,随着类的加载而加载
2.1.1静态变量:
静态变量又称为类变量,也就是说这个变量属于类的,类所有的实例都共享静态变量,可以直接通过类名来访问它;静态变量在内存中只存在一份。
实例变量: 每创建一个实例就会产生一个实例变量,它与该实例同生共死。
2.1.2静态方法
静态方法在类加载的时候就存在了,它不依赖于任何实例。所以静态方法必须有实现,也就是 说它不能是抽象方法(abstract)
2.2静态优点:
对对象的共享数据提供单独空间的存储,节省空间,没有必要每一个对象都存储一份
可以直接被类名调用,不用在堆内存创建对象
静态成员可以通过类名直接访问,相对创建对象访问成员方便
2.3静态的缺点:
访问出现局限性。(静态虽好,但只能访问静态)
2.4初始化顺序
静态变量和静态语句块优先于实例变量和普通语句块,静态变量和静态语句块的初始化顺序取决于它们在代码中的顺序。
存在继承的情况下,初始化顺序为:
父类(静态变量、静态语句块)
子类(静态变量、静态语句块)
父类(实例变量、普通语句块)
父类(构造函数)
子类(实例变量、普通语句块)
子类(构造函数)
2.5箭头函数:JDK8的新特性
函数式接口:如果一个接口只有一个抽象方法,这个接口就称为函数式接口。
可以用注解@FunctionalInterface标识。
1、有参数,有返回值。
(i,j) -> {
return i + j;
}
如果方法体只是一句返回值(i,j) -> i+j
2、有参数,无返回值
(i,j) -> {
// 方法体
}
如果方法体只有一句话(i,j) -> 方法体的一句话
3、无参数
()->{
方法体
}
3.总结:
static:是一个关键字,用于修饰成员变量和成员方法
static的特点:
被所有的对象所共享
可以使用类名调用
静态的加载优先于对象
随着类的加载而加载
静态方法:
可以调用静态的成员变量
可以调用静态的成员方法
不可以调用非静态成员变量
不可以调用非静态成员方法
静态方法只能调用静态的成员
非静态方法:
可以调用静态的成员变量
可以调用静态的成员方法
可以调用非静态的成员变量
可以调用非静态的成员方法
本文来自博客园,作者:阿萨德菩提子,转载请注明原文链接:https://www.cnblogs.com/ychptz/p/16525056.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)