黑马程序员技术交流社区
标题:
原来object 也是一种数据类型
[打印本页]
作者:
郭孟涛
时间:
2013-2-19 01:25
标题:
原来object 也是一种数据类型
本帖最后由 郭孟涛 于 2013-2-19 02:02 编辑
对object一直记得是一个基类,所以看到 object obj;的时候一直在以为是在声明一个obj的对象。
按照这个思路,往下理解问题 困扰了我好几天了。一度都怀疑我理解能力有问题了。
刚刚终于茅塞顿开,
object原来还是一个数据类型
,是一个
基类型
。那么object obj,仅仅是声明一个变量而已。你可以传任何东西。
object代表8中基础数据类型+3种引用类型的共计11种数据类型的综合
。
以下是一个简易代码示例:
class Obj
{
public static void main(String[] args)
{
/* Object不仅仅是所有类的一个基类,也是所有数据类型的一个基数据类型
** Object代表了8种数据类型的综合体,用他可以定义任意类型的数据
** 简单的说Objec也是一种数据类型
*/
Dem d = new Dem();
Ok o = new Ok();
Object love ; // 定义一个Object的数据类型的变量
love ="adfdf"; // 赋值为字符串型
love = 5; // 赋值为整型
love = 22.30; // 赋值为小数型
love = true; // 赋值为布尔型
love = o; // 赋值为对象
love = new Ok(); // 赋值为实例化对象
love = d.talk(6);// 赋值为对象的方法
System.out.println(love);
}
}
class Dem
{
Object talk(Object obj)
{
return obj;
}
}
class Ok
{
int a =9;
String b = "oko";
}
复制代码
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