Java中局部变量和成员变量有什么区别

发布时间:2023-05-26 10:16:20 作者:栢白
来源:亿速云 阅读:125

今天小编给大家分享的是Java中局部变量和成员变量有什么区别,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。

目录

一. 关于变量

在之前的文章中,已经给大家详细地介绍过变量相关的内容,比如变量的概念、命名规范、变量的定义及底层原理等内容。但其实变量还有作用范围的概念,并且根据作用范围的不同,变量还可以分为成员变量、局部变量等内容。在我们今天开始学习局部变量和成员变量等内容之前,先简单地带大家复习一下之前的变量内容。

1. 概念

我们知道,在Java中,变量是程序里最基本的存储单元,它由变量名、变量类型、作用域组成。从本质上来说,变量其实就是内存里的一小块存储区域,该区域只能存储声明变量时指定类型的数据。我们创建使用每个变量前,必须先声明,在内存中申请空间,然后对其进行初始化赋值,接着就可以通过变量名来访问和使用这块内存区域了。

进一步解释一下,变量其实就是一个可以存储特定类型数据的容器。这个容器在内存中有自己的地址,为了方便地找到这个地址,我们可以给每个地址起个”名字“,这就是”变量名“。每个变量的数据类型都是固定不变的,但变量中对应数据的具体内容,却是可以改变的,所以”变量“指的就是内容可以改变的量。

2. 命名规范

而且变量的命名需要遵循一定的规范,基本的规则和规范如下:

①. Java标识符由 字母(含英、中、日、俄等)、数字、下划线"_" 和 美元符号$(音: dollar)组成, 如age、G7、_value、$salary;

②. 不能以数字开头, 如123abc;

③. 严格区分大小写, 如class与Class是不同的;

④. 长度无限制(一般不要超过15个字符);

⑤. 不能是Java中的保留字和关键字。

Java的变量名也是一种标识符,所以必须遵循以上这些规则! 另外还有一些命名规范需要我们尽量遵守,比如:

3. 作用范围

其实,除了以上的这些规范之外,我们在定义变量时还要考虑它的作用范围,或者说是作用域。

变量的作用范围,或者叫作用域,是指一个变量的有效范围。有的变量在整个类中都是有效的,也有的变量只在方法内部有效,超过这个范围就无效了。 如果我们在超出了作用域的地方引用这些变量,编译器就会报错。这就好比,不同的人有不同的权力,有的人权力比较大,可以在全世界发号施令;有的人权力比较小,只能在自己家里发号施令,这就是自己的”作用范围“或者”作用域“。

Java中局部变量和成员变量有什么区别

我们在定义变量时,要遵循作用域最小化的原则,尽量将变量定义在尽可能小的作用范围内,并且不要重复使用变量名。

4. 变量分类

在Java中,我们可以根据变量的作用范围,将Java的变量分为两大类:

Java中局部变量和成员变量有什么区别

二. 局部变量

1. 概念

在上面的章节中,其实已经跟大家介绍了局部变量的概念,即:

局部变量是在定义形参、方法或代码块内部的变量,该变量只在当前方法、代码块中有效。

2. 特点

局部变量具有如下特点:

3. 案例

在下面的案例中,给大家定义了几个局部变量供大家参考。

/**
 * @author 
 */
public class Demo01 {

    //args也是一种局部变量,在main(){}方法的{}范围内有效
    public static void main(String[] args) {
        //局部变量,在main(){}方法的{}范围内有效
	int a = 10;
		
	System.out.println("a=" + a);
    }

    public void showAge() {
	//i也是一种局部变量,只在for(){}这对{}范围内
	for(int i=0;i<100;i++) {
            System.out.println("age=" + age);
	}
    }
}

三. 成员变量

1 概念

所谓的成员变量,是指在类中(不是方法或其他代码块)直接定义的变量。根据是否带有static关键字,成员变量又分为静态变量(类变量)、实例变量(对象变量) 。成员变量在整个类的内部都有效,可以在当前类的任何方法中使用。另外如果成员变量不是被private修饰的,还可以在其他的类中引用。

2. 实例变量

实例变量也被成为对象变量,是指在类中定义的非static变量。实例变量具有如下特点:

3. 静态变量

静态变量又被称为类变量,是被static修饰的、直接定义在类中(方法之外)的变量,它具有如下特点:

4. 权限修饰符

大家要注意,成员变量的作用域,是可以通过权限修饰符来进行修改的。也就是说,我们可以给一个成员变量不同的修饰符,赋予该变量不同的权限。比如,我们可以给一个人身上赋予不同的”角色标签“,就可以改变这个人的”权力大小“。在Java中,有如下4种权限修饰符

修饰符类内部同一个包不同包的其他子类同一个工程
private可以(继承是特例)


默认可以可以

protected可以可以可以
public可以可以可以可以

private私有的修饰符:可以修饰成员变量、成员方法、构造方法,但不能修饰类(内部类除外)被private修饰的成员只能在被修饰的本类中访问,在其他类中不能调用。 一般被private修饰的成员变量,是通过公开的set和get方法向外界提供访问方式。

defalut默认的修饰符:不用写任何关键字,它可以修饰类、成员变量、成员方法、构造方法变量被默认权限修饰后,只能被本类以及同一个包下的其他类访问。

protected受保护的修饰符:可以修饰成员变量、成员方法、构造方法,但不能修饰类( 内部类除外 ) 。成员变量被protected修饰后,可以在同一类内部,和同一包中的其他类访问。如果不同包中的类想要访问被protected修饰的成员,这个类必须是其子类。

public公开的修饰符:是权限最大的修饰符,可以修饰类、成员变量、成员方法、 构造方法。成员变量被public修饰后,可以在任何一个类中任意使用,不管是否是同一个包

5. 案例

在下面的案例中,定义了2个成员变量供大家参考:

/**
 * @author
 */
public class Demo01 {

    //实例变量、对象变量,在当前的Demo01类内部有效
    private int age = 18;
	
    //静态变量、类变量,因为是public公开的,在当前Demo01类内部,及其他类中都可以使用    
    public static String msg = "Hello,一一哥";

    public static void main(String[] args) {
        //注意:在static静态方法中不能引用非静态变量
	//System.out.println("age=" + age);

	System.out.println("msg=" + msg);
    }
}

四. 结语

至此,就把局部变量相关的内容给大家介绍完了,现在你知道什么是局部变量及其特点了吗?另外我们要搞清楚局部变量和成员变量的区别:

1. 相同点:

定义变量的格式相同;

先声明后使用;

变量都有对应的作用域。

2. 不同点:

两者声明的位置及作用范围不同,如下表所示:

成员变量直接定义在类中,根据修饰符的不同,可以在当前类或其他类中有效。
局部变量定义在方法的形参、方法内部、代码块内部的变量。只在当前方法及代码块内部有效。

关于Java中局部变量和成员变量有什么区别就分享到这里了,希望以上内容可以对大家有一定的参考价值,可以学以致用。如果喜欢本篇文章,不妨把它分享出去让更多的人看到。

推荐阅读:
  1. 怎么理解Java 执行过程中的内存模型变化
  2. Java中怎么创建一个比特币地址

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:如何通过Javascript脚本获取form和input内容

下一篇:pycharm安装包失败怎么解决

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》