黑马程序员技术交流社区

标题: 原来object 也是一种数据类型 [打印本页]

作者: 郭孟涛    时间: 2013-2-19 01:25
标题: 原来object 也是一种数据类型
本帖最后由 郭孟涛 于 2013-2-19 02:02 编辑

对object一直记得是一个基类,所以看到 object obj;的时候一直在以为是在声明一个obj的对象。
按照这个思路,往下理解问题 困扰了我好几天了。一度都怀疑我理解能力有问题了。
刚刚终于茅塞顿开,object原来还是一个数据类型,是一个基类型。那么object obj,仅仅是声明一个变量而已。你可以传任何东西。 object代表8中基础数据类型+3种引用类型的共计11种数据类型的综合

以下是一个简易代码示例:
  1. class Obj
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                
  6.         
  7.          
  8.         /* Object不仅仅是所有类的一个基类,也是所有数据类型的一个基数据类型
  9.                 ** Object代表了8种数据类型的综合体,用他可以定义任意类型的数据
  10.         ** 简单的说Objec也是一种数据类型
  11.                 */
  12.                 Dem d = new Dem();
  13.                 Ok o = new Ok();
  14.                
  15.                 Object love ;    // 定义一个Object的数据类型的变量
  16.                 love ="adfdf";   // 赋值为字符串型
  17.                 love =  5;       // 赋值为整型
  18.                 love =  22.30;   // 赋值为小数型
  19.                 love =  true;    // 赋值为布尔型
  20.                 love = o;        // 赋值为对象
  21.                 love = new Ok(); // 赋值为实例化对象
  22.                 love = d.talk(6);// 赋值为对象的方法

  23.                 System.out.println(love);
  24.         }
  25. }
  26. class Dem
  27. {
  28.         Object talk(Object obj)
  29.         {
  30.                 return obj;
  31.         }
  32. }
  33. class Ok
  34. {
  35. int a =9;
  36. String b = "oko";
  37. }
复制代码
object代表8中基础数据类型+3中引用类型的综合。
作者: 刘明杰    时间: 2013-2-19 10:02
类本身就是一个数据类型,object本身也是类
作者: 黑马-王言龙    时间: 2013-2-19 12:24
呵呵,恭喜恭喜!

作者: 王昕    时间: 2013-2-19 12:53
本帖最后由 王昕 于 2013-2-19 12:58 编辑

你说的是Object,因为小写object是对象的意思,大写才是类名,这点看英文书尤其要注意。
另外,你现在的理解,还是有点问题……
Object是所有类的父类,你可以把基本数据类型赋值给它是因为auto-boxing(自动包装)。
Java 5.0以后把基本数据类型包装成对象不用程序员手动做,而改成了自动。所以可以Integer = 5;这种。Object = 5;也是同样自动包装了基本数据类型。
还有,你所谓的三种引用类型,什么叫“赋值为对象的方法”……方法可以出现在任何需要这个方法的返回值类型的变量的地方,所以你的22行和20行是一个性质。
Object love,love就是一个Object类型的引用而已,差别就是Object是所有类的父类,仅此而已,没别的区别。
你的love = 5;其实是love = new Integer(5);在Java 5.0之前只能这样,现在这步自动了。你还是把对象赋值给love的,不是int,是int自动包装成了Integer对象。
所以非要分的话就是两种,一种love = new Xxx();,一种就是o = new Xxx(); love = o;,这和普通的对象引用没什么区别,就是这个类是所有类的父类而已。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2