一.数组的简介 java中的数组、是一种简单的线性数据存储结构、他用牺牲自动扩展大小来换取与集合相比的唯一优势——查询效率的提升。他本身是一种引用类型的数据、所以我们要使用数组就要首先声明、初始化他、而他的初始化的完成也就意味着此数组的大小将不再改变、而且具有初始值。当存储的是java原始基础类型时、默认值是不同基础类型值的默认值、当是引用类型时、如果我们没有指定具体的对象、则他的默认值是null。从数组的内部组成来看、觉得java中没有多维数组!所谓的多维数组其实就是一维数组的延伸、只是数组的值存放的是另一个数组的引用、依次深入、我们可以扩展到任意维度的数组、注意:数组的扩展的过程中只能存放相同类型或者子类型的数组! Java中的数组长度不变!存储的数据类型唯一!有时候我们会有种错觉觉得这两者都是不成立的、本质是因为java中继承的存在、我们定义的父类型的数组、他的数组元素也同样可以存放子类对象、这样就造成了数组存放对象可变的假象。当我们将数组的引用从一个对象改变到子类的对象的时候、感觉数组的长度变化、其实变的是引用指向的对象的长度、原来引用指向的对象长度没有变化、只是此对象被遗弃了而已、对此只要记住一点:java中的数组时引用类型、当声明初始化一个对象时、数组的引用存放在栈内、实际对象存放在堆内存中、而我们平常所指的长度、类型都是具体对象的长度、类型! 此外、Arrays是一个操作java数组的类、提供了一些非常实用的用于操作数组的类、还有就是java数组与集合比较相似。 二. 数组的声明,初始化及常用方法
1.声明数组
String[] array1 = new String[6]; String[] array2 = {"a","b","c", "d", "e","f"}; String[] array3 = new String[]{"a","b","c","d","e","f"};
2.数组输出
int[] intArray = { 1, 2, 3, 4, 5}; String intArrayToString = Arrays.toString(intArray); // print directly will print reference value System.out.println(intArray); // [I@7150bd4d System.out.println(intArrayToString); // [1, 2, 3, 4, 5]
3.用一个数组创建数组列表 String[] stringArray = { "a", "b", "c", "d", "e" ,"f"}; ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(stringArray)); System.out.println(arrayList); // [a, b, c, d, e, f]
4.查看一个数组是否包含某个值 String[] stringArray = { "a", "b", "c", "d", "e", "f"}; boolean b = Arrays.asList(stringArray).contains("f"); System.out.println(b); // true boolean bo = Arrays.asList(stringArray).contains("g"); System.out.println(b); // false
5.数组拼接 int[] intArray1 = { 1, 2, 3, 4, 5 }; int[] intArray2 = { 6, 7, 8, 9, 10 }; // Apache Commons Lang library int[] intArray3 = ArrayUtils.addAll(intArray, intArray2); String intArray3ToString = Arrays.toString(intArray3); System.out.println(intArray3ToString); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
6.声明内联数组(Array inline) method(new String[]{"a", "b", "c", "d", "e"}); 7.数组元素放入字符串 String j = StringUtils.join(new String[] { "a", "b", "c" }, ", "); System.out.println(j); // a, b, c 8.将数组列表转换为数组 String[] stringArray = { "a", "b", "c", "d", "e" }; ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(stringArray)); String[] stringArr = new String[arrayList.size()]; arrayList.toArray(stringArr); for (String s : stringArr) { System.out.println(s); } 9.数组转换为集合(set) String[] stringArray = { "a", "b", "c", "d", "e" }; Set<String> set = new HashSet<String>(Arrays.asList(stringArray)); System.out.println(set); //[d, e, b, c, a] 10.逆向一个数组 int[] intArray = { 1, 2, 3, 4, 5 }; ArrayUtils.reverse(intArray); System.out.println(Arrays.toString(intArray)); //[5, 4, 3, 2, 1] 11.删除数组元素 int[] intArray = { 1, 2, 3, 4, 5 }; int[] removed = ArrayUtils.removeElement(intArray, 3);//create a new array System.out.println(Arrays.toString(removed)); 12.整数转换为字节数组 byte[] bytes = ByteBuffer.allocate(4).putInt(8).array(); for (byte t : bytes) { System.out.format("0x%x ", t); }
