Java基础--变量

Java基础–变量

1. 变量分类


   parameterimage00004


     成员变量: 类中定义的变量

     局部变量: 方法中定义的变量

     类变量: 类中定义且有static修饰的变量

     实例变量: 类中定义无static修饰的变量



     ▶误区: Java无全局变量的概念



     ●特点: 一、成员变量可以不指定初始值,初始化时自动分配初始值。

           [初始值分配]:类型为数值型,初始值为0;

                  类型为boolean型,初始值为false;

                  类型为引用类型,初始值为null。

         二、局部变量必须先指定初始值才能使用。

2. 变量何时初始化

     类变量: 与类息息相关,加载类时,自动分配内存空间进行初始化。

     实例变量: 与实例(实例即对象)息息相关,创建对象时,进行初始化。

     局部变量: 与方法息息相关,方法被执行时,进行初始化,方法结束变量失效。

3. 变量的访问

  如下为代码示例以及提出问题

//Car类
class Car {
    String color;      //实例变量
    double price;      //实例变量
    static int years;  //类变量
}
//CarTest类
public class CarTest {
    public static void main(String[] args){
        System.out.println(Car.years);          //years为Car的类变量,通过类名直接访问,此行输出结果为years的初始值0
        Car Benz = new Car();
        System.out.println(Benz.color);         //color为Car的实例变量,通过new一个Car对象来访问,此行输出结果为color的初始值null
        System.out.println(Benz.price);         //price为Car的实例变量,同样通过new一个Car对象来访问,此行输出结果为price的初始值0.0

        //通过Benz对象对两个实例变量进行赋值
        Benz.color = "黑色";
        Benz.price = 580000.0;
        System.out.println(Benz.color);        //输出黑色
        System.out.println(Benz.price);        //输出580000.0

        //通过Benz对象对seats这个类变量进行赋值
        Benz.years = 5;
        System.out.println(Benz.years);        //输出5

        Car Porsche = new Car();
        Porsche.color = "粉色";
        Porsche.price = 970000.0;
        System.out.println(Porsche.color);     //输出粉色
        System.out.println(Porsche.price);     //输出970000.0

        /*注意*/
        System.out.println(Porsche.years);     //输出5

        /*   提问:代码中没有给Porsche对象的years赋值,为何输出结果是5   */

    }
}

  问题:代码中没有给Porsche对象的years赋值,为何输出结果是5。

  详解如下图:

   parameterimage00005

解释:因为years是Car类的类变量,在被赋值为5后才new的Porsche对象,此后只要是Car类的实例years都为5,如下:

Car Lexus = new Car();
System.out.println(Lexus.years);       //输出也是5

Car Audi = new Car();
System.out.println(Audi.years);        //输出也是5


4. 总结

  <1> 类变量专属于类本身,类加载完就完成初始化。
  <2> 实例变量专属于对象本身,new出对象后才完成初始化。
  <3> 局部变量依赖于方法本身,当方法被执行时才进行初始化。
  <4> 类变量通过→类名.变量名 进行访问。
  <5> 实例变量通过→new出该类对象后,对象名.变量名 进行访问。
  <6> 注意点:Java语言允许通过对象来访问类变量,作用等同于→类名.变量名 的访问方式。
  <7> 为避免混乱,建议:类变量通过类名访问,实例变量通过对象访问,尽量避免通过对象来访问类变量。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值