java中static的用法(一)静态成员变量

static可以修饰成员变量、方法、游离块、内部类。

     static修饰的成员变量:static修饰的成员变量也叫类变量或全局变量,在类被加载时static修饰的成员变量被初始化,与类关联,只要类存在,static变量就存在。一个static变量单独划分一块存储空间,不与具体的对象绑定在一起,该存储空间被类的各个对象所共享。也就是说当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例对象共用同一个static变量。static修饰的成员变量能在创建任何实例对象之前被访问,而不必引用任何对象,也就是说不管创建多少对象,static修饰的变量只占有一块内存。

static修饰的成员变量的引用:

     可以通过实例对象名和类名进行引用,在同一各类中可以直接调用,而不需要对象名和类名。

看下面实例:

package com.baiye.test;

public class StaticTest {
 static int a=9;
 static String str="quan";
 public StaticTest(){
  System.out.println("static变量在类装载的时候就初始化(在实例化对象之前):a="+a);
  //a=4;
  System.out.println(a);
  System.out.println(str);
  
 }
 static void staticMethod(){
  str="baiye";
  //return str;
  System.out.println("在静态方法引用静态变量:str="+str);
 }
 void generalMethod(){
  a=6;
  System.out.println("在非静态方法中调用静态变量:a="+a);
 }
 public static void main(String[] args){
  StaticTest st1=new StaticTest();
  StaticTest st2=new StaticTest();
  StaticTest st3=new StaticTest();
  st1.a=5;
  System.out.println("st1.a="+st1.a+" st2.a="+st2.a+" st3.a="+st3.a);
  staticMethod();
  System.out.println("st1.str="+st1.str+" st2.str="+st2.str+" st3.str="+st3.str);
  StaticTest st4=new StaticTest();
  st1.generalMethod();
  System.out.println("st1.a="+st1.a+" st2.a="+st2.a+" st3.a="+st3.a);
 }

}

输出结果:

static变量在类装载的时候就初始化(在实例化对象之前):a=9
9
quan
static变量在类装载的时候就初始化(在实例化对象之前):a=9
9
quan
static变量在类装载的时候就初始化(在实例化对象之前):a=9
9
quan
st1.a=5 st2.a=5 st3.a=5
在静态方法引用静态变量:str=baiye
st1.str=baiye st2.str=baiye st3.str=baiye
static变量在类装载的时候就初始化(在实例化对象之前):a=5
5
baiye
在非静态方法中调用静态变量:a=6
st1.a=6 st2.a=6 st3.a=6

在这个结果中我们可以看出不管实例多少个对象static修饰的成员变量只占有一块 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值