首页 > 其他分享 >全局变量和局部变量使用问题

全局变量和局部变量使用问题

时间:2023-02-04 22:12:50浏览次数:45  
标签:变量 构造方法 成员 局部变量 num 使用 全局变量 public

 

 

在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);
  }

}

 

标签:变量,构造方法,成员,局部变量,num,使用,全局变量,public
From: https://www.cnblogs.com/GO8k/p/17092509.html

相关文章

  • SQLMAP使用
    sqlmap使用教程-u指定目标URL(可以是http协议也可以是https协议)-d连接数据库--dbs列出所有的数据库--current-db列出当前数据库--tables列出当前的表--column......
  • splash的使用
    splash是一个JavaScript渲染服务,利用它可以爬取动态渲染的页面一、简介功能异步处理多个网页的渲染过程可以获取渲染后页面的源代码、截图、以及页面的加载过程信息......
  • ChatGPT 有哪些神奇的使用方式?使用chargpt写代码 搜索问题 写论文
    本教程介绍chargpt使用教程:不需要梯子,不需要注册,也不需要缴纳费用通过本教程您将会使用chargpt写代码搜索问题写论文。我展示了两个问题问题一:用python写一个学生信......
  • MyBatis的使用七(处理表与表之间的关系)
    本文主要讲述mybatis的处理表与表之间的关系一.介绍t_emp和t_dept表1.t_emp表结构2.t_dept表结构二.数据表的关系1.阐明关系一个部门可以有......
  • SQLMAP使用
    sqlmap使用教程-u指定目标URL(可以是http协议也可以是https协议)-d连接数据库--dbs列出所有的数据库--current-db列出当前数据库--tables列出当前的表--column......
  • docker使用
    docker使用1.安装docker安装docker源https://developer.aliyun.com/mirror/---------------------------安装步骤centos7------------------------------#step......
  • Android 使用腾讯地图定位地点
    Android利用和风天气API显示实时天气-拾一贰叁-博客园(cnblogs.com)之前使用和风天气的SDK在AndroidApp上显示了实时天气情况,但是显示的地点信息是提前设置好的因......
  • 阿里云盘致歉:因系统故障出现短暂无法正常使用情况,已修复
    2月4日凌晨,@阿里云盘发文致歉称,由于系统故障,阿里云盘2月3日晚间出现了短暂的无法正常使用的情况,23:50分已修复,不影响用户的数据和后续使用。 ......
  • 【C语言】为什么使用文件、什么是文件、文件名、文件指针。
    ......
  • 记一次使用gdb诊断gc问题全过程
    原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处。简介上次解决了GC长耗时问题后,系统果然平稳了许多,这是之前的文章《GC耗时高,原因竟是服务流量小?》然而,过了......