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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 于启会 中级黑马   /  2012-8-6 00:51  /  1817 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 于启会 于 2012-8-6 01:37 编辑
  1. import java.util.ArrayList;


  2. public class test {
  3.         public static void main(String arg[]){
  4.                 ArrayList<String> arr1 = new ArrayList<String>();
  5.                 arr1.add("aaa");
  6.                 arr1.add("aaaa");
  7.                 ArrayList<Integer> arr2=new ArrayList<Integer>();
  8.                 arr2.add(3);
  9.                 System.out.println(arr1.getClass()==arr2.getClass());
  10.         }
  11. }
复制代码
两个ArrayList的类型不一样,
为什么运行结果返回为true?

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 新人亮相,赞一个!

查看全部评分

5 个回复

倒序浏览
getClass()
public final Class<?> getClass()
返回此 Object 的运行时类。返回的 Class 对象是由所表示类的 static synchronized 方法锁定的对象。
实际结果类型是 Class<? extends |X|>,其中 |X| 表示清除表达式中的静态类型,该表达式调用 getClass。 例如,以下代码片段中不需要强制转换:

Number n = 0;
Class<? extends Number> c = n.getClass();

你在代码后面加一句,帮助理解,返回运行时的类,而不是数据类型
System.out.println(arr1.getClass());
输出:
class java.util.ArrayList


评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 赞一个!

查看全部评分

回复 使用道具 举报
这样和你说吧,你定义的2个集合都是ArrayList吧,当你new这2个集合的时候,我们调用的是哪里的构造方法呢?调用的是Java\jdk1.6.0_10\jre\lib\rt.jar中的ArrayList的Class中的构造方法吧,而arr1.getClass() 和arr2.getClass()  他们返回的都是ArrayList的Class,所以他们肯定是同一个Class啊,结果肯定是相等的,打印一个true
getClass是拿到这个对象的字节码文件,因为这2个对象都属于同一个字节码文件,所以肯定为true
希望可以帮助你理解

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 赞一个!

查看全部评分

回复 使用道具 举报

RE: <以解决>关于Array的问题

李知伦 发表于 2012-8-6 01:01
getClass()
public final Class getClass()
返回此 Object 的运行时类。返回的 Class 对象是由所表示类的 s ...

恩  懂了   System.out.println(arr1.getClass()); 和System.out.priint(arr2.getClass())  都是class java.util.ArrayList   类  所以返回为true
回复 使用道具 举报
问题已经解决
回复 使用道具 举报
你获取到的两个对象都是人。额比对的正是人这个总类型。而对象的特性。是男人是女人我们不知道
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马