static关键字
1.修饰什么
static 可一修饰 类/对象、方法和属性
static 静态的意思
被static修饰的对象、类方法、属性都叫静态成员
内存图解
每一个程序运行时,只会开辟一个方法区,而static的作用就是将所修饰的对象、方法、属性存在这样一个程序一执行,就只存在一个的方法区里面
2.被修饰的静态方法、静态变量和普通的有什么区别
因为静态成员是存在方法区的,程序一执行就会为方法区内的变量、方法创建内存空间
那么
(1)静态变量有什么特点?
他从程序性一开始就创建了内存空间,所以可以在程序的任何一个地方调用这个方法,
所以可以在程序的任何一个地方调用这个方法
例子:
即在方法中给局部变量加上staitic修饰,那么他的内存空间是存储在共享的方法区中,那么着呢个程序都可以调用
变量的生存周期从,随方法入栈运行而生成,随方法出栈而回收----------------------->随程序执行而生成,程序结束而回收
那么普通的定义的全局变量和静态全局变量又有什么不同呢?
public class Test{
public static void main(String[] args){
int a = 1; //普通全局变量
static int b = 1; //静态定义全局变量
}
}
这两个都是存在方法区中的本质上没有任何区别,但区别是一个程序如果有多个源文件,那么在其他源文件也能通过类名.变量名调用全局变量
而static是限制这个全局变量只能在这个文件里面被调用,相当于多加了一层限制
(2)静态方法与普通方法
static方法作用域只在本文件中,为内部函数
且被static修饰的方法,可以直接调用方法名使用,也可以通过实例化一个对象,在通过对象.方法名使用
普通方法:
public class Test1 {
public static void main(String[] args) {
Test1 test1 = new Test1();
Test1.methon(); //实例化对象,在通过对象调用它的方法
}
public void methon() {
System.out.println("*************");
}
}
静态方法:
public class Test1 {
public static void main(String[] args) {
Test1 test1 = new Test1();
test1.methon(); //实例化对象调用
methon(); //直接方法名调用
}
private static void methon() {
System.out.println("*************");
}
}
注意:static修饰的方法是内部方法,不能被同一程序程序的其他类调用