java中的static关键字

static关键字

static:静态的

static修饰成员变量的特点:

1.static 修饰的成员变量是该类所有对象的共享

2.static 修饰的成员变量随着类的加载就在静态区中开辟内存了,所以优先非静态成员变量开辟内存

3.static 修饰的成员变量可以直接使用类名访问

看下面的例子:

class Student//定义了一个student类
{
	String name;
	static String country="CN";//将属性country修饰为静态成员变量
	public void show()//显示函数
	{
		System.out.println(name+","+country);//输出对象的名字和所属国家
	}
}
class Demo_1
{
	public static void main(String[] args)//main函数:程序运行的入口
	{
		student stu1=new Student();//创建对象stu1
		stu1.name="Jack";
		stu1.show();//调用show方法
		student stu2=new Student();
		stu2.name="Tom";
		stu2.show();
		student stu3=new Student();
		stu3.name="Jim";
		stu3.show();
		stu1.country="USA";//修改对象stu1的country属性
		System.out.println(stu2.country+","+stu3.country);//输出对象stu2和stu3的country属性
	}
}

java中的static关键字_第1张图片

由运行结过来看当对象的某个属性被修饰为静态时 (如本例中的属性country),则该类的所有对象的这一属性

都是一样的值,即static修饰的成员变量是多有对象的共享,所有的对象可以直接使用;然而当修改某一个对

象的这一属性值时,则其他对象的也会变为与之相同。

静态成员变量和非静态成员变量的区别:

(1).存储的数据

静态成员变量存储的是对象共享的数据

非静态成员变量存储的是每个对象特有的数据

(2).存储位置

静态成员变量是随着类的加载就在方法区中开辟内存了

非静态成员变量是随着对象的创建才在堆中开辟内存的

(3).调用方式

静态成员变量可以对象访问也可以通过类名直接访问

非静态成员变量只能通过对象访问

补充:

非静态成员变量又叫实例成员变量

静态成员变量又叫类变量

有static修饰的函数叫实例函数

无static修饰的函数叫类函数

注意:非静态的方法(函数)可以使用静态和非静态成员,而静态的方法只能使用静态的不能使用非静态的成员。













你可能感兴趣的:(java中的static关键字)