JAVA中的static关键字

用static声明的属性或方法放在内存中的全局数据区,归类所有或者说归所有的对象所有,不需要经过对象的实例化,直接用类名.的方式调用。通过Person1和Person2代码体会一下static的作用。

public class Person1{

private String name;

private int age;

private String city;

public void setName(String name){

this.name=name;

}

public String getName(){

return this.name;

}

public void setAge(int age){

this.age=age;

}

public int getAge(){

return this.age;

}

public void setCity(String city){

this.city=city;

}

public String getCity(){

return this.city;

}

public Person1(String name,int age){

this.name= name;

this.age= age;

}

}

public class Person2{

private String name;

private int age;

private static String city;

public void setName(String name){

this.name=name;

}

public String getName(){

return this.name;

}

public void setAge(int age){

this.age=age;

}

public int getAge(){

return this.age;

}

public static void setCity(String city){

this.city=city;

}

public String getCity(){

return this.city;

}

public Person2(String name,int age){

this.name= name;

this.age= age;

}

}

public class test1{

public static void main(String args[]){

Person1 p1 = new Person1("张三",10);

Person1 p2 = new Person1("李四",12);

p1.setCity("天津");

p2.setCity("天津");

Person2  p3 = new Person2("张三",10);

Person2 p4 = new Person2("李四",12);

Person2.setCity("天津");

}

}

所有人的城市都一样的时候,代码应该写成Person2那样,当Person1中的城市发生变化,生成了多少对象就要写多少代码来修改城市的变更,当写成Person2时,只需要修改类的这一属性即可,需要注意的是,这时如果不是通过类Person2.setCity("天津")来修改,而是通过某一对象p3.setCity("天津")来修改,可以达到一样的效果,所有对象的city属性都跟着改变,但是那样写不符合规范。

另外需要注意的是,所有静态方法只能操作静态成员,不能操作非静态成员,因为静态方法可以不经过类的实例化直接通过类名访问,试想,如果,静态方法可以访问非静态成员,则不需要经过类的实例化也可以访问非静态成员,会造成内存的混乱。

下面说一说static的应用,用static可以统计一个类实例化了多少个对象,代码如下:

class Person{

private String name;

private static int count;

public Person(){

count++;

}

  public  void getConut(){

system.out.println(this.count);

}

}

public class test{

public static void main(String args[]){

Person p1=new Person();

Person p2=new Person();

Person p3=new Person();

Person p4=new Person();

}

}

此段程序打印出的结果是1 2 3 4统计的是类实例化对象的个数。

也可通过static描述的属性来自动的给属性赋值。

class Person{

private String name;

private static int count;

public String getName(){

return this.name;

}

public Person(){

count++;

this.name="Num"+count;

}

public Person(String name){

this.name=name;

}

}


此文的实例和思想都来自于魔乐科技的java视频,很基础的视频,建议想好好扎实java基础的盆友看一遍。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值