大家好,欢迎来到IT知识分享网。
public class Employee {
/*
* - 静态变量的默认值规则和实例变量一样。
* - 静态变量值是所有对象共享。
* - 静态变量的值存储在方法区。
* - 静态变量在本类中,可以在任意方法、代码块、构造器中直接使用。
* - 如果权限修饰符允许,在其他类中可以通过“类名.静态变量”直接访问,也可以通过“对象.静态变量”的方式访问(但是更推荐使用类名.静态变量的方式)。
* - 静态变量的get/set方法也静态的,当局部变量与静态变量重名时,使用“类名.静态变量”进行区分
*/
//私有的静态变量需要通过 类名.getTotal()来访问
private static int total;
//不私有的静态变量可以直接通过 类名.company访问
static String company;
private int id;
private String name;
//这样的块叫做非静态代码块,可用来作为多个构造器的公共代码,即在每创建一个对象时会执行一次
{
total++;
id = total;
}
public Employee() {}
public Employee(String name) {
this.name = name;
}
public static int getTotal() {
return total;
}
public static void setTotal(int total) {
Employee.total = total;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Employee {company = "+ company +", id=" + id + ", name=" + name + "}";
}
}
public class TestStaticVariable {
public static void main(String[] args) {
//静态变量的默认值与实例变量一样,此处为0
System.out.println("Employee total = " + Employee.getTotal());
//company值默认为null,每创建一个对象都会执行一次非静态代码块,即total加了两次,值为2
Employee c1 = new Employee("yangtao");
Employee c2 = new Employee();
System.out.println(c1);
System.out.println(c2);
System.out.println("Employee total = " + Employee.getTotal());
//非私有的静态变量可以通过 类名.静态变量名 来访问与赋值
Employee.company = "atguigu";
System.out.println(c1);
System.out.println(c2);
//静态变量为所有对象共有的变量,修改了其中一个对象的静态变量会影响所有对象
c1.company = "object change static";
System.out.println(c1);
System.out.println(c2);
}
}
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/29936.html