Java 面向对象(三)类的成员 之 属性

一、属性(成员变量)

  1、概念

    在类中声明的变量,用于描述类的状态信息。

  2、语法格式

修饰符 数据类型 属性名 = 初始化值 ; 

    说明:

      (1)修饰符:常用的权限修饰符由:private、缺省、protected、public;其他修饰符:static、final(暂不考虑)

      (2)数据类型:任何基本数据类型(如int、Boolean)或任何引用数据类型;

      (3)属性名:符合命名规则和规范即可;

    Demo:

1 public class Person {
2    private int age;   //声明private变量 age
3    public String name = "Lila";  //声明public变量name    
4 }

二、变量的分类:成员变量与局部变量

  方式一:按照数据类型

  

  方式二:按照在类中声明的位置

  (1)在方法体外,类体内声明的变量称为成员变量;

  (2)在方法体内部声明的变量称为局部变量。

     

            

     注意:二者在初始化值方面的异同:

      同:都有生命周期。

      异:局部变量除形参外,均需要显式初始化。      

三、成员变量与局部变量的异同

  1、相同点

    (1)定义变量的格式:数据类型  变量名 = 变量值

    (2)先声明,后使用

    (3)变量都有其对应的作用域 

  2、不同点

    (1)在类中声明的位置不同

        成员变量:直接定义在类的一对{}内;

        局部变量:声明在方法内、方法形参、代码块内、构造器形参、构造器内部的变量;

    (2)关于权限修饰符的不同

        成员变量:可以在声明属性时,指明其权限,使用权限修饰符。(常用的权限修饰符:private、public、缺省、protected )

        局部变量:不可以使用权限修饰符,唯一能加的是 final;

    (3)默认值不一样

        成员变量:如果没有赋值,会有默认值(见默认初始化值图);

        局部变量:没有默认值,必须先定义,显式赋值之后,才能使用;但是形参在调用的时候赋值即可;

    (4)在内存中加载的位置不同

          成员变量:直接加载到堆空间中(非static)

        局部变量:加载到栈空间;

    (5)作用范围不一样

          成员变量:整个类都可以使用;

        局部变量:只有在声明的方法中才可以使用;

    (6)声明周期不一样

        成员变量:随着对象创建而产生,随着对象被垃圾回收而消失;

        局部变量:随着方法进栈而产生,随着方法出栈而消失;

      

四、成员变量与局部变量的内存位置  

     

五、对象属性的默认初始化赋值

  当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化赋值。

  除了基本数据类型之外的变量类型都是引用类型。

  

原文地址:https://www.cnblogs.com/niujifei/p/13662461.html