Java基础数组

来源:互联网 发布:淘宝店铺客服中心图片 编辑:程序博客网 时间:2024/06/16 22:21

一.数组的简介
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);  


原创粉丝点击