Java作为一种面向对象的语言,声称一切都是对象.
1.Java的数据类型
Java的数据类型分为:
(1)基本数据类型:boolean,char,short,int,long,float,double,void
(2)引用类型:普通的对象,数组,字符串,接口,枚举等.
2.了解一下数组
例如:整形数组的表示方法.
int[] intArrays={1,2,3,4,5};
int[] intArrays1=new int[5];
int[][] intArrays2=new int[3][5];
上面的代码的写法是我们常用的.但是说数组是一种对象,跟普通对象的创建方式new Object(),有很大的不同.
Java的语法中提供了RTTI和Reflect的功能,可以用来窥探Java中数组的一些机制.
(1)测试代码,用来输出数组的Class对象信息.
System.out.println("intArrays :"+intArrays.getClass().getName() +",super class:"+intArrays.getClass().getSuperclass().getName());
System.out.println("intArrays1:"+intArrays1.getClass().getName()+",super class:"+intArrays1.getClass().getSuperclass().getName());
System.out.println("intArrays2:"+intArrays2.getClass().getName()+",super class:"+intArrays2.getClass().getSuperclass().getName());
/* output
intArrays:[I,super class:java.lang.Object
intArrays1:[I,super class:java.lang.Object
intArrays2:[[I,super class:java.lang.Object
*/
从上面的结果中得知:
intArrays,intArrays1的类名称是:[I,父类是Object;
intArray2的类名称是:[[I,父类是Object
那么,数组是对象,是无可置疑的.
(2).测试代码,说明数组元素类型和维度相同的数组对象,有相同的类.
System.out.println("intArrays.equals(intArrays1)="+intArrays.equals(intArrays1));
System.out.println("intArrays.getClass().isInstance(intArrays1)="+intArrays.getClass().isInstance(intArrays1));
/* output
intArrays.equals(intArrays1)=false
intArrays.getClass().isInstance(intArrays1)=true
*/
(3).关于数组对应的类,它的内部构造.
System.out.println("getConstructors():"+intArrays.getClass().getConstructors().length);
System.out.println("getDeclaredConstructors():"+intArrays.getClass().getDeclaredConstructors().length);
System.out.println("getMethods():"+intArrays.getClass().getMethods().length);
System.out.println("getDeclaredMethods():"+intArrays.getClass().getDeclaredMethods().length);
System.out.println("getFields():"+intArrays.getClass().getFields().length);
System.out.println("getDeclaredFields():"+intArrays.getClass().getDeclaredFields().length);
/*output
getConstructors():0
getDeclaredConstructors():0
getMethods():9
getDeclaredMethods():0
getFields():0
getDeclaredFields():0
*/
从上面的结果可以看出来:数组对象的类,没有构造函数/没有属性域/没有自己声明的方法(只有继承自Object的public方法.)
这里就有一个疑问:数组最常用的操作就是intArrays.length,表示数组的长度.
那么这个length到底是怎么回事?
1.Java的数据类型
Java的数据类型分为:
(1)基本数据类型:boolean,char,short,int,long,float,double,void
(2)引用类型:普通的对象,数组,字符串,接口,枚举等.
2.了解一下数组
例如:整形数组的表示方法.
int[] intArrays={1,2,3,4,5};
int[] intArrays1=new int[5];
int[][] intArrays2=new int[3][5];
上面的代码的写法是我们常用的.但是说数组是一种对象,跟普通对象的创建方式new Object(),有很大的不同.
Java的语法中提供了RTTI和Reflect的功能,可以用来窥探Java中数组的一些机制.
(1)测试代码,用来输出数组的Class对象信息.
System.out.println("intArrays :"+intArrays.getClass().getName() +",super class:"+intArrays.getClass().getSuperclass().getName());
System.out.println("intArrays1:"+intArrays1.getClass().getName()+",super class:"+intArrays1.getClass().getSuperclass().getName());
System.out.println("intArrays2:"+intArrays2.getClass().getName()+",super class:"+intArrays2.getClass().getSuperclass().getName());
/* output
intArrays:[I,super class:java.lang.Object
intArrays1:[I,super class:java.lang.Object
intArrays2:[[I,super class:java.lang.Object
*/
从上面的结果中得知:
intArrays,intArrays1的类名称是:[I,父类是Object;
intArray2的类名称是:[[I,父类是Object
那么,数组是对象,是无可置疑的.
(2).测试代码,说明数组元素类型和维度相同的数组对象,有相同的类.
System.out.println("intArrays.equals(intArrays1)="+intArrays.equals(intArrays1));
System.out.println("intArrays.getClass().isInstance(intArrays1)="+intArrays.getClass().isInstance(intArrays1));
/* output
intArrays.equals(intArrays1)=false
intArrays.getClass().isInstance(intArrays1)=true
*/
(3).关于数组对应的类,它的内部构造.
System.out.println("getConstructors():"+intArrays.getClass().getConstructors().length);
System.out.println("getDeclaredConstructors():"+intArrays.getClass().getDeclaredConstructors().length);
System.out.println("getMethods():"+intArrays.getClass().getMethods().length);
System.out.println("getDeclaredMethods():"+intArrays.getClass().getDeclaredMethods().length);
System.out.println("getFields():"+intArrays.getClass().getFields().length);
System.out.println("getDeclaredFields():"+intArrays.getClass().getDeclaredFields().length);
/*output
getConstructors():0
getDeclaredConstructors():0
getMethods():9
getDeclaredMethods():0
getFields():0
getDeclaredFields():0
*/
从上面的结果可以看出来:数组对象的类,没有构造函数/没有属性域/没有自己声明的方法(只有继承自Object的public方法.)
这里就有一个疑问:数组最常用的操作就是intArrays.length,表示数组的长度.
那么这个length到底是怎么回事?