static关键字
在java中可以使用static关键字声明属性和方法。如果现在想一个属性被所有的对象所共同拥有,则可以将其声明成static类型,声明static类型的属性或方法之后属性的方法称为类方法,可以由类名直接调用。
static可以声明全局属性
1 package company.feimao.package1; 2 class Person{ 3 String name; 4 int age; 5 static String city = "上海"; 6 public Person(String n , int a) { 7 this.name = n; 8 this.age = a; 9 } 10 public void info(){ 11 System.out.println("姓名 :" + this.name + ", 年龄 :" + this.age + ", 城市 :" + this.city ); 12 } 13 } 14 public class StaticDemo01 { 15 public static void main(String args[]){ 16 Person p1 = new Person("肥猫" , 28); 17 Person p2 = new Person("猪宝宝" , 28); 18 Person p3= new Person("淘淘" , 2); 19 System.out.println("---------------修改之前----------"); 20 p1.info(); 21 p2.info(); 22 p3.info(); 23 Person.city = "卢湾区"; 24 System.out.println("---------------修改之后——---------"); 25 p1.info(); 26 p2.info(); 27 p3.info(); 28 } 29 30 }
每一个对象都拥有各自的堆栈空间,堆内存空间中保存每个对象的各自属性,但是所有的static属性是保存在全局数据区之中,所有的对象指向全局数据区中的一个内容,所以当一个内容被修改之后,所有对象的内容将全局变化。
java中有多少内存区域?
1.栈内存可以保存对象的名称(保存访问的堆内存地址)
2.堆内存,保存每个对象的具体属性
3.全局数据区,保存static类型的属性
4.全局代码区,保存所有方法的属性
一般调用static属性的时候最好使用类名称直接调用,采用“类名称.属性”的形式调用。