在Java中变量类型有成员变量局部变量静态变量(类变量、static变量),本篇文章主要介绍成员变量(全局变量)和局部变量的区别。

根据变量的作用范围,将程序中的变量分为成员变量(全局变量)和局部变量。

一、成员变量(全局变量)

成员变量(全局变量):定义在类中方法外的变量,成员变量的作用范围是整个类。

(1)成员变量声明在一个类中,但在方法、构造方法和语句块之外;
(2)当一个对象被实例化之后,每个成员变量的值就跟着确定;
(3)成员变量在对象创建的时候创建,在对象被销毁的时候销毁;
(4)成员变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取成员变量信息;
(5)成员变量可以声明在使用前或者使用后;
(6)访问修饰符可以修饰成员变量;
(7)成员变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把成员变量设为私有。通过使用访问修饰符可以使成员变量对子类可见;
(8)成员变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null。变量的值可以在声明时指定,也可以在构造方法中指定;
(9)成员变量可以直接通过变量名访问。但在静态方法以及其他类中,就应该使用完全限定名:ObjectReference.VariableName。

二、局部变量

局部变量:定义在方法中或某个结构中的变量,局部变量的作用范围仅限于对应的方法内或结构内。

(1)局部变量声明在方法、构造方法或者语句块中;
(2)局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁;
(3)访问修饰符不能用于局部变量;
(4)局部变量只在声明它的方法、构造方法或者语句块中可见;
(5)局部变量是在栈上分配的。
(6)局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。

public class Demo01 {

public static void main(String[] args) {
        int num=1;
        do{
//            int num =1;局部变量
            System.out.println(num);
            num++;
        }while(num<=100);

}

}

三、成员变量(全局变量)和局部变量的区别

(1)成员变量在声明的时候可以初始化(赋值),如果不赋值,系统会给成员变量赋予一个默认的初始值;局部变量在使用之前必须赋值,如果不赋值,会报错,系统不会给局部变量赋予一个默认值,一般局部变量会在声明的同时进行赋值。
      
(2)成员变量和局部变量可以同名,在使用的时候,局部变量具有更高的优先级(就近原则);

(3)一个类中不能有同名的成员变量,一个方法内不能有同名的局部变量,不同的方法内可以有相同名称的局部变量。

(4)成员变量:

          ①成员变量定义在类中,在整个类中都可以被访问。

          ②成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。

          ③成员变量有默认初始化值。

      局部变量:

          ①局部变量只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效。

          ②局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放。

          ③局部变量没有默认初始化值

public class Demo02 {
    
    public String name;//成员变量
//    public String name;一个类中不能有同名的成员变量

public void test(){
        int num=10;//局部变量
//        int num =10;一个方法内不能有同名的局部变量
        String name="张三";
        System.out.println(name);
        System.out.println(num);
    }
    
    public void test2(){
        int num =10;//局部变量
//        System.out.println(num);
    }

}

Java成员变量(全局变量)和局部变量相关推荐

  1. Java:全局变量(成员变量)与局部变量

    分类细则: 变量按作用范围划分分为全局变量(成员变量)和局部变量 成员变量按调用方式划分分为实例属性与类属性 (有关实例属性与类属性的介绍见另一博文https://blog.csdn.net/Drag ...

  2. java成员变量定义_java变量之成员变量和局部变量以及它们的运行机制

    Java语言根据变量定义位置的不同,将变量分为成员变量和局部变量.成员变量指的是定义在类中(方法外)的变量,局部变量指的是定义在方法中的变量.同时成员变量以是否用static修饰分为类变量和实例变量. ...

  3. java成员变量和局部变量的初始化和内存中的运行机制

    成员变量: 当系统加载类或创建类的实例时,系统会自动为成员变量分配内存空间,并在分配内存空间后,自动为成员变量指定初始值. eyeNum是类属性.name是实例属性 所有person实例访问eyeNu ...

  4. JAVA成员变量为什么不能在类体中先定义后赋值

    1 package dx; 2 3 public class Test1 { 4 5 int a111;//定义成员变量(全局变量) 6 7 8 9 // a = 1;//此处若给变量赋值,会报错,J ...

  5. Java 成员变量和静态变量的区别

    文章目录 Java 成员变量和静态变量的区别 变量声明默认值 与 Python 的联系 实例变量的声明 类变量的声明 static 方法 Java 成员变量和静态变量的区别 1)成员变量所属于对象.所 ...

  6. Java 成员变量和局部变量

    成员变量:在类中定义,用来描述对象将要有什么,可被本类,有关系的其他类使用 局部变量:在类的方法中定义,在方法中临时保存数据,只能被当前类使用 区别:1.作用域不同   局部变量的作用域仅限于定义它的 ...

  7. 关于Java成员变量、局部变量、方法,在JVM的内存空间分配

    1.变量类型 2.类的结构 下面是一般类的结构 //类体=属性+状态(即:类体=变量+方法) public class 类名{ //类名最好首字母大写的英文String name; //在方法体外,所 ...

  8. java成员变量除了方法传递_JAVA类与对象(四)----成员变量与局部变量 、成员方法、构造方法...

    类体中的变量分为两部分.变量定义部分定义的变量为类的成员变量,在方法体中定义的变量和方法中涉及的变量称为局部变量. 成员变量和局部变量的区别: (1).成员变量在整个类中都有效,局部变量只在定义它的方 ...

  9. JAVA 成员变量与局部变量的区别

    public class ObjectOrientend5 {int x;//为成员变量,紧跟着类public void show(int a){int y = 0;//这里的a,y都是在方法中,故都 ...

最新文章

  1. 清华大学人工智能研究院成立听觉智能研究中心,将专注基础研究和成果产业化
  2. 雷军大秀新宠「铁蛋」!打滚握手会空翻,这个机器狗只要9999
  3. AVAudioPlayer音频播放器-备用
  4. Tarjan缩点/边双/点双
  5. 为什么Mac source ~/.bash_profile只生效一次(macOS Catalina)
  6. 使用Python开发SQLite代理服务器
  7. 理解阻塞非阻塞与同步异步
  8. 每天一点正则表达式积累(五)
  9. Golang gRPC实践 连载五 拦截器 Interceptor
  10. eclipse使用教程(图文)
  11. uReport2报表工具的基础使用及注意事项
  12. Frenet和笛卡尔坐标系互转
  13. python 转盘 圆形,用python实现一个转盘
  14. 02 视频或语音转文本
  15. 《惢客创业日记》2018.12.29(周六)取代手机的“量子智能标签”
  16. 将Android布局转成图片,并保存到本地(解决JPEG图片因透明度变黑问题)
  17. 经济类英文期刊排行榜
  18. fixture 'xxx' not found
  19. 音视频技术开发周刊 | 297
  20. SMT车间贴片机Feeder管理方案

热门文章

  1. 辞职了,顺便写一下自己的跳槽经验
  2. 小场景下基于ROS的GPS经纬高度值转换为平面XYZ坐标值,并用RVIZ显示轨迹
  3. 坚果云和亿方云哪个好?
  4. 2019华为优招面试+笔试
  5. matlab需要64g内存吗,买128G的手机有必要吗?64G手机内存会不够用么?
  6. 移动端web开发笔记
  7. Chrome浏览器下百度搜索引擎被劫持的解决办法
  8. PHP之 常见问题拾记
  9. 进程线程IO复用技术
  10. H264 获取SPS与PPS