关闭

static静态修饰符

标签: staticjava静态变量静态方法
497人阅读 评论(0) 收藏 举报
分类:

静态成员归整个类所有,不依赖类特定的实例,是被类的所有实例共享。只要这个类被JVM加载,就可以根据类名在全局数据区域内找到它们。因此,静态成员可以在任何对象创建之前访问而无需访问对象。

static 静态变量

static关键字修饰的成员变量称为静态成员变量,简称静态变量。静态变量是属于类,但是不依赖类特定的实例。静态变量在类创建后就一直存在,其生命周期和所在类的生命周期是一样的,且被类的所有实例共享。若一个类有多个实例对象,那么这些实例对象都可以共享该静态变量。也可以在没有创建实例对象时,通过类名来访问该类的静态变量。
实例变量和静态变量有如下几点区别。
1,对于实例变量,每创建一个实例,JVM就会为实例变量分配一次内存,实例变量可以在内存中有多个备份,互相不影响,实例变量隶属于对象。在类内部,非静态方法可以直接访问实例变量。本类中的静态方法或其他类则需要通过本类的实例对象访问实例变量。
2,对于静态变量,加载类的过程中完成静态变量的内存分配,JVM只为静态变量分配一次内存,而且静态变量在内存中只有一个备份。静态变量可以被所有对象之间共享。在本类中,任何方法都可以直接访问静态变量,当然也可以通过对象来访问(一般不这样)。在其他类中,则需要通过类名来访问静态变量
通过下面的例程能更加直观的了解静态变量:

public static void main(String[] args) {
        int x=staticTest01.tic--;
        System.out.println("x="+x+" ,tic="+staticTest01.tic);

        int y=staticTest01.tic--;
        System.out.println("y="+y+" ,tic="+staticTest01.tic);

        staticTest01 st=new staticTest01();
        int k=staticTest01.tic--;
        System.out.println("k="+k+" ,tic="+staticTest01.tic);

        staticTest01 st2=new staticTest01();
        int m=st2.tic--;
        System.out.println("m="+m+" ,tic="+staticTest01.tic);
        st2.rightTask();
        staticTest01.leftTask();
    }


}
class staticTest01
{
    public static int tic=10;
    public int cit=10;

    public void rightTask() {
        tic--;

        cit++;
        getCit();

        System.out.println("rightTask: tic="+tic);
    }

    public int getCit() {
        return cit;
    }

    public static void leftTask() {
        int i=tic-2;
        staticTest01 stx=new staticTest01();

        stx.cit++;
        stx.getCit();

        System.out.println("leftTask: tic="+i);
    }

静态变量有以下几个作用:(1)静态变量被所有的实例共享,因此可以作为实例之间的共享数据,增加实例之间的交互性。(2)静态变量可以让类中的所有实例包含同一个常量属性。

static方法—常态方法

静态方法与静态变量一样属于类,静态方法在类创建后就一直存在,其生命周期和所在类的生命周期是一样的,也可以在没有创建实例对象时,通过类名来访问该类的静态方法。静态方法不能访问非静态的实例变量和实例方法
实例方法和静态方法的区别如下:
1,静态方法可以不通过本类的实例对象而通过“类名.静态方法名”就可以调用。静态方法不能访问本类的实例变量和实例方法,但是可以访问静态成员。静态方法中不能使用this关键字和super关键字,因为这两个关键字和特定的实例变量相关。
2,实例方法可以访问静态成员,包括静态变量、静态常量、静态方法、实例变量和实例方法。但是静态方法不能直接访问实例变量和调用实例方法。

1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Java中的静态修饰符 static

静态修饰符的特点 static是一个修饰符,用于修饰成员(成员变量和成员函数) 静态成员随着类的加载而加载。 静态成员优先于对象存在。 静态成员被所有对象所共享 静态成员多了一...
  • u013310517
  • u013310517
  • 2016-07-31 18:01
  • 1815

JAVA--静态修饰符(static)理解

学习JAVA中,有一个修饰符特别重要。That's static... 下面来总结一下我对Static的理解和对于它的使用场景... 首先要记住一点,静态的资源(静态代码快、静态方法、静态变量、静态内...
  • qq_25223941
  • qq_25223941
  • 2015-11-18 10:10
  • 1254

static修饰符的作用及应用

/* static 修饰符 1.数据共享成员变量(实例变量)和静态变量(类变量)的区别 1.两个变量的生命周期不同 成员变量随对象的创建而存在,随对象被回收而释放 静态变量随类的加载而存在,...
  • u012768347
  • u012768347
  • 2016-03-27 14:12
  • 2097

Java静态修饰符static

前言:曾今的白日梦,如今依旧。 原文出处: //static:修饰成员 /* static修饰的成员变量的特点: 1:static修饰的成员变量的值是其类的所有对象共享 2:static修饰的成...
  • u014158743
  • u014158743
  • 2016-09-20 22:27
  • 281

JAVA--静态修饰符(static)理解

学习JAVA中,有一个修饰符特别重要。That's static... 下面来总结一下我对Static的理解和对于它的使用场景... 首先要记住一点,静态的资源(静态代码快、静态方法、静态变量、静态内...
  • qq_25223941
  • qq_25223941
  • 2015-11-18 10:10
  • 1254

精华:java中的修饰符static与静态方法final的用法

一、static   修饰属性,方法,代码块 1、静态方法:    使这个方法成为整个类所公有的方法,可以用   类名.方法名  直接访问       &#...
  • qq_28313221
  • qq_28313221
  • 2016-03-04 00:10
  • 158

1、Java面向对象笔记(匿名对象)(static 静态修饰符)(单例设计模式)

Java面向对象笔记(匿名对象) 构造函数的作用:用于给对象初始化 构造函数的小细节:当一个类中没有定义构造函数时,那么系统会默认给该类添加一个空参数的构造函数 当在类中自定义了构造函数后,那么默认函...
  • u013769375
  • u013769375
  • 2015-04-20 22:30
  • 267

Java静态修饰符static

静态修饰符的特点 static是一个修饰符,用于修饰成员(成员变量和成员函数) 静态成员随着类的加载而加载。静态成员优先于对象存在。静态成员被所有对象所共享静态成员多了一个中调用方式,可...
  • sly_1995
  • sly_1995
  • 2017-03-19 10:23
  • 164

c++静态修饰符static使用

static对象如果出现在类中,那么该对象即使从未被使用到,它也会被构造以及析构。而函数中的static对象,如果该函数从未被调用,这个对象也就绝不会诞生,但是在函数每次被调用时检查对象是否需要诞生。...
  • struggle6688
  • struggle6688
  • 2017-03-27 17:19
  • 119

Java中的静态修饰符 static

静态修饰符的特点 static是一个修饰符,用于修饰成员(成员变量和成员函数) 静态成员随着类的加载而加载。 静态成员优先于对象存在。 静态成员被所有对象所共享 静态成员多了一...
  • u013310517
  • u013310517
  • 2016-07-31 18:01
  • 1815
    个人资料
    • 访问:121882次
    • 积分:4006
    • 等级:
    • 排名:第9017名
    • 原创:290篇
    • 转载:4篇
    • 译文:0篇
    • 评论:3条
    博客专栏
    最新评论