属性(成员变量) 与局部变量的异同

package com.atguigu.java;
/*
 * 对比:属性(成员变量) vs 局部变量
 *
 *1.相同点:
 *
 *         1.1 定义变量的格式:数据类型  变量名 = 变量值
 *         1.2 先声明,后使用
 *         1.3 变量都其对应的作用域 
 *
 *2.不同点:
 *
 *        2.1 在类中声明的位置的不同
 *         属性:直接定义在类的一对{}内
 *         局部变量:声明在方法内、方法形参、代码块内、构造器形参、构造器内部的变量
 *         
 *         2.2 关于权限修饰符的不同
 *         属性:可以在声明属性时,指明其权限,使用权限修饰符。
 *              常用的权限修饰符:private、public、缺省、protected  --->封装性
 *         局部变量:不可以使用权限修饰符。
 * 
 *         2.3 默认初始化值的情况:
 *         属性:类的属性,根据其类型,都默认初始化值。
 *              整型(byte、short、int、long:0)
 *              浮点型(float、double:0.0)
 *              字符型(char:0  (或'\u0000'))
 *              布尔型(boolean:false)
 *              引用数据类型(类、数组、接口:null)
 *         局部变量:没默认初始化值。
 *                 意味着,我们在调用局部变量之前,一定要显式赋值。
 *                 特别地:形参在调用时,我们赋值即可。
 * 
 *         2.4 在内存中加载的位置:
 *         属性:加载到堆空间中   (非static)
 *         局部变量:加载到栈空间
 * 
 */
public class PersonTest {
    public static void main(String[] args){
        Person p1 = new Person();//p1是在mian()方法中的变量:局部变量
        p1.age = 10;
        p1.name = "杨泽园";
        p1.eat();
        p1.talk("中国话");    
    }
}

class Person{
    //属性(默认初始化)
    String name;
    int age = 0;    
    //方法
    public void eat(){
        String food = "米饭";//food(方法内的变量:局部变量
        System.out.println(name + "可以吃饭");
    }
    public void talk(String language){//language(方法的形参):局部变量
        System.out.println("可以说话:" + language);    
    }
}


   

 

posted @ 2021-02-01 15:36  pilipalala  阅读(89)  评论(0)    收藏  举报