java数组


数组

数组的定义

数组是相同类型的有序合集。

数组的声明和创建

package com.moneypine.array;
?
public class ArrayDemo01 {
   //变量的类型 变量的名字 = 变量的值   ;
   //数组类型
   public static void main(String[] args) {
       int[] nums; //1,声明一个数组
?
       nums = new int[10]; //2,创建一个数组
?
       //3,给数组元素赋值
       nums[0] = 1;
       nums[1] = 2;
       nums[2] = 3;
       nums[3] = 4;
       nums[4] = 5;
       nums[5] = 6;
       nums[6] = 7;
       nums[7] = 8;
       nums[8] = 9;
       nums[9] = 10;
?
       int sum = 0;
       for (int i = 0; i < nums.length; i++) {
           sum = sum + nums[i];
      }
?
       System.out.println("总和为"+sum);
?
?
  }
}
?

内存分析

Java内存:堆、栈、方法区

三种初始化

静态初始化

动态初始化

数组边界

数组下标越界报错:ArrayIndexOutOfBoundsException

数组的使用

arrays类

冒泡排序

package com.moneypine.array;
?
import java.util.Arrays;
?
//冒泡排序
//1.比较数组中两个相邻的元素,如果第一个数比第二个数大,我们就交换他们的位置
//2.没比较一次,都会比较出一个最大的,或者是最小的数字;
//3.下一轮少一次排序
//4.依次循环,直到结束
public class ArrayDemo07 {
   public static void main(String[] args) {
       int[] a = {12,12,1,4,23,4,2,35,25,};
?
       int[] sort = sort(a);  //调用完毕自己写的排序方法后,返回一个排序后的数组
       System.out.println(Arrays.toString(sort));
?
  }
?
?
?
?
   public static int[] sort(int[] array){
       //零食变量
       int temp = 0;
?
       //外层循环,判断要走多少次;
       for (int i = 0; i < array.length-1; i++) {
           //内层循环,比较数组中两个相邻的元素,如果第一个数比第二个数大,交换位置
?
           boolean flag = false;//通过flag标示位减少没意义的排序
?
           for (int j = 0; j < array.length - 1 - i; j++) {
               if (array[j+1] < array[j]){
                   temp = array[j];
                   array[j] = array[j+1];
                   array[j+1] = temp;
                   flag = true;
?
              }
          }
           if (flag==false){
               break;
          }
      }
       return array;
  }
}
?