在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. P2574 XOR的艺术(线段树)
  2. Spring Hibernate Mybatis配置详解
  3. API for org.eclipse.paho.client.mqttv3
  4. python 局域网共享
  5. php中接口调用方法的区别,phpcms常用接口调用方法
  6. 信息学奥赛C++语言:5个人分糖块
  7. python的while循环时if不能打印_Python if语句在while循环中没有响应
  8. matex2推送鸿蒙系统,拜拜了,Powered by Android!
  9. 解决thrift: ···No such file or directory问题
  10. 2013-01-09 13:31 IE不支持textarea的maxlength属性,Firefox支持
  11. android 扫描ble设备,Android设备扫描后列出BLE设备
  12. 计算机进入屏保快捷键,电脑如何快速进入屏保
  13. 如何在edge浏览器上安装flash插件运行需要flash的游戏
  14. §1.1自然数 上•序数理论
  15. 【漏洞复现-骑士cms-代码执行】vulfocus/骑士cms_cve_2020_35339
  16. 《 Matlab_Simulink动力学系统建模仿真》及 ‘///’动力学 达朗贝尔原理、虚位移原理、朗格朗日方程...
  17. Python 判断奇数偶数-12
  18. 笔记本电脑开机到登入页面扩展显示器和电脑突然黑屏很久才显示
  19. 专访阿里巴巴毕玄:异地多活数据中心项目的来龙去脉
  20. kindeditor去掉图片空间

热门文章

  1. 学习使用Triangle库
  2. 狂神说——SpringBoot学习
  3. SVN--设置提交忽略某些文件或文件夹
  4. IoT reigns supreme at upcoming Embedded Linux Conference
  5. MongoDB 格式化时间
  6. 中国平安保险电话车险和网上车险,都是直销模式
  7. 3GPP 5G R17标准冻结,RedCap作为重要特性值得关注!
  8. html好看的搜索框样式,CSS美化的漂亮搜索框
  9. Socket编程(三)---仿QQ多人聊天实例
  10. 渗透测试-BurpSuite爆破(Intruder)模块四种模式介绍