精华内容
下载资源
问答
  • 静态变量可以被对象调用也可以被类名调用 3.别名不同 成员变量也叫实例变量 静态变量也成为变量 4.数据存储位置不同 成员变量存储在堆内存的对象中,所以也叫对象的特有数据 静态变量数据存储在方法区(的...

    1.生命周期不同

    成员变量伴随着对象的创建而存在,随着对象的回收而释放。

    静态变量随着类的加载而存在随着类的消失而消失。

    2.调用方式不同:

    成员变量只能被对象调用

    静态变量可以被对象调用也可以被类名调用

    3.别名不同

    成员变量也叫实例变量

    静态变量也成为类变量

    4.数据存储位置不同

    成员变量存储在堆内存的对象中,所以也叫对象的特有数据

    静态变量数据存储在方法区(的静态区),所以也叫对象的共享数据。

    class Person{
        String name;//实例对象,成员变量
        static String country="china";//静态变量,类变量
        public void show(){
            System.out.println("speak");
        }
        }
    public class Test {
    	public static void main(String[] args) {
    		Person p=new Person();//创建一个对象
    		System.out.println(Person.country);//静态变量可以通过类名调用
    		//成员变量不能通过类名调用
    		p.name="wangcai";//对象可以调用成员变量
    		p.country="cn";//对象可以调用静态变量
    		System.out.println(p.country);
    	}
    }
    

     

    展开全文
  • 独立存在的变量,只是位置放在某个下,可以直接类名加点调用静态变量名使用。并且是项目或程序一启动运行到该时就直接常驻内存。不需要初始化调用该变量。用关键字声明。静态方法也是同样,可以直接调用。 ...

    静态变量(类变量):
    独立存在的变量,只是位置放在某个类下,可以直接类名加点调用静态变量名使用。并且是项目或程序一启动运行到该类时就直接常驻内存。不需要初始化类再调用该变量。用关键字声明。静态方法也是同样,可以直接调用。
    静态变量(类变量)具备以下特点:
    1.随着类的加载而加载
    2.优先于对象存在
    3.被所有对象所共享
    4.可以直接被类名调用

    实例变量:
    就是相当于该类的属性,需要先初始化该类,就是new 该类后,才可以调用。但是该类未被再次使用,被垃圾回收器回收后,该实例也将不存在了,就是不在内存中了。

    两者的区别如下:
    1.存储区域不同:
    类变量随着类的加载而存储于方法区的静态存储区中。
    实例变量随着对象的建立而存储于堆内存中
    这也是为什么实例方法和变量需要在实例创建后才能由实例引用,而类变量随着类的加载就可以引用。

    下图为实例变量的存储结构示意图:
    在这里插入图片描述
    2.静态变量与类相关,实例变量则与实例相关

    3.内存分配方式不同。

    4.生命周期不同。
    类变量生命周期最长,随着类的消失而消失。
    实例变量生命周期随着对象的消失而消失。

    展开全文
  • 内存中静态区的变量可以被共享,其他类调用类静态变量和静态方法时,无需实例化就可以调用静态变量 很多时候,不同的之间需要对同一个变量进行操作。 比如,一个水池,同时打开进水口放水口,进水...

    静态修饰符(Static)

    由static修饰的变量、常量和方法称为静态变量、静态常量和静态方法。

    内存中的静态区在整个程序运行结束之后才会释放,所以用静态修饰的代码的生命周期是整个程序的生命周期。

    静态区

    内存中静态区的变量可以被本类共享,其他类调用本类静态变量和静态方法时,无需实例化就可以调用

    静态变量

    很多时候,不同的类之间需要对同一个变量进行操作。

    比如,一个水池,同时打开进水口和放水口,进水和出水这两个动作会同时影响池中的水量,这时,池中的水量就可以认为是一个共享的变量

    静态变量的定义和调用:

    public class Pool {
        static int water=0;
        public void outlet(){
            if(water>=2) water-=2;
        }
        public void inlet(){
            water+=3;
        }
    
        public static void main(String[] args) {
            Pool in = new Pool();
            Pool out = new Pool();
            System.out.println("进两次水");
            in.inlet();
            in.inlet();
            System.out.println("还剩:"+Pool.water+"的水");
            System.out.println("放两次水");
            out.outlet();
            out.outlet();
            System.out.println("还剩:"+water+"的水");
        }
    }
    

    输出结果:

    进两次水
    还剩:6的水
    放两次水
    还剩:2的水

    同一个类的不同实例对象,共用同一静态变量,如果一个对象将其更改,另一个对象的静态变量也会更改

    public class StaticAge {
        int x = 0;
        static int y = 0;
        public StaticAge(int x, int y){
            this.x=x;
            this.y=y;
        }
        public static void main(String[] args) {
            StaticAge a = new StaticAge(1,2);
            StaticAge b = new StaticAge(4,6);
            System.out.println("a.x= "+a.x);
            System.out.println("a.y= "+a.y);
            System.out.println("b.x= "+b.x);
            System.out.println("b.y= "+b.y);
            System.out.println("y= "+y);
        }
    }
    

    输出结果:

    a.x= 1
    a.y= 6
    b.x= 4
    b.y= 6
    y= 6

    个人理解认为是,如果一个变量是静态变量,那么不同实例对其的调用不起作用,整个程序只存在一个y,与其所属类的实例无关。
    内存中两个类的y指向同一个位置
    内存示意图

    静态常量

    final static修饰一个成员变量,这个成员变量就会变成一个静态常量

    定义静态常量:final static double PI = 3.1415926;

    静态常量赋值后后面不能通过赋值修改。

    静态方法

    如果想要使用类中的成员方法,需要先将这个类进行实例化。
    有时不想或者无法创建类的对象时,可以使用静态方法,使用类的静态方法无需创建类的对象。

    成员方法和静态方法的使用区别:

    public class StaticMethod {
        public void Show(){
            System.out.println("kkkkkk");
        }
        static public void show(){
            System.out.println("23333");
        }
        public static void main(String[] args) {
            StaticMethod Showw  = new StaticMethod();
            Showw.Show();
            StaticMethod.show();
        }
    }
    

    静态代码块

    在类中的成员方法之外,用static修饰的代码区域称之为静态代码块
    定义一块静态代码块,可以完成类的初始化操作,在类的声明时就会运行。
    静态代码块、构造方法、成员方法的运行顺序:

    public class StaticCode {
        static{
            System.out.println("StaticCodeBlock");
        }
        {
            System.out.println("CodeBlock");
        }
        public StaticCode(){
            System.out.println("构造方法");
        }
        public void method(){
            System.out.println("成员方法");
        }
        public static void main(String[] args) {
            StaticCode test = new StaticCode();
            test.method();
        }
    }
    

    输出:

    StaticCodeBlock
    CodeBlock
    构造方法
    成员方法

    调换顺序:

    public class StaticCode {
        {
            System.out.println("CodeBlock");
        }
        static{
            System.out.println("StaticCodeBlock");
        }
        public StaticCode(){
            System.out.println("构造方法");
        }
        public void method(){
            System.out.println("成员方法");
        }
        public static void main(String[] args) {
            StaticCode test = new StaticCode();
            test.method();
        }
    }
    

    输出相同。

    所以运行顺序:静态代码块、非静态代码块、构造方法、成员方法。

    展开全文
  • 调用方式不同:成员变量只能被对象调用静态变量可以被对象调用,还可以被类名调用。别名不同:成员变量也称为实例变量。静态变量也成为变量。数据存储位置不同:成员变量存储在堆内存的对象中,所以也叫对象的特有...
    成员变量和静态变量的生命周期:
    成员变量随着对象的创建而存在,对象回收就被释放。

    静态变量随着类的加载而存在,类消失静态变量就消失。

    调用方式不同:
    成员变量只能被对象调用
    静态变量可以被对象调用,还可以被类名调用。


    别名不同:
    成员变量也称为实例变量。
    静态变量也成为类变量。

    数据存储位置不同:
    成员变量存储在堆内存的对象中,所以也叫对象的特有数据。
    静态变量数据存储在方法区(共享数据区)的静态去,所以也叫对象的共享数据,

    static关键字是一个修饰符,用于修饰成员变量和成员函数。

    静态方法只能访问静态成员,不可以访问非静态成员。
    ing为静态方法加载时,优先于对象存在,所以没有办法访问对象中的成员。

    静态方法中不能使用this,super关键字。
    因为this代表对象,而静态在时,有可能没有对象,所以this无法使用。
    展开全文
  • 静态变量

    2019-08-26 19:40:08
    静态变量被类拥有,所有对象都共享这个静态变量。...同一个类中静态变量和静态方法,可以通过实例对象调用,也可以直接用类名调用。 静态变量分配在方法区,一个类的所有对象指向同一个方法区。 ...
  • java成员变量dao静态变量的区别: 1,成员变量zhi所属于对象。所以也dao称为实例变量。...静态变量可以被对象调用,也可以被类名调用。 所以,成员变量可以称为对象的特有数据,静态变量称为对象的共享数据。 ...
  • 变量或函数如果依赖于的特定实例,那么就是实例变量或实例函数。如果变量由的所有实例共享,则应该声明该变量为静态...在实例函数中可以调用静态变量或静态函数,但是不能在静态函数中调用实例变量或实例函数...
  • 静态类的方法可以静态的方法也可以是非静态的方法,静态的方法可以在外层通过静态类调用,而非静态的方法必须要创建对象之后才能调用; 静态内部只能引用外部的static成员变量(也就是类变量) 如果一个...
  • JAVA成员变量静态变量的区别:1,成员变量所属于对象。所以也称为实例变量。静态变量所属于。所以也称为变量。2,成员变量存在于堆内存...静态变量可以被对象调用,也可以被类名调用。所以,成员变量可以称为...
  • 静态方法与静态变量一样,属于本身,而不属于哪个的一个对象调用一个定义为static的方法,只有通过在它前面加上这个的名称。一般定义里说是可以通过实例调用的。其他语言我还没测试,但是在C#中是不行的,...
  • 成员变量、局部变量和静态变量的区别 一、成员变量(/ 实例变量) 成员变量随对象的建立而建立,随对象的消失而消失,存在于对象所在的堆内存中; 成员变量定义在中,在...静态变量被对象或类名调用静态变量
  • 静态变量和静态方法

    2017-07-19 17:56:00
    静态变量只要调用了该就会创建 静态变量不能通过一个已实例化的对象来访问(但静态方法可以) 定义中的静态变量: static $变量名= 值 在中访问静态变量的格式: self::$变量名 ...
  • 静态变量属于,该不生产对象,通过类名就可以调用静态变量。 实例变量属于该对象,必须产生该类对象,才能调用实例变量。 在程序运行时的区别: 实例变量属于某个对象的属性,必须创建了实例对象,...
  • 3 静态变量可以被任何成员函数调用,可以把静态变量看成全局变量 4静态成员函数只能访问静态变量,想要访问非静态变量必须声明一个对象,通过这个对象调用 5静态成员函数中,若声明了一个对象,通过这个...
  • 静态方法不能调用非静态的成员,理由是:静态方法属于,因此不具有this引用,而非静态成员只能通过对象来访问,因此这条访问的路就切断了。 静态变量是所有对象共有的,只分配一次内存。而非静态变量每个对象有...
  • 可以直接用类名调用,也可以对象调用,而且所有对象的同一个类变量都是共享同一个内存空间的。 实例变量 也叫对象变量,没有static修饰,只能通过对象调用,而且所有对象的同一个实例变量是共享不同内存空间的。 ...
  • JAVA静态变量

    2015-12-03 14:24:58
    /* 静态变量: 什么时候定义静态变量呢? 当该成员变量的值,每一个对象都一致时,...静态变量可以被对象和类调用(一般都用类名调用) 成员变量只能被对象调用。 3,加载时期不同。 静态变量随着的加载而加载。 成员
  • 用于修饰成员(成员变量和成员函数)当成员被静态修饰后,就多了一种调用方式,除了可以被对象调用外,还可以直接被类名调用格式:类名.静态成员静态的特点:1.随着的加载而加载也就是,说静态会随着的消失而...
  • 实例变量必须依存于某一实例,需要先创建对象然后通过 对象才能访问到它,静态变量可以实现让多个对象共享内存。两者的相同点: 都有默认值而且在类的任何地方都可以调用。在 Java 开发中,上下文类和 工具类中通常会...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,681
精华内容 672
关键字:

静态变量可以被类和对象调用