本帖最后由 yjiang_09 于 2014-8-31 15:05 编辑
package com.sf.day1;
import java.lang.reflect.Array;
import java.util.Arrays;
public class ArrayRefl {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int a[]={1,2};
int b[]=new int[5];
int c[][]=new int[3][4];
String d[]=new String[]{"To","Be","No","1"};
System.out.println(a.getClass()==b.getClass());//true.注:用等号,没必要用equals
System.out.println(a.getClass().getName());// [I
System.out.println(c.getClass().getName());// [[I
System.out.println(c.getClass().getSuperclass().getName());//java.lang.Object
System.out.println(d.getClass().getSuperclass().getName());//java.lang.Object
Object obj1=a;
Object obj2=b;
Object obj3=c;
Object obj4=d;
//Object[] obj5=a; //定义错误,a中元素为int类型,注意基本数据类型不是Object
//Object[] obj5=b;
Object[] obj6=c; //可以,因为c中元素为一位数组,一维数组是Object
Object[] obj7=d;
System.out.println(a); // [I@1db9742
System.out.println(Arrays.asList(a));// [[I@1db9742]
System.out.println(d); //[Ljava.lang.String;@106d69c
System.out.println(Arrays.asList(d)); //[To, Be, No, 1]
printObj(a);
printObj(d);
printObj("hehe");
}
public static void printObj(Object obj) {
// TODO Auto-generated method stub
if(obj.getClass().isArray()){
for(int i=0;i<Array.getLength(obj);i++)
{
System.out.println(Array.get(obj, i)); //Array.get获取数组元素
}
}else {
System.out.println(obj);
}
}
}
张老师视频里面是直接生成了private static void printObj这个方法代码块,
1,为什么直接生成的就是private,我用public也可以啊?但它弄成private肯定有道理,为什么呢?
2,为什么想要在main方法里调用printObj就必须让printObj是static类型。因为我试了把static删掉就掉用不了了,我感觉我平时直接在main方法里也可以调用 不是static的方法啊,基础还是太差了,想不通为什么,看过很多视频,可头脑里仍然好多错觉。
好歹也有了半年web开发经验,虽然是赋值粘贴。。现在感觉这应该很简单的一个问题确让自己摸不着头脑。哎,真的深深地鄙视自己。。。。。。以为自己有点基础,都是假象,因为之前看过基础视频,所以现在在看高新技术,准备看完高新技术再好好回顾下基础。
|