平时声明和初始化数组总会弄错,这里系统的做个小结,记录下
一、Java数组声明及初始化
1、数组声明:
- datatype[] arrayname:个人推荐的写法
- datatype arrayname[]
2、数组初始化
初始化是最容易出问题的地方,方式一共有两种:静态初始化,动态初始化。
2.1、静态初始化
在声明的同时,完成对数组的初始化(以String int为例)
- int[] a = {1,2};
- String[] s = new String[]{"test","test"};
2.2、动态初始化
在声明的同时采用new关键字创建数组,指明数组长度,之后对数组遍历初始化(以String为例)
- String[] s = new String[2];
示例代码如下:
public class Stringtest {
public static void main(String[] args) {
// TODO Auto-generated method stub
//静态初始化-不采用new关键字,声明和初始化不能分开
//分开会报错:Array constants can only be used in initializers,数组常量必须用在初始化中
String[][] s0= {{"sdf","sdf"},{"sdfa"}};
//静态初始化-采用new关键字,声明和初始化分不分开均可
//如果这时指定长度,会报错:Cannot define dimension expressions when an array initializer is provided,不能同时静态+动态的定义数组,在给定静态初始化的同时还定义长度
String[][] s1;
s1=new String[][] {{"sss","sss"}};
String[][] s2=new String[][] {{"sss","sss"}};
//动态初始化,指定长度,开辟空间
String[][] s3=new String[2][3];
for (int i=0;i<s3.length;i++)
for (int j=0;j<s3[0].length;j++)
{
s3[i][j]="saf";
}
System.out.println(s3[0][0]);
}
}
二、Java动态数组
如果我们预先不知道数组长度,不知道数组内容,这时候就需要动态数组了,Java动态数组可以任意伸缩数组长度,ArrayList是比较常用的动态数组。示例代码如下:
import java.util.ArrayList;
public class Stringtest {
public static void main(String[] args) {
ArrayList alist=new ArrayList();
//添加元素
alist.add("test1");
alist.add("test2");
alist.add("test3");
alist.add(123342);
alist.add("test3");
System.out.println(alist);
//循环遍历元素
for (int i=0;i<alist.size();i++)
{
//Object基类
Object result=(Object)alist.get(i);
System.out.println(result);
}
//移除元素,有重复的,移除第一个
alist.remove("test3");
System.out.println(alist);
//移除下标为...的元素
alist.remove(1);
System.out.println(alist);
//修改元素,如果下标越界,会报错
alist.set(0, "sss");
System.out.println(alist);
}
}
[test1, test2, test3, 123342, test3]
test1
test2
test3
123342
test3
[test1, test2, 123342, test3]
[test1, 123342, test3]
[sss, 123342, test3]