晕, 1.数组的length是一个属性而不是方法2. int.class和Integer.TYPE是等价的, 看看Integer.TYPE的定义: public static final Class TYPE = Class.getPrimitiveClass("int"); 而Class.getPrimitiveClass又是一个本地方法,所以也不知道它是怎么实现的了
int不是对象,所以也不会是Integer,也没有任何方法 Class c1=int.class;//或Class c1=Integer.TYPE;这只是得到int的primitive class Class c2=Integer.class; System.out.println(c1.equals(c2));//输出false 数组是对象,你可以调用从Object继承的方法 Object o=new String[10];//从此行可知它是对象,因为只有一个对象才能引用另一个对象 System.out.println(o.getClass().getName());//此行输出java.lang.String[] 这里的getClass()就是调用了数组从Object继承的方法,返回的Class不是String.class,而是一个名称后缀为[]的类
1.数组的length是一个属性而不是方法2. int.class和Integer.TYPE是等价的,
看看Integer.TYPE的定义:
public static final Class TYPE = Class.getPrimitiveClass("int");
而Class.getPrimitiveClass又是一个本地方法,所以也不知道它是怎么实现的了
看上面
或者是基本数据的集合。
Class c1=int.class;//或Class c1=Integer.TYPE;这只是得到int的primitive class
Class c2=Integer.class;
System.out.println(c1.equals(c2));//输出false
数组是对象,你可以调用从Object继承的方法
Object o=new String[10];//从此行可知它是对象,因为只有一个对象才能引用另一个对象
System.out.println(o.getClass().getName());//此行输出java.lang.String[]
这里的getClass()就是调用了数组从Object继承的方法,返回的Class不是String.class,而是一个名称后缀为[]的类
=int实际上就是Integer,只不过int在编译器作了特殊的解释
============================================================汗,int是简单类型的变量而Integer是复合类型的,怎么会实际上就是Integer,可以认为Integer是int的一个封装.===================================================
=int在编译器作了特殊的解释,屏蔽了相关方法而已
===================================================
JVM还需要做特殊的解释?..int只当作简单类型的变量来处理就OK了,怎么会还需要屏蔽相关方法呢.因为他本身就没有这些方法,他在内存中仅仅表示一个整形数据,没有任何属性和方法,因为他是简单类型的。个人认为和C中的int 类似
System.out.println(o.getClass().getName());//此行输出java.lang.String[]
这里的getClass()就是调用了数组从Object继承的方法,返回的Class不是String.class,
而是一个名称后缀为[]的类????
===================================================================
返回的Class不是String.class,而是一个名称后缀为[]的类????
应该是java.lang.String类型的数组吧