java基础(4)-数组(1)

浏览: 930

数组:存储同一种数据类型的多个元素的容器
数组初始化

  • 元素类型[] 数组名 = new 元素类型[数组长度]
    int [] arr = new int[5]
  • 元素类型[] 数组名 = new 元素类型[] {元素,元素,...}
    int [] arr = new int [] {1,2,3,4,5}
    int [] arr = {1,2,3,4,5}

内存分配
栈内存:用于存储局部变量,当数据使用完时,所占空间会自动释放。一些基本类型的变量和对象的引用变量都是在函数栈内存中分配
堆内存:用于存放由new创建的对象和数组
方法区:

堆内存特点:
每个new出来的东西都有地址值
每个变量都有默认值

常见数组操作

  • 获取数组中的元素
class ArrayDemo3{
public static void main(String[] args){
//int[] arr = new int[3];
int[] arr = {1,5,7,4,6,8};
for(int i=0;i){
System.out.println("arr["+i+"]="+arr[i]+";");
}
}

}
/*
arr.lenth 表示返回数组arr的长度

*/
  • 数组元素求和
class ArraySum{
public static void main(String[] args){
int[] arr = new int[]{1,2,3,4,5,6,7,8,9,10};
int sum = 0;

for(int i=0;i){
sum += arr[i];
}
System.
out.println("sum="+sum);
}

}
  • 遍历数组中的元素
public class ArrayDemo4{
public static void main(String[] args){
int[] arr = new int[]{1,2,34,4};
// printArray(arr);//可以直接调用,也可以ArrayDemo4.printArray(arr);
printArray1(arr);
}


public static void printArray(int[] arr){ //注意这是静态方法
for(int i = 0;i){
System.out.println(arr[i]);
}

}

public static void printArray1(int[] arr){
for(int i = 0;i){
if(i==arr.length-1){ //如果是最后一个元素
System.out.println(arr[i]);
}
else{ //如果不是最后一个元素
System.out.print(arr[i]+",");
}
}

}

}

/*
运行结果:
1,2,34,4

*/
  • 求最大值和最小值
class ArrayTest1{
public static void main(String[] args){
int[] arr = new int[]{7,2,6,2};//定义一个数组
/*

int max = arr[0];
for(int i = 1; i if(arr[i]>max){
max = arr[i];
}
}

System.out.println(max);
*/


int max = getMax(arr);//静态方法可以直接调用
// System.out.println(max);


int min = getMin(arr);
System.
out.println(min);
}


public static int getMax(int[] arr){
//找数组中任一元素作为参照物
int max = arr[0];
//遍历其他元素
for(int i = 1;i){
//依次获取和参照物比较,如果大就留下来,小酒离开
if(arr[i]>arr[0]){
max
= arr[i];
}
}
//参照物里面保存的即为最大值
return max;
}

public static int getMin(int[] arr){
int min = arr[0];
for(int i = 1;i){
if(arr[i]<min){
min
= arr[i];
}
}
return min;

}


}
  • 数组反转
class ArrayDemo{
public static void main(String[] args){
int[] arr = new int[]{112,32,45,543,76};
System.
out.print("原数组:");
printArray(arr);

System.
out.print("反转后数组:");
reverseArray(arr);
}

//遍历数组
public static void printArray(int[] arr){
for(int i = 0;i){
// System.out.println(arr[i]);//将每个元素输出,一个元素一行
if(i == arr.length-1){
System.
out.println(arr[i]);
}
else{
System.
out.print(arr[i]+",");
}
}
}

//反转数组
public static void reverseArray(int[] arr){
for(int i = 0;i2;i++){
int temp = arr[i];
arr[i]
= arr[arr.length-1-i];
arr[arr.length
-1-i] = temp;

}
printArray(arr);
//这里调用打印数组方法,不能直接打印arr,这样是地址值
}

}


/*

原数组:112,32,45,543,76
反转后数组:76,543,45,32,112


*/
  • 选择排序
class ArrayTest2{
//排序方法
public static void selectSort(int[] arr){
for(int x=0;x){
for(int y=x+1;y1;y++){
if(arr[x]>arr[y]){
int temp = arr[x];
arr[x]
= arr[y];
arr[y]
= temp;
}
}
}
}

//主方法
public static void main(String[] args){
int[] arr = {3,4,2,8,6,9,22};
printArray(arr);
selectSort(arr);
printArray(arr);
}

//打印数组方法
public static void printArray(int[] arr){
System.
out.print("[");
for(int x=0;x){
if(x!=arr.length-1){
System.
out.print(arr[x]+",");
}
else{
System.
out.println(arr[x]+"]");
}
}
}
}
推荐 0
本文由 邬家栋 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册