java使⽤static修饰成员变量static(静态\修饰符)
1. static修饰成员变量:如果有数据需要被共享给所有对象使⽤时,那么就可以使⽤static修饰。
静态成员变量的访问⽅式:
⽅式1:可以使⽤对象进⾏访问。
格式:对象.变量名。
⽅式⼆:可以使⽤类名进⾏访问。
格式:类名.变量名;
注意:
1. ⾮静态的成员变量只能使⽤对象进⾏访问,不能使⽤类名进⾏访问。
2. 千万不要为了⽅便访问数据⽽使⽤static修饰成员变量,只有成员变量的数据是真正需要被共享的时候
才使⽤static修饰。
static修饰成员变量的应⽤场景:如果⼀个数据需要被所有对象共享使⽤的时候,这时候即可好实⽤static修饰。class Student{
String name;
//使⽤了static修饰country,那么这时候country就是⼀个共享的数据。
static String country = "中国"; //国籍
//构造函数
public Student(String name){
this.name = name;
}
}
class Demo9 {static修饰的变量
public static void main(String[] args)
{
Student s1 = new Student("张三");
Student s2 = new Student("陈七");
System.out.println("姓名:"+s1.name+" 国籍:"+ s1.country); // ⼩⽇本
System.out.println("姓名:"+s2.name+" 国籍:"+ s2.country); // ⼩⽇本
}
}
如果代码中的static String country 去掉static修饰,则最终s1.country=" ⼩⽇本",s2.country=" 中国"
/*
需求:统计⼀个类被使⽤了多少次创建对象,该类对外显⽰被创建的次数。
*/
class Emp{
//⾮静态的成员变量。
static int count = 0; //计数器
String name;
//构造代码块
{
count++;
}
public Emp(String name){
this.name = name;
}
public Emp(){ //每创建⼀个对象的时候都会执⾏这⾥的代码
}
public void showCount(){
System.out.println("创建了"+ count+"个对象");
}
}
class Demo11
{
public static void main(String[] args)
{
Emp e1 = new Emp();
Emp e2 = new Emp();
Emp e3 =new Emp();
e3.showCount();
}
}
静态的成员变量与⾮静态的成员变量的区别:
1. 作⽤上的区别:
1. 静态的成员变量的作⽤共享⼀个 数据给所有的对象使⽤。
2. ⾮ 静态的成员变量的作⽤是描述⼀类事物的公共属性。
2. 数量与存储位置上的区别:
1. 静态成员变量是存储⽅法 区内存中,⽽且只会存在⼀份数据。
2. ⾮静态的成员变量是存储在堆内存中,有n个对象就有n份数据。
3. ⽣命周期的区别:
1. 静态的成员变量数据是随着类的加载⽽存在,随着类⽂件的消失⽽消失。
2.⾮静态的成员数据是随着对象的创建⽽存在,随着 对象被垃圾回收器回收⽽消失。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论