java 静态变量实例化_java静态变量和实例变量

1、Static静态变量

Static是静态修饰符。

在程序中任何变量或者代码都是在编译时,由系统自动分配内存来存储的,而所谓静态就是指在编译后分配的内存会一直存在,直到程序推出时才会释放内存空间。

在java程序里,所有东西都是对象,而对象的抽象就是类,对于一个类而言,如果要使用他的成员(成员指类中的函数、变量)

普通情况:必须先实例化对象后才能通过对象的引用才能访问这些成员

例外:该成员是用Static声明的    (这里所讲排除了类的访问控制)

//未声明static

classClassA{intb;public voidex1(){

}

}classClassB{voidex2{inti;

ClassA a= newClassA();

i= a.b; //这里通过 对象引用 访问成员变量b

a.ex1; //这里通过 对象引用 访问成员函数b

}

}//声明为static

classClassA{static int b; //静态变量

static voidex1(){

}

}classClassB{voidex2{inti;

ClassA a= newClassA();

i= ClassA.b; //这里通过 类 访问成员变量b

ClassA.ex1; //这里通过 类 引用访问成员函数b

}

}

通过以上两种比较,就可以知道static用来修饰类成员的主要作用,在java类库当中有很多类成员都声明为static,可以让用户不需要实例化对象就可以引用成员,最基本的有Integer.praseInt(),Float.ParseFloat()等等用来把对象的类型转化为所需要的基本数据类型。

这样的变量和方法  又叫 类变量 和 类方法。

static修饰后的变量的值。被static修饰后的成员,在编译时由系统分配一块内存空间,直到程序停止运行才会释放。那么就是说该类的所有对象都会共享这块内存空间。

classTStatic{static inti;publicTStatic(){

i= 4;

}public TStatic(intj){

i=j;

}public static voidmain(String args[]){

TStatic t= new TStatic(5); //声明对象引用,并实例化

TStatic tt = new TStatic(); //同上

System.out.println(t.i);//4

System.out.println(tt.i);//4

System.out.println(t.i);//4

}

}

在这段代码里面 TStatic 类 有一个 static 的 int 变量 i,

有两个构造函数(与类名同名的、且不带返回值的函数叫做构造函数),第一个初始化i 为4,第二个用于初始化 i 为传进函数函数的值,在mian函数中所传的值是5,

在程序中首先声明对象t,然后调用带参数的构造函数实例化对象,此时对象t的成员变量i的值是5,

接着声明对象tt,调用无参数的构造函数,那么就把对象tt的成员变量i的初始化为4了,

在这里i是Static, 该类的所有的对象都共享该内存。

也就是说:实例化对象tt的时候改变了i的值,实际上对象t的i值也改变了,因为实际上他们引用的是同一个成员变量。

最后打印结果是三个4。

2、实例变量

又叫 成员变量、对象变量。

实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值