状态修饰符
final(最终态)
static(静态)
final 关键字
final 关键字是最终的意思,可以修饰成员方法,成员变量,类
final 修饰的特点:
- 修饰方法:表明该方法是最终方法,不能被重写
- 修饰变量:表明该变量是常量,不能再次被赋值
- 修饰类:表明该类是最终类,不能被继承
final 修饰局部变量:
- 变量是基本类型:final 修饰指的是基本类型的数据值不能发生改变
- 变量是引用类型:final 修饰指的是引用类型的地址值不能发生改变,但是地址里面的内容是可以发生改变的
static 关键字
static 关键字是静态的意思,可以修饰成员方法,成员变量
static 修饰的特点
① 被类的所有对象共享,这也是我们判断是否使用静态关键字的条件
② 可以通过类名调用,当然,也可以通过对象名调用,推荐使用类名调用
static 的访问特点
非静态的成员方法
- 能访问静态的成员变量
- 能访问非静态的成员变量
- 能访问静态的成员方法
- 能访问非静态的成员方法
静态的成员方法
- 能访问静态的成员变量
- 能访问静态的成员方法
总结成一句话就是:静态成员方法只能访问静态成员
main 方法格式的详细说明
public static void main(String[] args) { }
- public 被jvm调用,访问权限足够大
- static 被jvm调用,不用创建对象,直接类名访问
- void 被jvm调用,不需要给jvm返回值
- main 一个通用的名称,虽然不是关键字,但是被jvm识别
- String[] args 以前用于接收键盘录入的
- 演示args接收数据
static 的应用
工具类的特点
- 构造方法私有
- 成员用static修饰
案例:静态在工具类中的使用
package com.itheima_04;
public class ArrayDemo {
public static void main(String[] args) {
//定义一个数组
int[] arr = {12, 56, 78, 93, 40};
//需求:获取数组中最大值
// int max = arr[0];
//
// for (int i = 1; i < arr.length; i++) {
// if(arr[i] > max) {
// max = arr[i];
// }
// }
//如何调用getMax()方法 ?
//方法一:创建对象调用getMax()方法
// ArrayTool at = new ArrayTool();
// int max = at.getMax(arr);
//方法二:通过类名直接调用方法 需要在ArrayTool类中的getMax()方法加static静态修饰
int max = ArrayTool.getMax(arr);
System.out.println("数组中的最大值是:" + max);
}
}
package com.itheima_04;
public final class ArrayTool {
private static final int num = 100;
//创建一个构造方法 被 private修饰的外界无法访问 只能本类访问
private ArrayTool(){}
//创建一个获取数组最大值的方法
//public int getMax(int[] arr) {
//通过类名直接调用方法 需要在这个方法中加个静态static 来修饰
public static int getMax(int[] arr) {
int max = arr[0];
for (int i = 1; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
}