1.数组的基本概念
数组:就是一组相关变量的集合
声明并开辟数组:数据类型 [] 数组名称 =new 数据类型[长度]------推荐使用这种
数组类型 数组名称[] =new 数据类型[长度]
使用:数组名称[索引] 索引从0开始,开辟数组后里面的值是相应数据类型的默认值;
取得数组的长度:数组名.length
数组静态初始化:
数据类型[] 数组名称=new 数据类型[]{值,值,值....};
注:数组对数组中的值只是管理者,并不是拥有者,所以:
当发生引用传递时:数组里的值改变就就都改变了
例:
public class Test{
public static void main(String[] args){
int[] data=new int[3];
data[0]=1;
data[1]=2;
data[2]=3;
int temp[] =data; //引用传递
temp[0]=10;//改变数值
for(int x=0;x<data.length;x++){
System.out.print(data[x]+",");//data里的数值也发生了改变
}
for(int x=0;x<temp.length;x++){
System.out.print(temp[x]+",");
}
}
}
2.数组类型的相互转化
2.1字符串数组变为int 数组
package work;
public class Test{
public static void main(String args[]) {
String s="1,2,3,11,20,100";
String[] str = s.split(",");
int[] data = new int[str.length];
for(int i=0;i<str.length;i++){
data[i]=Integer.parseInt(str[i]);
}
System.out.println(data[2]);
}
}
3.数组常用方法:
3.1 数组排序:
package work;
//排序方法:冒泡方法
public class TestDemo2 {
public static void main(String[] args) {
int[] data=new int[] {3,5,8,6,10,4,2};
sort(data);
print(data);
}
//数组排序
public static void sort(int temp[]) {
for(int x=0;x<temp.length;x++) {
for(int y=0;y<temp.length-1;y++) {
if(temp[y]>temp[y+1]) {
int i=temp[y+1];
temp[y+1]=temp[y];
temp[y]=i;
}
}
}
}
//数组显示出来
public static void print(int temp[]) {
for(int x=0;x<temp.length;x++) {
System.out.println(temp[x]);
}
}
}
3.2 判断一个数据是否在指定的数组中
//判断某一个数据是否在指定的数组中
public class TestDemo {
public static void main(String args[]) {
int[] data=new int[]{2,5,7,6,9};
int a=4;
System.out.println(isExists(data,a));
}
public static boolean isExists(int temp[],int s) {
for(int x=0;x<temp.length;x++) {
if(temp[x]==s) {
return true;
}
}
return false;
}
}
3.3数组的拷贝
public class ArrayDemo1 {
public static void main(String args[]) {
//数组拷贝
//方法:System.arraycopy(源数组名称,原数组开始点,目标数组名称,目标数组开始点,拷贝长度)
int[] dataA=new int[] {1,2,3,4,5,6,7,8,9};
int[] dataB=new int[] {11,22,33,44,55,66,77,88,99};
System.arraycopy(dataB, 3, dataA, 3, 4);
for(int x=0;x<dataA.length;x++) {
System.out.print(dataA[x]+",");
}
}
}
3.4数组的合并
public class ArrayDemo2 {
public static void main(String args[]) {
//两个数组合并
int[] dataA=new int[] {1,2,3,4,5,6,7,8,9};
int[] dataB=new int[] {11,22,33,44,55,66,77,88,99};
int c=dataA.length+dataB.length;
int[] dataC=new int[c];
//现将dataA的数全部复制到dataC中;
System.arraycopy(dataA, 0, dataC, 0, dataA.length);
//然后将dataB的数全部复制到dataC中;
System.arraycopy(dataB, 0, dataC, dataA.length, dataB.length);
for(int x=0;x<c;x++) {
System.out.print(dataC[x]+",");
}
}
}
3.5将数组中的某些数据删除,形成新的数组
public class Exer23 {
public static void main(String[] args) {
int oldArr[]= {1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
int count=0;
String str="";
for(int x=0;x<oldArr.length;x++) {
if(oldArr[x]==0) {
count++;
}else {
str=str+oldArr[x];
}
}
System.out.println(str);
int a=oldArr.length-count;
char newArr[]= new char[a];
int newArrs[]=new int[a];
for(int x=0;x<a;x++) {
newArr[x]=str.charAt(x);
}
for(int x=0;x<a;x++) {
newArrs[x]=(int)(newArr[x]-'0');
System.out.print(newArrs[x]+",");
}
}
}