数组:存储同一种数据类型的多个元素的容器
数组初始化:
- 元素类型[] 数组名 = 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<arr.length;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<arr.length;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<arr.length;i++){ System.out.println(arr[i]); } } public static void printArray1(int[] arr){ for(int i = 0;i<arr.length;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<arr.length;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<arr.length;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<arr.length;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<arr.length;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;i<arr.length/2;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<arr.length;x++){ for(int y=x+1;y<arr.length-1;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<arr.length;x++){ if(x!=arr.length-1){ System.out.print(arr[x]+","); }else{ System.out.println(arr[x]+"]"); } } } }
时间: 2024-10-06 12:47:42