静态变量与实例变量的区别

  语法定义上区别:被static修饰的变量称为静态变量或者类变量。没有被static修饰的对象称为实例变量 

  程序运行上区别:只有创建实例对象后,其中的实例变量才会被分配空间,才能使用这个实例变量。但是静态变量不属于不属于某个实例对象,而是属于类,所以也称类变量。只要程序加载了类的字节码,不用创建任何的实例对象,静态变量就会被分配空间,就可以被使用了。总的来说,实例变量必须创建对象后才可以通过这个对象来使用,而静态变量则可以直接通过使用类名来使用!

  举个例子:

  public  class Test{

  public static int gg = 0;

  public int kk = 0;

  public Test()

  {

    gg++;

    kk++;

    System.out.println("gg="+gg+",kk="+kk);

  }

  }

  上面的例子中:无论创建多少个实例对象,永远只分配一个gg变量,并且每创建一个实例对象,这个gg就会加1(注意只是它的值加1哦);但是每创建一个实例对象,就会分配一个kk,即可能分配多个kk,并且每个kk的值都自加一次。      

时间: 2024-10-03 21:54:14

静态变量与实例变量的区别的相关文章

成员变量(实例变量)&局部变量&静态变量(类变量)的区别

成员变量(实例变量)&局部变量区别: (1)作用域 成员变量:针对整个类有效. 局部变量:只在某个范围内有效.(一般指的就是方法,语句体内) (2)存储位置 成员变量:随着对象的创建而存在,随着对象的消失而消失,存储在堆内存中. 局部变量:在方法被调用,或者语句被执行的时候存在,存储在栈内存中. 当方法调用完,或者语句结束后,就自动释放. (3)初始值 成员变量:有默认初始值. 局部变量:没有默认初始值,使用前必须赋值. 成员变量(实例变量)&静态变量(类变量)区别: A:调用方式 静态变

java 成员变量、局部变量、静态变量、类变量、非静态变量、实例变量、向前引用、非法向前引用、静态代码块、非静态代码块

①java类的成员变量有俩种: 一种是被static关键字修饰的变量,叫类变量或者静态变量 另一种没有static修饰,为成员变量 ②通俗点说: 类的静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享.静态变量可以直接通过类名进行访问,其生命周期取决于类的生命周期. 而实例变量取决于类的实例.每创建一个实例,java虚拟机就会为实例变量分配一次内存,实例变量位于堆区中,其生命周期取决于实例的生命周期. 注意点: 1.JAVA中初始化

java中类变量和实例变量的实质区别?

类变量和实例变量的区别 相对于static(静态的)或说类的, 本章开始提到的都是instance(实例的)或说对象的. 每个对象都有自己的一份儿对象域或实例域,相互之间没关系, 不共享. 我们可以从对象中访问实例变量. 类变量或说静态变量跟实例变量是不一样的,(视频下载) (全部书籍)不管创建了多少个对象,系统只为每个类变量分配一次存储空间.系统为类变量分配的内存是在执行main方法时马克-to-win, 就是在程序最最开始的时候(见下面StaticDemo的例子).所有的对象共享了类变量.可

java线程安全问题之静态变量、实例变量、局部变量

Java多线程编程中,存在很多线程安全问题,至于什么是线程安全呢,给出一个通俗易懂的概念还是蛮难的,如同<java并发编程实践>中所说: 写道 给线程安全下定义比较困难.存在很多种定义,如:"一个类在可以被多个线程安全调用时就是线程安全的". 此处不赘述了,首先给出静态变量.实例变量.局部变量在多线程环境下的线程安全问题结论,然后用示例验证,请大家擦亮眼睛,有错必究,否则误人子弟! 静态变量:线程非安全. 静态变量即类变量,位于方法区,为所有对象共享,共享一份内存,一旦静态

iOS 成员变量,实例变量,属性变量的区别,联系

在ios第一版中: 我们为输出口同时声明了属性和底层实例变量,那时,属性是oc语言的一个新的机制,并且要求你必须声明与之对应的实例变量,例如: 注意:(这个是以前的用法) @interface MyViewController :UIViewController { UIButton *myButton; } @property (nonatomic, retain) UIButton *myButton; @end 在现在iOS版本中: 苹果将默认编译器从GCC转换为LLVM(low leve

【转截】iOS成员变量、实例变量、属性变量三者的联系与区别

一.类Class中的属性property 在ios第一版中: 我们为输出口同时声明了属性和底层实例变量,那时,属性是oc语言的一个新的机制,并且要求你必须声明与之对应的实例变量,例如: 注意:(这个是以前的用法) @interface MyViewController :UIViewController { UIButton *myButton; } @property (nonatomic, retain) UIButton *myButton; @end 在现在iOS版本中: 苹果将默认编译

成员变量、实例变量、类变量、成员方法、实例方法、类方法的区别

简单来说:类体的定义包括成员变量的定义和方法的定义. 1.成员变量包括实例变量和类变量:而成员方法包括实例方法.类方法,当然还有一种特殊的构造方法.  2.类变量.类方法就是类中的变量.方法,必须是静态的,要加static:故其又称静态变量 .静态方法.3.成员变量.成员方法是对象或实例中的变量.方法,不加static:  类变量:静态域,静态字段,或叫静态变量,它属于该类所有实例共有的属性,在内存中只有一个地方存储这个变量.而且所有的实例都可以修改这个类变量的值(前提是这个类变量没 有被fin

(转)java线程安全问题之静态变量、实例变量、局部变量

java多线程编程中,存在很多线程安全问题,至于什么是线程安全呢,给出一个通俗易懂的概念还是蛮难的,如同<java并发编程实践>中所说: 写道 给线程安全下定义比较困难.存在很多种定义,如:“一个类在可以被多个线程安全调用时就是线程安全的”. 此处不赘述了,首先给出静态变量.实例变量.局部变量在多线程环境下的线程安全问题结论,然后用示例验证,请大家擦亮眼睛,有错必究,否则误人子弟! 静态变量:线程非安全. 静态变量即类变量,位于方法区,为所有对象共享,共享一份内存,一旦静态变量被修改,其他对象

Java中的静态变量、实例变量和局部变量及其特征

变量类型 说明 特征 类变量(静态变量) 独立于方法之外的变量,用   static 修饰 类变量也称为静态变量,在类中以static关键字声明,但必须在方法构造方法和语句块之外.     无论一个类创建了多少个对象,类只拥有类变量的一份拷贝.     静态变量除了被声明为常量外很少使用.常量是指声明为public/private,final和static类型的变量.常量初始化后不可改变.     静态变量储存在静态存储区.经常被声明为常量,很少单独使用static声明变量.     静态变量在

python之面向对象之类变量和实例变量

#Auther Bob #--*--conding:utf-8 --*-- #这里的变量全部都是实例变量 class Role(object): def __init__(self,name,role,wepon,life_value): #实例变量 self.name = name self.role = role self.wepon = wepon self.life_value = life_value #类的方法 def buy_gun (self,wepon): print("我的名