1、可以修饰成员变量和成员方法
2、static关键字特点
随着类的加载而加载(例如main方法)
优先于对象存在
被类的所有对象共享:这也是我们判断是否使用静态关键字的条件
可以通过类名调用,也可以通过对象名调用,推荐使用类调用,静态内容修饰的一般称其为:类成员
class Student{
int
num=10;
static
int
num1=20;
}
public
class Test2 {
public
static
void main(String[]
args) {
//
TODO
Auto-generated method stub
Student
st=
new Student();
System.
out.print(
st.
num);
System.
out.print(Student.
num1);
//类名调用静态变量
System.
out.print(
st.
num1);
//对象调用静态变量
}
}
3、static
关键字注意事项
(1)在静态方法中是没有
this
关键字的
静态是随着类的加载而加载,this是随着对象的创建而存在的
静态比对象先存在
(2)静态方法只能访问静态的成员变量和静态的成员方法
静态方法:
成员变量:只能访问静态成员变量
成员方法:只能访问静态成员方法
非静态方法:
成员变量:可以访问非静态成员变量和静态成员变量
成员方法:可以访问非静态成员方法和静态成员方法
class Student{
int
num=10;
static
int
num2=20;
public
void show(){
System.
out.println(
num);
//隐含的调用成员变量
System.
out.println(
this.
num);
//明确的调用成员变量
System.
out.println(
num2);
//非静态方法可以访问静态变量
}
public
static
void method(){
// System.out.println(
num
);//无法从静态上下文中访问非静态变量
// System.out.println(this.num);//无法从静态上下文中访问非静态变量
System.
out.println(
num2);
//静态方法可以访问静态变量
}
}
public
class Test2 {
public
static
void main(String[]
args) {
//
TODO
Auto-generated method stub
Student
st=
new Student();
st.show();
st
.
method
();
}
}
4、静态变量和成员变量的区别
(1)所属不同
静态变量属于类,所以也称为为类变量
成员变量属于对象,所以也称为实例变量
(
对象变量
)
(2)内存中位置不同
静态变量存储于方法区的静态区
成员变量存储于堆内存
(3)内存出现时间不同
静态变量随着类的加载而加载,随着类的消失而消失
成员变量随着对象的创建而存在,随着对象的消失而消失
(4)调用不同
静态变量可以通过类名调用,也可以通过对象调用
成员变量只能通过对象名调用