static 修饰的变量在程序中容易出现的问题

package lianxi;

public class StaticTest {
    int a = 0;
    static int b =0;
    StaticTest(){
        a++;
        b++;//
    }
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        StaticTest st = new StaticTest();
        System.out.println("a="+st.a+"............b="+st.b);
        StaticTest st2 = new StaticTest();
        System.out.println("a="+st2.a+"............b="+st2.b);
        
        //被Static 修饰的变量相当于类属性,这里a是属于对象的,每创建对象,a的值就会再次被
        //初始化,而B不同,b属于类

}

}

=================运行结果==============================

a=1............b=1
a=1............b=2

static 修饰的变量在程序中容易出现的问题

时间: 2024-07-31 00:42:38

static 修饰的变量在程序中容易出现的问题的相关文章

C++中的static修饰的变量和函数

原文地址:http://blog.csdn.net/he3913/archive/2008/09/18/2944737.aspxC++里的静态成员函数(不能用const的原因+static在c++中的第五种含义)          ----自 core c++   static在c++中的第五种含义:用static修饰不访问非静态数据成员的类成员函数.这意味着一个静态成员函数只能访问它的参数.类的静态数据成员和全局变量.   不能用const的原因:一个静态成员函数访问的值是其参数.静态数据成员

static修饰的静态变量与实例变量的区别,及其在初始化和内存中的运行机制详解

1. 静态变量的定义 静态变量(Static Variable)在计算机编程领域指在程序执行前系统就为之静态分配(也即在运行时中不再改变分配情况)存储空间的一类变量. 说明:静态变量(用static修饰),它所被分配的空间是一直伴随程序运行的,空间将会保持到程序的结束关闭,才会被释放. 2.用static修饰的静态变量与普通变量的区别 假若在定义一个类的过程中,定义了一个static修饰的变量,那么这个类在被加载的同时,被static修饰的变量就存在于内存当中了,这样一来就独立于该类的所有对象,

Java static 修饰函数

package com.fish.object; /* static(静态.修饰符) static修饰成员变量时:static修饰成员变量时,那么该成员变量的数据就是一个共享的数据. 静态成员变量的访问方式: 方式一: 使用对象进行访问.  对象.属性名 方式二:可以使用类名进行访问. 类名.属性名 注意: 1. 非静态成员变量不能类名直接访问,只能使用对象进行访问. 2. 千万不要为了方便访问成员变量而使用static修饰,一定要是该数据是共享数据 时才使用static修饰. static修饰

C语言中static修饰符的意义

在C语言中,static通常有2种含义:1)定义变量的生命周期:2)定义变量或者函数的作用域. 变量的生命周期是指,相对于程序运行的进程生命周期,变量存在的时间段.变量的生命周期由变量的存储类型(位置)决定.因此static的第1种含义也可以理解为,static定义了变量的存储类型(位置). C语言中,变量存储位置分为栈.全局静态区.堆.栈用来做函数调用,参数传递等,在程序的运行过程中是操作最频繁的数据区.全局静态区,是变量一直存在于内存中,在程序整个运行过程中不会被销毁.堆,是由操作系统维护的

static修饰符详解

static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static修饰的成员变量和成员方法独立于该类的任何对象.也就是说,它不依赖类特定的实例,被类的所有实例共享. 只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们.因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象. 用public修饰的static成员变量和成员方法本质是

static修饰符与final修饰符

■ static修饰符与final修饰符: ★ static修饰符: 1. 修饰的对象: 类中的成员(属性[静态变量或类变量]和方法[静态方法或类方法]) 2. 静态属性的特点: 1. 静态变量被所有对象共享 2. 随着类的加载而加载,随着类的消失而消失,和对象的创建无关 3. 可以直接被类名调用 3. 静态方法的特点: 1. 静态方法优先于对象存在,在静态方法中无法访问与对象相关的实例变量(这时候对象还没有创建,其属性也就没有) 2. 静态方法无法访问实例变量 3. 静态方法可以访问静态变量

程序中的bss段,data段,代码段,堆,栈

程序中的bss段,data段,代码段(.text),堆(heap),栈(stack) .bss段:程序中未初始化的和已经初始化为0的全局变量和已经初始化为0的静态局部变量(static) .data段:程序中已经初始化的非零的全局变量和已经初始化的非零的静态局部变量(static) 代码段:用来存放代码的地方(.text段),不可修改,存放在只读区域内. 堆:程序员自己申请的内存区域,也就是用malloc()函数申请的内存区域,用free()函数来释放的区域. 栈:存放局部变量的区域,函数中的局

JAVA变量在内存中的分配

变量是程序中最基本的存储单元,从本质上讲,变量其实是内存中的一小块区域.所以要为其分配一定的存储空间. 变量的类型 按数据类型: 基本数据类型 引用数据类型 按声明的位置: 局部变量 成员变量 程序在计算机内存的分布: 栈区: 由编译器自动分配释放,主要存放Java程序运行时所需的局部变量.方法的参数.对象的引用以及中间运算结果等数据.其操作方式类似于数据结构的栈. 堆区: 不是系统为程序自动分配的,是程序执行过程中有new语句为变量分配的,主要存放Java程序运行时创建的所有引用类型,即使指向

java面向对象之static修饰符

在摆实例之前,先搞一些总结上去.... static(静态\修饰符) 1. static修饰成员变量 :如果有数据需要被共享给所有对象使用时,那么就可以使用static修饰. 静态成员变量的访问方式: 方式1: 可以使用对象进行访问. 格式: 对象.变量名. 方式二: 可以使用类名进行访问. 格式: 类名.变量名; 注意: 1. 非静态的成员变量只能使用对象进行访问,不能使用类名进行访问. 2. 千万不要为了方便访问数据而使用static修饰成员变量,只有成员变量的数据是真正需要被共享的时候 才