java关键字之——static和final

1 static

static关键字的使用,可以用来修饰成员变量和成员方法,被修饰的成员是属于类的,而不是单单属于某个对象的,也就是说,既然属于类,就可以不靠创建对象来调用。

在这里插入图片描述

1.1 类变量

static修饰成员变量时,该变量称为类变量。该类的每个对象都共享同一个类变量的值。任何对象都可以改变该类变量的值,但也可以在不创建该类的对象的情况下对类变量进行操作。

定义格式:

static 数据类型 变量名;

1.2 静态方法

static修饰成员方法时,该方法称为类方法。静态方法在声明中有static,建议使用类名来调用,而不需要创建类的对象。调用方式非常简单。

定义格式:

修饰符 static 返回值类型 方法名 (参数列表){
//执行语句
}

静态方法调用的注意事项:

  1. 静态方法可以直接访问类变量和静态方法
  2. 静态方法不能直接访问普通成员变量或成员方法。反之,成员方法可以直接访问类变量或静态方法
  3. 静态方法中,不能使用this关键字
  4. 静态方法只能访问静态成员

1.3 调用格式

static修饰的成员可以并且建议通过类名直接访问。虽然也可以通过对象访问静态成员,原因即多个对象均属于一个类,共享使用同一个静态成员,但十四不建议,会出现警告信息。

格式:

//访问类变量
类名.类变量名;

//调用静态方法
类名.静态方法名(参数);

1.4 静态原理图解

static修饰的内容:

  1. 是随着类的加载而加载的,且只加载一次
  2. 存储于一块固定的内存区域(静态区),所以,可以直接被类名调用
  3. 它优先于对象存在,所以,可以被所有对象共享
    在这里插入图片描述

1.5静态代码块

静态代码块:定义在成员位置,使用static修饰的代码块{}.
位置:类中方法外
执行:随着类的加载而执行且执行一次,优先main方法和构造方法的执行。

格式:

public class ClassName{
static{
   //执行语句
}
}

注意:static关键字,可以修饰变量、方法和代码块 。在使用的过程中,其主要目的还是想在不创建对象的情况下,去调用方法。

2.final

为了避免子类随意改写父类的内容(方法重写),Java提供了final关键字,用于修饰不可改变内容。

final:不可改变。用于修饰类、方法和变量

  1. 类:被修饰的类,不能被继承
  2. 方法:被修饰的类,不能被重写
  3. 变量:被修饰的变量,不能被重新赋值

2.1 修饰类

格式如下:

final class 类名{

}

2.2 修饰方法

格式如下:

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

注意:重写被final修饰的方法,编译时会报错

2.3 修饰变量

1.局部变量——基本类型
基本类型的局部变量,被final修饰后,只能赋值一次,不能再更改。

2.局部变量——引用类型
引用类型的局部变量被final修饰后,只能指向一个对象,地址不能再改变。但是不影响对象内部的成员变量值的修改。

3.成员变量
成员变量涉及到初始化的问题,初始化方式有两种。

  1. 显示初始化:
public class User{
	final String USERANME = "张三";
	private int age;
}
  1. 构造初始化
public class User{
	final String USERNAME;
	private int age;
	public User(String username, int age){
		this.USERNAME = username;
		this.age = age;
   }
}

注意 :被final修饰的常量名称,一般都有书写规范,所有字母都大写。

猜你喜欢

转载自blog.csdn.net/xiaoyong5854/article/details/106820000