黑马程序员_java学习日记_数组

来源:互联网 发布:网络红猫红小胖视频 编辑:程序博客网 时间:2024/04/29 22:19

--------  android培训,java培训java学习型技术博客、期待与您交流! -------


   数组

       (1)数组的定义

            概念
               同一种类型数据的集合。其实数组就是一个容器。
      (2)数组的好处
           可以自动给数组中的元素从0开始编号,方便操作这些元素。
          格式1:
            元素类型[] 数组名= new 元素类型[元素个数或数组长度];
            示例:int[] arr = new int[5];
          格式2:
           元素类型[] 数组名= new 元素类型[]{元素,元素,……};
            int[] arr = new int[]{3,5,1,7};
            int[] arr = {3,5,1,7};

数组内存结构如图


内存结构

     Java程序在运行时,需要在内存中的分配空间。为了提高运算效率,有对空间进行了不同区域的划分,因为每      一片区域都有特定的处理数据方式和内 存管理方式。
     栈内存
     用于存储局部变量,当数据使用完,所占空间会自动释放。
     堆内存
     数组和对象,通过new建立的实例都存放在堆内存中。
     每一个实体都有内存地址值
     实体中的变量都有默认初始化值
     实体不在被使用,会在不确定的时间内被垃圾回收器回收
     方法区,本地方法区,寄存器

数组操作常见问题

      数组脚标越界异常(ArrayIndexOutOfBoundsException)
        int[] arr = new int[2];
        System.out.println(arr[3]);
        访问到了数组中的不存在的脚标时发生。
      空指针异常(NullPointerException)
        int[] arr = null;
        System.out.println(arr[0]);
        arr引用没有指向实体,却在操作实体中的元素时。

数组常见操作


    (1)排序(选择排序,冒泡排序)
         冒泡排序

        /**
* 实现数值冒泡排序
* @param num 要排序的数组
*/
public static void maoPaoPaiXu(int[] num){

for(int i=0;i<num.length-1;i++){
for(int j=0;j<num.length-i-1;j++){
if(num[j]>num[j+1]){
int temp=num[j];
num[j]=num[j+1];
num[j+1]=temp;
}
}
}
for(int i=0;i<num.length;i++){
System.out.print(num[i]+" ");
}

           选择排序

    /**
* 选择排序
* @param num 需要排序的数组
*/
public static void selectionSort(int[]num){

int k=0;
for(int i=0;i<num.length-1;i++){
k=i;
for(int j=i;j<num.length;j++){
if(num[j]<num[k]){
k=j;
}
}
int temp=num[i];
num[i]=num[k];
num[k]=temp;
}
for(int i=0;i<num.length;i++){
System.out.print(num[i]+" ");
}

           插入排序

/**
* 插入排序
* @param args 需要排序的数组
*/
public static void insertSort(int[] num){
int temp;
for(int i=1;i<num.length;i++){
temp=num[i];
int j=i;
while(j>0&&num[j]>=temp){

num[j]=num[j-1];
j--;
}
num[j]=temp;
}
for(int i=0;i<num.length;i++){
System.out.print(num[i]+" ");
}


    (3)折半查找(二分查找)


               public static int helfSearch(int[]num,int key){
int min=0;
int max=num.length-1;
int mid=(min+max)/2;
while(key!=num[mid]){
if(key>num[mid]){
min+=1;
}
else if(key<num[mid]){
max-=1;
}
mid=(min+max)/2;
}

return mid;

数组中的数组

  格式1:int[][] arr = new int[3][2];

  定义了名称为arr的二维数组

  二维数组中有3个一维数组

  每一个一维数组中有2个元素

  一维数组的名称分别为arr[0], arr[1], arr[2]

  给第一个一维数组1脚标位赋值为78写法是:arr[0][1] = 78;
格式2:int[][] arr = new int[3][];

        二维数组中有3个一维数组

        每个一维数组都是默认初始化值null

        可以对这个三个一维数组分别进行初始化
        arr[0] = new int[3];
        arr[1] = new int[1];
        arr[2] = new int[2];

格式3:int[][] arr = {{3,8,2},{2,7},{9,0,1,6}};

       定义一个名称为arr的二维数组

       二维数组中的有三个一维数组

       每一个一维数组中具体元素也都已初始化

       第一个一维数组arr[0] = {3,8,2};

       第二个一维数组arr[1] = {2,7};

       第三个一维数组arr[2] = {9,0,1,6};

      第三个一维数组的长度表示方式:arr[2].length;


--------  android培训,java培训java学习型技术博客、期待与您交流! -------

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 苹果六背光坏了怎么办 苹果5s蓝屏死机怎么办 苹果6s突然黑屏怎么办? 苹果6s经常死机怎么办 苹果6s没有背光怎么办 苹果7白屏死机怎么办 苹果6p屏膜失灵怎么办 苹果7p屏幕卡死怎么办 苹果7p手机死机怎么办 苹果6s死机了怎么办啊 6s死机了关不了怎么办 爱疯7死机了怎么办 苹果11.4系统老死机怎么办 苹果6震动坏了怎么办 苹果6手机死机了怎么办 苹果x耗电太快怎么办 苹果6升级11.3卡怎么办 苹果6splus耗电快怎么办 苹果手机系统升级后反应慢怎么办 苹果8听筒声音小怎么办 苹果6s通话声音小怎么办 苹果手机通讯录丢失了怎么办 苹果换id通讯录没有了怎么办 华为p7 更新重启怎么办 打电话的图标没了怎么办 苹果手机wifi信号弱怎么办 没电脑想装wifi怎么办 阿巴町手表二维码丢了怎么办 儿童手表二维码丢了怎么办 电话手表二维码丢了怎么办 360儿童手表二维码丢了怎么办 喜书郎电话手表二维码丢了怎么办 微信充话费充错号码怎么办 话费冲到了副卡怎么办 冲话费冲错了怎么办 微信支付未到账怎么办 速卖通修补配件到国外怎么办 速卖通流量低怎么办 速卖通被判定重复铺货怎么办 拼多多商品降权怎么办 运满满有了差评怎么办