A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

class Car
{
        //描述色
        String color="red";
        //描述轮胎数
        int num=4;
        //运行行为
        void run[]
        {
                System.out.println(color+",,"+num);
        }
}
class Cardemo
{
        public static void main(String[] args)
        {
                //生产汽车,在JAVA中通过new操作符来完成.
                //其实就是在堆内存中产生一个实体.
                Car c=new Car();//c就是一个类类型变量,是引用量型变量的一种,记住:类类型变量指向对象.即该类所产生的实体.
                //需求:将己有的车改成蓝色,指挥该对象做事情,在JAVA中的指挥方式为:对象.对象成员;
                 c.color="blue";
                 c.run();
                 
                 Car c1=new Car();
               
        }
}
这是黑马第五天的内容,我反复看了4遍了,还是有一个地方弄不明白,就是成员变量作用范围这块,不是说成员变量是作用范围就是他所在的类中嘛,,?那为什么下边class Cardemo这个类中的Car c=new Car(),初始化值是color="red";num=4;呢,,上定的值也不是这个类里的啊,,这不是两个不同的类嘛..我觉得初始化值应该是null的嘛,,但看毕老师画的那个图的时候,说的是是red和4...我就不懂了,,写的有点乱,,希望谁 帮我解释下..:(

11 个回复

倒序浏览
Cardemo是主类,java运行就从这里开始。你在主类里产生一个对象Car c=new Car(),这个汽车对象的初值是color="red";num=4;然后再把它的颜色改为blue。
回复 使用道具 举报
上面 的   
     String color="red";
        //描述轮胎数
        int num=4 这两个定义的是全局变量,在整个程序中都会产生作用。
       当生成新的对象时首先就会调用这两个量,直到有局部变量将它的值改变
      如 程序中的  c.color="blue"; 就是把color在全局定义的red改为了 blue。
     也就是说只要没有局部变量去改变它的值生成的对象所调用的都是全局变量的值。
               
回复 使用道具 举报
Car c=new Car(); new出了一个car的新实例。这个实例已经初始化完成了(在堆中)  
       String color="red";
        //描述轮胎数
        int num=4;
声明的c只是指向了堆内存中的这个实例 所以它是有值的。
回复 使用道具 举报
蒙武辉 发表于 2012-3-18 15:28
Cardemo是主类,java运行就从这里开始。你在主类里产生一个对象Car c=new Car(),这个汽车对象的初值是colo ...

这个我了解啊,我不懂的就是,为什么初值是color="red",而不是空啊,,程序不是从主函数开始嘛,,还是不懂,,
回复 使用道具 举报
魏群 发表于 2012-3-18 15:39
Car c=new Car(); new出了一个car的新实例。这个实例已经初始化完成了(在堆中)  
       String color=" ...

恩,,这个意思我懂,,也知道这个C其实就是去指向了堆中的对象,可能我没说清楚,,,我的意思是String color="red",,毕老师讲是成员变量,作用范围是整个类中,,但下边的Cardemo和上边的Car这不是两个不同的类嘛,,为什么都可以用呢,,还是说String color="red"不是成员变量,或者是他的作用范围不是整个类,而是整个程序中,,,?
回复 使用道具 举报
魏昂 发表于 2012-3-18 15:29
上面 的   
     String color="red";
        //描述轮胎数

恩,如果按你这么说的我就懂了,,,全局变量,作用于整个程序中,
但毕老师视频里说的是成员变量,,作用范围是整个类中,,,我就不明白了哈,,,,
还是成员变量也能叫全局变量??
回复 使用道具 举报
魏昂 黑马帝 2012-3-18 16:52:16
8#
徐宏波 发表于 2012-3-18 16:45
恩,如果按你这么说的我就懂了,,,全局变量,作用于整个程序中,
但毕老师视频里说的是成员变量,,作用范围是 ...

一个东东、两个名字.。
回复 使用道具 举报
蒙武辉 黑马帝 2012-3-18 16:52:53
9#
class Car
{
        //描述色
        String color="red";
        //描述轮胎数
        int num=4;
        //运行行为
        void run[]
        {
                System.out.println(color+",,"+num);
        }
}

因为你的这个汽车类的初始是红色的。
回复 使用道具 举报
魏群 黑马帝 2012-3-18 16:53:58
10#
全局变量是作用正个类的 ,不是作用于整个程序中。
Car c 属于Cardemo的main方法,c 都属于我了 那c里面的东西是不是也属于我呢,是我的直接用就好了,这么比喻可能不准确。但是就是这个意思。
回复 使用道具 举报
魏昂 发表于 2012-3-18 16:52
一个东东、两个名字.。

那这样就懂了,,3Q:victory:
回复 使用道具 举报
魏昂 黑马帝 2012-3-18 17:01:46
12#
徐宏波 发表于 2012-3-18 16:54
那这样就懂了,,3Q

呵呵 、好好学吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马