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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

关于class对象一直没搞清楚,查文档也没查出来满意结果,恳请各位知情同学帮帮忙!谢谢了!
    1 按照张老师视频中的讲解,只有被加载到内存中的二进制码才是字节码,即class对象。加载到内存后,根据这份字节码创建类的实例对象,那这个class对象中封装的是什么,它和类的实例对象有什么区别?
    2    int[] arr1 = new int[3];
         int[] arr2 = new int[5];
         System.out.println(arr1.getClass()==arr2.getClass());
         打印结果为true,表明这两个数组的class对象是相同的,即为同一个class对象,那么同一个class对象怎么能创建出两个长度不同的数组呢?class对象到底是什么呢?
            

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

6 个回复

正序浏览
刘云龙 发表于 2012-10-16 22:12
楼上说的不正确,getClass()返回值类型是class类型没错,但不是返回.class文件。更不是因为写在了同一个.Cl ...

谢谢这位仁兄的提醒,那这个getClass()返回的是数组类的哈希地址值吗?
什么样的变量可以使用这个getClass()函数,是不是只有引用数据类型的可以使用这个方法?
还有是不是只能同类之间的对象进行比较?比如String类型和int[]就不能比较?
回复 使用道具 举报
楼上说的不正确,getClass()返回值类型是class类型没错,但不是返回.class文件。更不是因为写在了同一个.Class文件中,因为与之并无关系。
楼主的第二个问题,结果之所以一样,是因为数组在java中也是一个类。所以,当使用getClass()对其两个实例获取Class时,返回的都是数组类,所以结果为True。

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1

查看全部评分

回复 使用道具 举报
楼上说的不正确,getClass()返回值类型是class类型没错,但不是返回.class文件。更不是因为写在了同一个.Class文件中,因为与之并无关系。
楼主的第二个问题,结果之所以一样,是因为数组在java中也是一个类。所以,当使用getClass()对其两个实例获取Class时,返回的都是数组类,所以结果为True。
回复 使用道具 举报
class对象其实就是你用javac工具编译以后生成的那个.class后缀名的文件,被称为字节码文件,也叫java执行文件

在java中有一个专门描述类的类,具体内容我不太清楚,但是这个类应该是对所有类型的类的一个描述,像你在java.lang包中看到的那些类文件(后缀名.class),这些类都应该继承class类的

而你上面的那个getlClass()方法的返回值类型就是class类型,也就是.class后缀名的类文件对象

假设你的两个数组都是定义在Demo.class中,那么arr1.getClass()返回值为:Demo.class,   arr2.getClass()返回值也是Demo.class,==在这里就和equals()作用一样,用来比较这两个对象是否是同一对象,所以返回的结果为true

说的啰嗦了点,不过大致就是这个意思,如果有不对的地方希望谅解,希望能够对你有帮助!

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
兄弟大概是没明白 类和对象的关系。
类的意思大概可以理解为类别,比如现实生活中,有人类,鸟类。
对象的意思就是某个类别里的具体实物,比如人类里有你,有我,有他。
用很概念的形式说出来就是:类是对象的抽象,对象是类的实体。
你举的这个例子,arr1和arr2它们都属于同一个类,就跟你我一样,同属于人类。我们的高度当然可以不一样。
所以class对象的长度也可以不一样。它们调用getClass()方法得到的结果是true。对的,它们就是同类。

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
一个类代表要执行的代码,而数据则表示其相关状态。状态时常改变,而代码则不会。当我们将一个特定的状态与一个类相对应起来,也就意味着将一个类实例化。尽管相同的类对应的实例其状态千差万别,但其本质都对应着同一段代码。{:soso_e181:}

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

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