数组: 引用数据类型的赋值其实是赋址
格式 1 : "元素类型 【】 名称 = new 元素类型【元素个数或数组长度】"
也可以写成 "元素类型 名称【】 = new 元素类型【元素个数或数组长度】"
例如: int [] x = new int[3]; //也可以写成 int x [] = new int[3];
x的类型为引用数据类型中的数组类型
格式2: "元素类型 【】 名称 = new 元素类型【】{元素,元素,元素}"
简写格式: "元素类型 【】 名称={元素,元素,元素}"
例如: int [] arr = new int[]{3,5,7,9}; //可以简写成:int [] arr={3,5,7,9};
数组类型都具有默认值,int默认值为0,boolean默认类型为false,float默认类型为0.0f,double的默认类型为0.0;
需要注意的地方:
int [] y=x; //数组为引用数据类型,int [] y=x;实际是在内存中将x的地址赋给了数组y,改变y的值,x的值也随之改变
y[1]=89 ;
x[1]=79;//当x[1]=79时,内存堆区中的对应值由89变成了79;再打印对应位置y[1]和x[1]时,
System.out.println("y[1]的值是" + y[1] + " " + "x[1]的值是" + x[1]); 值都变成了79
x=null;
System.out.println("当x=null后,y[1]的值是" + y[1] ); 值为:79
解释:
现在数组x,数组y,同时指向了内存堆区中的分配空间,当数组x为null时,
还有数组y对应内存中的空间,所以内存中不为垃圾;对于数组y进行任何操作没有影响
通俗点说:两人同时使用1台电脑,当其中一人不适用了,电脑还在那里,对另一人没有影响
普通数据类型的赋值即是赋值,不会改变前一个变量的值
int a=5;
int b=a;
b=8;
System.out.println("当b赋值8完成后,a的值是" + a + " " + "b的值是" + b);
赋值只改变了当前的值,并未改变原始地址中的值,所以b赋值8后,a的地址中存储的依然为5
length属性是 取得数组元素的个数或者数组的长度
常见操作:
获取最值:
//获取最大值函数
public static int getMax(int[] arr){
int temp=arr[0];
for(int x=1;x<arr.length;x++){
if(arr[x]>temp){
temp=arr[x];
}
}
return temp;
}
排序:
public static void sort(int [] arr){
int temp=0;
for(int x=0;x<arr.length-1;x++){
for(int y=x+1;y<arr.length;y++){
if(arr[x]>arr[y]){
temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
}
}
}
数组遍历:
public static void printarr(int [] arr){
System.out.print("[");
for(int x=0;x<arr.length;x++){
if(x!=arr.length-1){
System.out.print(arr[x]+" ,");
}else{
System.out.println(arr[x]+"]");
}
}
} |