一、数组的定义与使用
1、 定义格式:
·动态初始化:初始化之后每个数据都是数据类型的默认值
声明并初始化数组:数据类型 数组名称【】=new 数据类型 【长度】
·静态初始化:在数组定义的时候就为其设置好了里面的内容
简化格式:数据类型 数组名称【】={数据1,数据2}
完整格式:数据类型 数组名称【】=new 数据类型{数据1,数据2}
tip:对于数组的长度也可以使用“数组名称.length”获得,for循环要length-1
2、数组的引用传递(一个堆内存可以被多个栈内存指向)
引用传递内存分析
3、foreach输出
问题:为了减轻下标对程序的影响,引入一个增强型的for循环(foreach)。
语法形式:For(数据类型 变量:数组|集合){}
特点:可以自动将数组中每一个元素内容取出保存在变量里面,从而避免用下标获取。
4、二维数组(表)
定义语法:
数组动态初始化:数据类型 数组名称 【】【】=new 数据类型【行个数】【列个数】
数组的静态初始化:数据类型 数组名称 【】【】=new 数据类型【】【】{xxxxxx}
5、数组与方法
通过方法修改数组内容
案例:
随意定义一个int数组,要求可以计算出这个数组元素的综合、最大值、最小值
class arrUtil{
public static int [] initArray(){
int arr[]=new int[] {2,5,6,3,1,4};
return arr;
}
public static void printArray(int temp[]){
for(int i=0;i<temp.length;i++)
{
System.out.println(temp[i]);
}
}
public static void getsum(int[] temp){
int sum=0;
for(int i=0;i<temp.length;i++)
{
sum+=temp[i];
}
System.out.println(sum);
}
public static void getmin(int temp[]){
int min=temp[0];
for(int i=0;i<temp.length;i++)
{
if(temp[i]<min){
min=temp[i];
}
}
System.out.println(min);
}
public static void getmax(int temp[]){
int max=temp[0];
for(int i=0;i<temp.length;i++)
{
if(temp[i]>max){
max=temp[i];
}
}
System.out.println(max);
}
}
class arrDemo{
public static void main(String args[]){
arrUtil.printArray(arrUtil.initArray());
arrUtil.getsum(arrUtil.initArray());
arrUtil.getmax(arrUtil.initArray());
arrUtil.getmin(arrUtil.initArray());
}
}
6、数组排序
class arUtil{
public static void qsort(int data[]){
for(int i=0;i<data.length;i++)
{
for(int j=0;j<data.length-i-1;j++)//-1是因为会有数组溢出问题
{
if(data[j]>data[j+1])
{
int temp=data[j];
data[j]=data[j+1];
data[j+1]=temp;
}
}
}
}
public static void printArray(int temp[]){
for(int k=0;k<temp.length;k++)
{
System.out.print(temp[k]+"、");
}
System.out.println();
}
}
class arr{
public static void main(String args[]){
int data[]=new int [] {8,9,0,2,3,5,10,7,6,1};
arUtil.qsort(data);
arUtil.printArray(data);
}
}
7、数组转置(数组首尾交换)
做法一:定义一个新的数组,用逆序方法保存(会产生垃圾空间)
做法二:在一个数组上转置
8、数组相关类库
数组排序:java.util.Arrays.sort();
数组拷贝:System.arraycopy(原数组,原数组开始点,目标数组,目标数组开始点,拷贝长度)
9、方法可变参数
问题:如果要求定义一个方法,这个方法可以实现任意多个整形数据的相加处理。
采用可变参数(变种数组,本质为数组)
可变数组形式:(int … data)
作用:在进行一些程序类设计或者开发时,利用此种形式就可以避免数组的传递操作了。
10、对象数组
类也可以成为数组类型,这样的数组称为对象数组。
定义:
动态初始化:类 对象数组名称【】=new 类【长度】
静态初始化:类 对象数组名称【】=new 类【】{实例化对象、实例化对象,。。。。}
动态初始化:
静态初始化:
内存分析: