文章目录
- 前言
- 一、为什么需要静态变量?
- 二、static关键字
-
- 🍂静态变量的定义格式
- 🍂静态变量的调用格式
- 🍂静态变量和普通变量(非静态变量)的区别
-
- ⭐案例演示
- 🍂静态变量小结
- 三、静态方法
-
- 🍁什么是静态方法?
- 🍁静态方法的格式
- 🍁静态方法的调用格式
- 🍁静态方法和普通成员方法的区别
-
- ⭐案例演示
- 作者:KJ.JK
前言
本文介绍JavaEE中的静态变量、静态方法和Static关键字
🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈
🍂个人博客首页: KJ.JK
欢迎大家点赞👍收藏💖评论💬关注🔒
💖源码获取 | 💻学习交流 | 🤝商务合作 | 💨私信作者
一、为什么需要静态变量?
答: 因为成员变量会随着对象的创建而在堆一直存在,每个对象在内存中都有一份成员变量
这样子会造成每创建一个对象,就会创建对应的成员变量,浪费空间
对于共用的,多个对象共享的成员变量,使用static修饰称为静态变量,在内存中产生一份数据,不会浪费
/*
静态变量:被所有对象共用,在内存中只会产生一份数据
*/
二、static关键字
🍂静态变量的定义格式
格式: 权限修饰符 static 数据类型 变量名;
范例: public static String country;
🍂静态变量的调用格式
格式1: 使用类名访问(推荐)
范例: Student.school="清华";
格式2: 使用对象名访问(不推荐)
范例: Student stu1=new Student();
stu1.school="北大";
🍂静态变量和普通变量(非静态变量)的区别
区别:
1.定义不同
类变量(静态变量)定义时候前面要加上static
实例变量(非静态变量)不需要加
2.初始化不同
类变量(静态变量)随着类的加载而初始化
实例变量(非静态变量) 是new对象后才进行初始化
3.内存位置不同
类变量(静态变量)随着类的加载而存在于“方法区”中
实例变量(非静态变量)存储在“堆内存区”
4.调用方式不同
类变量(静态变量)通过类名调用
实例变量(非静态变量)通过对象调用
5.生命周期不同
类变量(静态变量)随着类的加载而加载,虚拟机停止运行类时,静态变量周期结束(类变量生命周期最长,随着类的消失而消失)
实例变量(非静态变量)随着对象的产生而产生,随着对象的消失而失去引用,等待垃圾回收(随着对象的消失而消失)
/*
可以将static理解为同步修改,你变我也变,改变的都是同一份数据
*/
⭐案例演示
public class Student {
public static String school;
public void show(){
System.out.println(school);
}
}
Student s1=new Student();
Student s2=new Student();
s1.school="北大";
s2.school="清华";
s1.show(); // 清华
s2.show(); // 清华
//因为school被static修饰是同一份数据,所以会被后面的值覆盖,(你变我也变),如果都没有赋值就是这个类型的默认值
🍂静态变量小结
定义格式 static 数据类型 变量名;
内存特点 随着类的加载而存在,在内存中只有一份,被所有对象共享
类名.静态变量(推荐)
访问方式
对象名.静态变量(不推荐)
使用场景 如果某个成员变量希望被共享使用,则定义成静态变量
🔥系列热门专栏🔥:
⚡《JavaEE进阶序列 | 从小白到工程师》系列文章⚡
⚡《JavaEE项目实战》系列文章⚡
⚡《JavaSwing项目合集》系列文章⚡
⚡《数据分析中的pandas》系列文章⚡
三、静态方法
🍁什么是静态方法?
使用static修饰的方法,叫做静态方法
🍁静态方法的格式
格式: 权限修饰符 static 返回值类型 方法名(参数){
方法体;
return 数据;
}
范例: public static int add(int a,int b){
int c=a+b;
return c;
}
🍁静态方法的调用格式
格式1: 类名.静态方法名(); (推荐) //在本类中调用静态方法,可以省略类名
范例: Student.method();
格式2: 对象名.静态方法名(); (不推荐)
范例: Student stu=new Student();
stu.method();
🍁静态方法和普通成员方法的区别
区别:
格式区别:
静态方法需要static关键字修饰,必须有返回类型,可以没有返回值 (只能访问静态变量,静态方法) //静态访问静态
成员方法可以任意起名,必须有返回类型,可以没有返回值 (可以访问任意变量,任意方法)
调用区别:
静态方法在本类中可以直接方法名调用,其他类中用类名.方法名调用 //show(); Student.show();
成员方法需要通过 对象名.方法名()才可以调用,可以调用多次 // stu.show();
使用注意:
静态方法,只能直接访问本类的静态成员,不能使用super、this关键字
非静态方法可以直接访问本类的所有成员
/*
tips: "this和super是属于对象范畴"的东西,而"静态和静态方法是属于类范畴的东西",比对象先出现,因为是随着类的加载而初始化
静态只能访问静态的东西
*/
⭐案例演示
public class Student {
public static void method(){
System.out.println("学习");
}
public void eat(){
System.out.println("吃饭");
}
int age;
static String name;
public static void method2(){
System.out.println(name);
//静态方法只能访问静态变量,从内存图来理解,静态变量是随着类的加载而加载,先存在,而成员变量是new对象后才产生的,所以访问不到
System.out.println(age); //报错
method(); //静态方法只能访问静态方法
eat(); //报错
System.out.println(this);
//报错,因为this代表的是当前调用类的对象,而静态方法属于类范围的东西,静态优于对象存在,不能调用
System.out.println(super);
//super代表对父类对象的引用,指向父类对象;而静态方法比对象先出现
}
//成员方法访问任意变量,任意方法
public void method3(){
eat();
method();
System.out.println(age);
System.out.println(name);
System.out.println(this);
}
}
作者:KJ.JK
文章对你有所帮助的话,欢迎给个赞或者 star,你的支持是对作者最大的鼓励,不足之处可以在评论区多多指正,交流学习
版权声明:程序员胖胖胖虎阿 发表于 2022年9月20日 上午4:08。
转载请注明:【JavaEE进阶系列 | 从小白到工程师】JavaEE中的静态变量、静态方法和Static关键字 | 胖虎的工具箱-编程导航
转载请注明:【JavaEE进阶系列 | 从小白到工程师】JavaEE中的静态变量、静态方法和Static关键字 | 胖虎的工具箱-编程导航
相关文章
暂无评论...