静态域与静态方法

来源:互联网 发布:阿里云 网站端口 编辑:程序博客网 时间:2024/05/16 09:55

一.静态域

  每一个对象对于所有的实例域都有一份自己的拷贝,比如给每个Person赋一个实例域age,则一百个Person对象就有一百个实例域age,但是只有一个静态域air,即使没有创建Person对象,静态域air也存在,它属于类。

<span style="font-size:12px;">package com.wh.view;public class Person { int  age; static int air;static{air=60;}public void Slefadd(){air+=1;age+=1;}public Person(int age){this.age=age;}  public static void main(String[] args) {// TODO Auto-generated method stub   Person p1=new Person(18);     p1.Slefadd();   Person p2=new Person(22); System.out.println("p2的air值为:"+p2.air+" p2的年龄为:"+p2.age);}}</span>

如上代码,我们实例化了p1,p2两个人类,并调用p1.Slefadd()方法自加,然后打印p2的信息 

结果为:p2的air值为:61 p2的年龄为:22 由此可见 air静态域是共享的,而实例域是每个对象独有的。



二.静态方法

   静态方法是一种不能向对象实施操作的方法。

package com.wh.view;public class Person { int  age; static int air;static{air=60;//没有实例化前,这段域就加载了  会先在控制台打印出来System.out.println(" 先分配静态对象的空间,内存空间上是固定的 ");}public static void Slefadd(){//this.age=19;  报错 不能使用this super 表对象的//show();  报错 不能调用非静态方法,能调用静态的方法//age=20;  报错  不能再静态方法中访问实例域,但是可以访问自身类中的静态域air=50;//right}public void show(){System.out.println("我是非静态方法");}public Person(int age){this.age=age;}  public static void main(String[] args) {// TODO Auto-generated method stub   Person p=new Person(18);   Person.air=22;//直接用类名调用   Person.Slefadd();//直接用类名静态方法   System.out.println(p.air);}}



java静态对象便捷处


1.静态对象的数据在全局是唯一的,一改都改。修改他的任何一处地方,在程序所有使用到的地方都将会体现到这些数据的修改。
2.引用方便。直接用 类名.静态方法名  或者  类名.
3.static final用来修饰成员变量和成员方法,可简单理解为“全局常量”。对于变量,表示一旦给值就不可修改;对于方法,表示不可覆盖。

j

0 0
原创粉丝点击