## static 关键字详细解析
static 关键字(重点)
基本概念
-
静态成员
使用static关键字修饰成员变量表示静态的含义,此时成员变量由对象层 级提升为类层级,也就是整个类只有一份并被所有对象共享,该成员变 量随着类的加载准备就绪,与是否创建对象无关
-
图示展示
-
没加static 关键字
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fzGoGuRG-1625790276510)(C:\Users\Administrator\Desktop\拉钩教育Java笔记\images\static关键字和继承\01 static关键字的由来.png)]
-
加static 关键字
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FbFaxa7m-1625790276512)(C:\Users\Administrator\Desktop\拉钩教育Java笔记\images\static关键字和继承\02 static关键字的作用.png)]
-
-
static关键字修饰的成员可以使用引用.的方式访问,但推荐类名.的方式
代码演示
public class Student{ public static int id; // 声明一个静态变量表示学号 private static String name; // 声明一个静态变量表示 姓名 // 省略getter 和 setter方法 public static void show(){ System.out.println("我的学号是 " + getId() + "我的姓名是 " + getName()); } public static void main(String[] args) { Student.id = 1001; // 调用静态属性 // Student.name = "张三"; 私有属性不能被直接调用 只能通过getter和setter方法或者构造方法 Student.show(); // 调用静态方法 } }
使用方式
-
在非静态成员方法中既能访问非静态的成员又能访问静态的成员。
(成员:成员变量 + 成员方法, 静态成员被所有对象共享)
public class Student{ private int id; // 隶属于对象层级 即使每一个对象都独有一份 private static String name; // 隶属于类层级 所有对象共享一份 public void show(){ System.out.println(id); System.out.println(name);// 静态成员被所有对象共享 } }
-
在静态成员方法中只能访问静态成员不能访问非静态成员
(成员:成员变量 + 成员方法, 因为此时可能还没有创建对象)
-
在以后的开发中只有隶属于类层级并被所有对象共享的内容才可以使用 static关键字修饰。(不能滥用static关键字)
构造块和静态代码块(熟悉)
-
构造块:在类体中直接使用{}括起来的代码块。
public class Student{ { 代码块 } }
-
注意事项
-
每创建一个对象都会执行一次构造块
-
构造块的执行性顺序在构造方法前面
-
当需要在构造方法体之前需要执行部分代码 则需要使用构造块
例如 对成员变量统一初始化操作
-
-
-
静态代码块:使用static关键字修饰的构造块
public class Student{ static{ 代码块 } }
-
注意事项
- 静态代码块随着类加载时执行一次
- 静态代码块 执行在构造块之前
- 由于只执行一次 所以经常用来做资源申请(加载数据库的驱动包)
main 方法
-
语法格式:
public static void main(String[] args){ }
-
讲解
public 权限修饰符 公共的
static 静态的方法
void 返回值类型 空
main 方法名
String[] args 参数列表 表示一维数组的字符串类型
如果跟 main方法传参 由于main方法是由于jvm调用的所有 如果想跟main传参 在java 类名 参数1 参数2 …