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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄长利 中级黑马   /  2012-3-20 19:13  /  2181 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

看视频中,老师讲的是在java中指挥对象的方式是: 对象.对象成员

如下:
  1. class Car
  2. {
  3.         //描述颜色
  4.         String color = "红色";
  5.         //描述轮胎数
  6.         int num = 4;
  7.         //运行行为。
  8.         void run()
  9.         {
  10.                 System.out.println(color+".."+num);
  11.         }
  12. }


  13. class  CarDemo
  14. {
  15.         public static void main(String[] args)
  16.         {
  17.                 //生产汽车。在java中通过 new 操作符来完成
  18.                 //其实就是在堆内存中产生一个实体。
  19.                 Car c = new Car(); // c 就是一个类类型变量。记住:类类型变量指向对象。

  20.                 //需求:将已有车的颜色改成蓝色。指挥该对象做事情,在java中的指挥方式是:对象.对象成员
  21.                 c.color = "blue";
  22.         }
  23. }
复制代码
其中 c 应该是一个对象呢,还是说是一个指向对象的变量名呢?
如果是变量名,那么指挥对象操作的格式是不是 "对象名.对象成员 "呢?

3 个回复

正序浏览
c是一个类类型的变量,类一加载就在栈内存中开辟一个空间,new Car()在堆内存创建一个对象,并把该对象的地址值付给c,此时c就是对象的引用,c.num实际上就是用对象调用成员
回复 使用道具 举报
c只是一个引用,
Car c = new Car(); 执行后会在栈内存里声明一个Car的引用c,在堆内存中产生一个新的Car对象,并把这个的对象和c连接起来。
对象名.对象成员这样的用法是正确的。
还有如果类的成员变量是被static 修饰的时候,这个成员变量是属于类的,是这个类的所有对象共有的。
调用的时候要用类名.成员变量。
回复 使用道具 举报
是的,c是指向对象的变量名,c存储在栈内存中,它的值是对象的引用,
非静态变量或方法是以"对象名.对象成员 "格式操作,如果是静态变量或方法还可以以“类名.对象成员”来操作

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

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