static final,static,final

一、一个类里面的(static变量,方法):类级别,所有new 的对象 全部可以使用。

   *所以当.class 文件装入内存后,就可以使用。             

二、从值的持久性顺序:

 1、static final :刚开始载入这个.class文件时设置,不随新建此类的对象(new)的值变化。

                     这是一个常量,放入常量池中。

     例如: System.out.print("hello");

public final class System {

                 public final static PrintStream out = null;

                }

 2、static(类级别):刚开始载入这个.class文件时设置。

              如果是类变量和方法:是在内存(堆)中弄一篇区域放入。哪么新建所有的对象(new Person)都可以用。

static final,static的区别:

   相同点:1》新建所有对象都可以使用(类级别)。

                2》static final  ,static 都占内存。

    不同点    static final new 一个对象时,不能改变其值

                          static:new 一个对象时,可以改变其值,保存起来,只要这个类对象活着,就一直存在,供所有对象使用。        

 3、final(对象级别,在对象初始化时生成值,之后不能修改):随着新建对象时,此值发生变化。

       一个类常量:long int  id=count++  表示在一个对象的活着的时候,可以改变它的值,哪么new 一个对象后,就可以随便改变id 值。

                       final long  id1=count++ :表示在一个对象的活着的时候,不希望改变它的值,哪么当new一个对象后,对对象进行初始化,count 加1,,不能用reference去操作这个id1值,可以统计一个类创建多少个对象。

public class test {

static int count=0;
final long  i=count++;
 
public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException
{  test t= new test();
  System.out.println("objcount:"+t.count+",i:"+ t.i);
  
  test t1= new test();
  System.out.println("objcount:"+t1.count+",i:"+ t1.i);
  
  Class t2=Class.forName("test");
  test t2_1=(test)t2.newInstance();
  System.out.println("objcount:"+t2_1.count+",i:"+ t2_1.i);
  
  Class t3=test.class;
  test t3_1=(test)t3.newInstance();
  System.out.println("objcount:"+t3_1.count+",i:"+ t3_1.i);  
}}

 结果:

     objcount:1,i:0
     objcount:2,i:1
    objcount:3,i:2
    objcount:4,i:3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值