黑马程序员技术交流社区
标题:
关于ArrayList集合中一些问题的疑惑??
[打印本页]
作者:
任雷彬
时间:
2012-11-7 18:39
标题:
关于ArrayList集合中一些问题的疑惑??
在看毕老师视频ArrayList视频中,
如下代码,创建的sop函数的参数类型是Object类,但是调用sop函数时实参却写的是 a1.size();
但是编译运行成功,这是为什么?我有些疑惑?
import java.util.*;
/*
add 方法的参数类型是Object.以便于接收任意类型的对象。
*/
class CollectionDemo
{
public static void main(String[] args)
{
//创建一个集合容器。使用Collection接口的子类,Arraylist。
ArrayList a1 = new ArrayList();
//1.添加元素
a1.add("java01"); //add(Object obj)
a1.add("java02");
a1.add("java03");
a1.add("java04");
//2.获取个数。集合长度。
sop("size"+a1.size()); //调用韩sop函数,参数列表参数类型是Object类为什么
//是实参是a1.size();?
//System.out.println("Hello World!");
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
作者:
HeiMa-黄倲江
时间:
2012-11-7 19:04
Object 数据类型
保存引用对象的 32 位(4 字节)地址。可以为 Object 的变量分配任何引用类型(字符串、数组、类或接口)。Object 变量还可以引用任何值类型(数值、Boolean、Char、Date、结构或枚举)的数据。
备注
Object 数据类型可以指向任意数据类型的数据,包括您的应用程序识别的任意对象实例。当您在编译时不知道变量可能指向哪种数据类型时,请使用 Object。
作者:
焦晨光
时间:
2012-11-7 19:15
public static void sop(Object obj)
{
System.out.println(obj);
}
定义成object类型,表示可以接受任何类型的数据,
a1.size();返回值是int类型,当然可以被sop函数接收了,sop输出可以是表达式,只要表达式有一个固定的值,任意类型都ok!~
sop("size"+a1.size());等于System.out.println(size"+a1.size());
作者:
颜峰
时间:
2012-11-7 19:43
因为使用到了多态,任意对象都可以当成Object传入
作者:
陈军
时间:
2012-11-8 11:23
毕老师的sop(Object obj)方法可以打印任何对象,因为参数是Objectl类型引用变量。
而al.size()方法返回的是int型值,该值会被自动装箱成Integer对象。
利用多态。就可以传递给Object 变量obj。
所以编译运行都可以。
作者:
会飞的鱼
时间:
2012-11-8 13:12
sop("size"+a1.size());
sop(Object obj)看起来接受的是obj对象,但你疑惑的是sop("size"+a1.size()); 这句怎么是个obj?
其实"size"+a1.size()做了两件事:
1、a1.size()求元素个数
2、"size"+a1.size()就是一个字符串了
等于就是说sop("size"+a1.size()); 传入的是一个String字符串,这哥们不也是一个Object吗??所以可以。
看以下:
//String a="a";
//System.out.println(a+1);
//System.out.println(a.getClass().getName()); 这里是java.lang.String,说明他是一个字符串String,但它继承Ojbect类,如下一句是:java.lang.Object
//System.out.println(a.getClass().getSuperclass().getName());
作者:
黑马贾林栋
时间:
2012-11-8 13:17
因为Object是上帝类,所有的类都是它的子类,所以可以把任何实参传进去
作者:
杨志男
时间:
2012-11-8 15:24
我倒是挺同意6楼的,不过咱能把obj类写成Object类么
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2