4.java基础-static

98 阅读2分钟

☆static关键字

修饰成员变量和成员方法

static关键字特点

1.随着类的加载而加载 2.优先于对象存在 3.被类的所有对象共享,可以通过类名调用。

static关键字注意事项

在静态方法中是没有this关键字。 静态方法只能访问静态的成员变量和静态的成员方法,原因是受生命周期的限制。

什么时候用静态?

A:当成员被所有对象共享,可以复用,比如常量。 B:工具类。

静态的内容存在于方法区。

package study.staic;

/*
	定义一个人类
	
	姓名和年龄都是变化的,这个我能接收,因为每个人的姓名和年龄是不同的。
	但是,我们现在选取的几个人都是中国人,他们的国籍是一样的。
	一样的国籍,我每次创建对象,在堆内存都要开辟这样的空间,
	我就觉得有点浪费了。怎么办呢? 
		针对多个对象有共同的这样的成员变量值的时候,
		java就提供了一个关键字来修饰:static。
*/
public class Person {
	//姓名
	String name;
	//年龄
	int age;
	//国籍
	String country;
	
	public Person(){}
	
	public Person(String name,int age) {
		this.name = name;
		this.age = age;
	}
	
	public Person(String name,int age,String country) {
		this.name = name;
		this.age = age;
		this.country = country;
	}
	
	public void show() {
		System.out.println("姓名:"+name+",年龄:"+age+",国籍:"+country);
	}
}

class PersonDemo {
	public static void main(String[] args) {
		//创建中国人
		Person p1 = new Person("邓丽君",16,National.CHINA);
		//创建中国人
		Person p2 = new Person("杨幂",22,National.CHINA);
	   //创建美国人
		Person p3 = new Person("凤姐",20,National.AMERICA);
		p1.show();
		p2.show();
		p3.show();
	}
}

☆静态变量和成员变量的区别

所属对象不同

静态变量属于类,所以也称为为类变量。 成员变量属于对象,所以也称为实例变量(对象变量)。

内存中位置不同

静态变量存储于方法区的静态区。 成员变量存储于堆内存。

内存出现时间不同

静态变量随着类的加载而加载,随着类的消失而消失。

成员变量随着对象的创建而存在,随着对象的消失而消失。

调用不同

静态变量可以不用创建对象通过类名调用,也可以通过对象调用。

成员变量只能通过对象名调用。