黑马程序员技术交流社区
标题:
关于数组的疑惑
[打印本页]
作者:
张亭
时间:
2012-5-22 00:33
标题:
关于数组的疑惑
一直有个疑惑,数组类型到底是啥样子的呢?里面的length属性是咋定义的,除了length外还有别的属性没?
我的意思是,比如有:
String str = "abc";
int[] arr = new int[3];
我想看看str 、arr 的类型
System.out.println(str.getClass());
System.out.println(arrI.getClass());
结果为
class java.lang.String
class [I
这个结果大家也都明白,String就不说了,[I 表示int的数组
问题是如果我想查看String这个类的更多信息,我可以去API文档中找java.lang,也可以直接去看源文件找
但是[I 这玩意该怎么找呢,如果我想看看它下面的length属性是怎么定义的又该如何呢
换成别的类型数组又是什么状况呢
作者:
贾旭
时间:
2012-5-22 01:42
我想,这个问题。。。你只能看源代码了
作者:
Fc10232
时间:
2012-5-22 01:48
package it.itcast.demo;
import java.lang.reflect.Array;
import java.util.List;
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
//因为int为今本类型,无法作为引用,但是可以向上转型为Object,
//new int[]{1,2,3}====>new Object[]{new int[]{1,2,3}}
//然后使用Arrays类中的asList将其变成一个集合;
int[] b =new int[]{222,33,4,5};
List allList = Arrays.asList(new Object[] { new int[] { 1, 2, 3 } });
//下面的操作都按照集合来操作
int size = allList.size();
//因为在集合中只有一个对象,所以长度为1,
System.out.println("集合的长度:"+size);
//想得到数组中的内容;使用Array类来进行操作;
Object obj = null;
obj =b;
print(obj);
}
public static void print(Object obj){
Class clazz =obj.getClass(); //通过反射获得字节码
if(clazz.isArray()){ //判断是不是数组
int len = Array.getLength(obj); // 使用Array获得
for(int i = 0 ; i<len;i++){
System.out.print(Array.get(obj,i)+"、"); //打印出内容
}
}else{
System.out.println(obj);
}
}
}
复制代码
作者:
Fc10232
时间:
2012-5-22 01:50
Fc10232 发表于 2012-5-22 01:48
看了张老师的视频作答的 希望对你有帮助-------------------共勉 加油
作者:
Fc10232
时间:
2012-5-22 01:51
哇哇 。。。。今天把日记整理了一下。。。今天差不多了 睡了 大家晚安·····················
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2