zoukankan      html  css  js  c++  java
  • Java基础笔记(七)—— 成员变量、静态变量、局部变量

     1 public class Test {
     2         int c;  //成员变量(实例变量)
     3         static int s1;  //静态变量(类变量)(全局变量)
     4         public static void main(String[] args){
     5          //static int s2;  //局部变量不允许static定义
     6            int b;   //局部变量
     7            Test t=new Test();
     8            System.out.println(t.c); //成员变量系统会提供默认初始值,随着对象创建而存在(实例变量)
     9 
    10            b=1;
    11            System.out.println(b); //局部变量使用前必须得赋值,系统不会默认初始化
    12 
    13             // 静态变量随着类的加载而存在,所有对象共享
    14            System.out.println(t.s1);
    15            Test t1=new Test();
    16            t1.s1=2;   //其中一个对象将其值改变,即共享数据改变了。
    17            System.out.println(t1.s1);
    18            System.out.println(s1);
    19            System.out.println(Test.s1);
    20         }
    21 }

    (1)作用域

    成员变量:有4种修饰符决定成员变量的可见性。如表1所示。

    局部变量:它所在的花括号内。

    静态变量:同成员变量。

    public:表明该成员变量或方法对所有类或对象都是可见的,所有类或对象都可以直接访问。

    private:表明该成员变量或方法是私有的,只有当前类对其具有访问权限,除此之外的其它类或对象都没有访问权限。

    protected:表明成员变量或方法对该类自身、与它在同一个包中的其它类、在其它包中的该类的子类都可见。

    default:表明该成员变量或方法只有自己和与其位于同一包内的类可见。若父类与子类位于同一个包内,则子类对父类的default成员变量或方法都有访问权限;若父类与子类位于不同的package内,则没有访问权限。

    这些修饰符只能修饰成员变量,不能用来修饰局部变量。private与protected不能用来修饰类(只有public、abstract、final 能用来修饰类)。

    (2)存储位置

    成员变量:存储在堆内存中。

    局部变量:存储在栈内存中。

    静态变量:存储在方法区中。

    (3)初始值

    成员变量:有默认初始值。

    局部变量:没有默认初始值,使用前必须赋值。

    静态变量:有默认初始值。

    (4)调用方式

    成员变量:对象.实例变量

    静态变量:类.静态变量    或者    对象.静态变量

    局部变量:直接用。

    (5)生命周期

    成员变量:与类的实例化对象作用范围相同,当类被实例化时,成员变量就会在内存中分配空间并初始化,直到这个被实例化对象的生命周期结束,成员变量的生命周期才结束。

    静态变量:只要类被加载,JVM就会给类的静态变量分配存储空间。

    局部变量:在方法被调用,或者语句被执行的时候存在,当方法调用完,或者语句结束后,就自动释放。

    (6)与对象的相关性

    静态变量不依赖于特定的实例,是所有对象共享的数据。静态变量属于类,在内存中只有一个复制(所有实例都指向同一个内存地址),只要静态变量所在的类被加载,这个静态变量就会被分配空间,即可被使用了。

    成员变量是每个对象所特有的数据。成员变量属于对象,只有对象被创建后,成员变量才会被分配空间,才能被使用,它在内存中存在多个复制。

  • 相关阅读:
    模板集合
    [NOIP2005普及组]循环(高精度+数学)
    KEYENCE Programming Contest 2021
    AtCoder Regular Contest 111
    Educational Codeforces Round 99 (Rated for Div. 2)
    AtCoder Beginner Contest 183翻车记
    上古退役选手康复训练1——CSP2020J-2
    [SNOI2020]取石子(数学+打表找规律)
    selenium爬取拉勾网招聘信息
    scrapy将爬取的数据存入MySQL数据库
  • 原文地址:https://www.cnblogs.com/tendo/p/10355971.html
Copyright © 2011-2022 走看看