Java面向对象程序设计- 变量

阅读:69

在之前我们学习了Java中的8种基本数据类型,在面向对象程序设计中,学习了引用类型,这些都可以定义为变量。

1.变量的概念

在程序运行期间,随时可能产生一些临时数据,应用程序会将这些数据保存在一些内存单元中,每个内存单元都用一个标识符来标识。这些内存单元被称为变量,定义的标识符就是变量名,内存单元中存储的数据就是变量的值。比如之前定义的基本类型:

int i = 10;

这里定义了一个变量名为i,类型为int,在程序的运行期间,通过该变量名i可以随时使用。

在java中变量的声明,语法如下: type name = value;

参数说明:

  • type 数据类型
  • name 变量名
  • value 变量的值,基本数据类型有默认值。
2.变量分类

我们常说的分类,按照作用域分为局部变量、成员变量、类变量。

它们都是变量,只是作用域不同。作用域,先简单的理解为,起作用的范围。

2.1局部变量

局部,顾名思义,就是作用范围有限。

在方法、构造方法、语法块中定义的变量,都是局部变量。但这些地方声明,当方法、构造方法、语法块执行完后,该变量销毁。

有如下特点:

  1. 访问修饰符不能修饰局部变量;
  2. 我们知道,JVM内存,分为栈、堆等空间,局部变量是在栈上。可以简单理解为,不存在多线程并发问题,是线程安全的。
  3. 局部变量必须初始化,没有默认值。

如下程序,我们在构造函数中定义一个局部变量:

public class Person {

    public Person(){
        String name = "zhansan";
        System.out.println(name);
    }

    public static void main(String[] args){
        Person p = new Person();
    }
}

运行结果为:zhansan。

在构造器中,name就是局部变量,不能声明访问修饰符、必须初始化、线程安全的。

 

2.2 成员变量

你可以简单理解为,成员变量是类的成员,不是声明在局部变量的位置。

如下程序:

public class Person {

    String name = "zhangsan";
}

name就是成员变量,有如下特性:

  1. 声明的位置不能是方法、构造器、代码块中。
  2. 和对象共存亡,随着对象创建而产生、销毁而消息。
  3. 可以先不初始化。
  4. 可以用访问修饰符。
  5. 有默认值,数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null。变量的值可以在声明时指定,也可以在构造方法中指定。
  6. 多线程访问时,成员变量是共享的,有并发问题。
2.3 类变量

对2.2程序我们稍作修改,如下:

public class Person {

    static String name = "zhangsan";
}

name就是类变量,和2.2不同的是,前面有个关键字static修饰。

类变量,顾名思义是属于类的,和对象没有关系。

有如下特性:

  1. 类变量也称为静态变量,和成员变量声明位置相同,唯一区别是有static修饰。
  2. 类变量是属于类,和对象无关,无论该类实例化多少个对象,类变量只有唯一一个。
  3. 类变量,一般声明为public/private,一般修饰为public,final和static类型的变量,一般用于常量的定义,不会修改。通常定义为public static final,一般变量名定义为全部大写,代表常量。

 

总结:Java中变量的分类,局部变量作用域是局部,方法、构造器、代码块,成员变量是作用于整个对象,类变量和对象无关,作用域是类。

读后有收获,请打赏。更多精彩内容,请关注微信公众号。有疑问请加QQ交流群:454792501

全部评论

发表评论
更多精彩内容,请关注微信公众号