1、什么是数组?
数组是一种数据结构,用来存储同一类型的集合,通过一个整型的下标可以返回数组中的每一个值。
通俗的说,数组就是多个相同类型数据的组合,在内存中用连续的区域进行存储,每个区域有一个下标。
2、java中数组与C/C++中数组的区别是什么?
C/C++中的数组是可以在栈空间中分配,但是Java中数组变量属于引用类型,数组对象在堆中分配。
3、数组中的元素的数据类型是否有什么限制?
数组中的元素可以是任何数据类型,包括基本类型和引用类型。
4、数组的分类:
a.一维数组
b.二维数组
5、一维数组的声明:
声明整型数组 a: int[] a 或int a[]
上面哪种方式声明更好一些呢?
int [] a这种形式要好一些,因为它将类型int[] 整型数组与变量名分开了。
我们需要注意:a只是对数组的一个引用。Java语言中声明数组时不能指定长度(也就是数组元素的个数),如int[5] a是非法的。
6、一维数组的初始化:
应该使用new关键字创建真正的数组。也就是为一个数组在内存中开辟一块存储空间。
7、如何给一维数组进行赋值呢?
可以通过for循环进行赋值。
int [] a = new int[100];
for(int i = 0;i<a.length;i++){
a[i] = i;
}
需要注意的是:数组一量被创建,就不能再改变它的大小.
8、给数组初始化的方式:
a、 使用for循环进行赋值
b、 数组创建与赋予初始值一起进行。
int [] a = {1,2,3,4};
c、 匿名数组
new int[] {1,2,3,4};
匿名数组用在什么地方呢,有些时候某个方法需要接收一个一维数组的参数,这时候就可以使用一个匿名数组代上初始化的值传递给方法。
9、如何对数组元素进行拷贝?
<1>、数组变量如何拷贝?
把一个数组变量赋给另一个数组变量,两个变量将引用同一个数组:
int[] a = {1,2,3,4};
int[] b = a;
b[2] = 4;//a[2]也会变为4
<2>、数组值应该如何拷贝?
目的是为了实现将一个数组的所有值拷贝到一个新数组中,需要使用到java.util.Arrays类中的copyOf(from,large)方法
第一个参数:从哪一个数组拷贝
第二个参数:新数组的长度
int [] a = Arrays.copyOf(b,b.length);
数组的长度当然可以扩大:
int [] a = Arrays.copyOf(b,2*b.length);
注意:如果新数组的长度大于原数组,数组元素是数值型,那么多余的元素将被赋值为0,如果数组的元素是boolean型,那么默认赋值为false;如果是引用类型,那么赋予的值是null。
<3>、在JAVASE6之前,用System类的arraycopy方法将一个数组的元素拷贝到另一个数组中(java.lang.System)
System.arraycopy(from,fromindex,to,toindex,count);
数组to必须有足够的空间存放拷贝的元素。
from元数组
fromindex:从原数组下标为fromindex的位置开始拷贝
to:新数组
toindex:从新数组的下标为toindex的位置开始填充
count:一共拷贝count个元素
10、如何来遍历数组?
<1>、使用for循环
<2>、使用增强的for循环
它可以依次处理数组中的每个元素(其他类型的元素集合亦可)而不必为指定下标值而担心。
<3>、增强的for循环格式:
for(varable:collection)statement
varable用于暂存集合中的每一个元素,并执行相应的语句。
collection必须是一个数组或者是一个实现了Iterable接口类对象。
在什么时候用增强的for循环,什么情况下不用增强的for循环呢?
如果需要处理一个集合中的所有元素,增强的for循环相当不错。
如果不希望遍历集合中所有的元素,或者在循环内需要使用到数组下标值时,则多采用传统的数组遍历方式。
11、二维数组:
<1>、什么是二维数组?
通俗的说就是以一维数组为数组元素的数组。
<2>、二维数组的声明与初始化需要注意:
按从左到右的顺序进行。
<3>、使用增强的for循环遍历二维数组如何做?
public static void main(String [] args){
int [][] a = {{1,2,3},{4,5,6}};
for(int[] b : a){
for(int c : b){
System.out.println(c);
}
}
}
12、如何对数组进行排序呢?
<1>对数值型的数组进行排序
int a = new int[]{1,2,3,4};
Arrays.sort(a);
<2>、字符串排序,先大写后小写
String [] str = new String[]{"x","X","a","A"};
Arrays.sort(str);
<3>、严格按字母顺序排序,也就是忽略大小写排序
Arrays.sort(str,String.CASE_INSENSITIVE_ORDER);
<4>、反向排序
Arrays.sort(str,Collections.reverseOrder());
<5>、忽略大小写反向排序
Arrays.sort(str,String.CASE_INSENSITIVE_ORDER);
Collections.reverse(Arrays.asList(str));