java基础——关键字final、static

一、final:最终的

1、修饰类

特点:被final修饰的类不能被继承

格式:

public final class 类名

2、修饰方法

特点:被final修饰的方法不能被重写

格式:

修饰符 final 返回值类型 方法名(参数){
    方法体
    返回值
}

3、修饰局部变量

  1. 普通变量:不能被二次赋值

    格式:

final 数据类型 变量名 =
  1. 对象:地址值不能改变,但是内容可以改变!

    格式:

final 类型 对象名 = new 类名();

4、修饰成员变量

  1. 格式:
final 数据类型 变量名
  1. 特点:
    被final修饰的成员变量不能被二次赋值

  2. 注意事项
    1.要不就手动赋值
    2.要不就利用所有的构造方法初始化

例子:

public class Student {
    // 必须手动赋值,不然没有意义
    final String name;

    // 也可以在空参构造里赋值
    public Student() {
        name = "蔡徐坤";
    }

    public Student(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    // 这里不能二次赋值
/* public void setName(String name) {
        this.name = name;
    }*/

}

二、static:静态的

1、特点:

a. static修饰的成员变量可以作为共享数据(根据这个static所在的类创建出来的对象都可以共享这个static成员)
b. static修饰的成员,属于类,不属于对象,我们在调用static修饰的成员时候,就不用new对象,直接类名调用
c. static修饰的成员在进入内存的时候会优先对象存在

2、使用

修饰成员变量

格式:

static 数据类型 变量名

使用:建议类名直接调用

修饰方法

格式:

public static 返回值类型 方法名(参数){
   方法体
   返回值
}

使用:建议类名直接调用

访问特点

访问静态方法的特点

  1. 静态的不能直接访问非静态的,静态的属于类,非静态的属于对象 --> 类一旦被加载,静态的就会跟着类直接进内存,是优先于对象存在的
  • 打个比方:秦始皇不知道乾隆,乾隆知道秦始皇

  • 使用:创建对象,再调用非静态的方法

  1. 静态的能访问静态
    同类:直接调用、创建对象调用、类名调用
    不同类:创建对象、类名直接调用

  2. 非静态的能直接访问静态
    同类:直接调用、创建对象调用、类名直接调用
    不同类:创建对象、类名调用

总结:
1.只要是静态的要访问非静态的:new对象调用
2.只要是访问静态的:直接类名调用(通用)

静态代码

格式

static{
	....
}

特点
优于构造方法执行,并且运行一次

猜你喜欢

转载自blog.csdn.net/weixin_38708854/article/details/106773641