黑马程序员_数组与内存

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

A:数组的定义
概念:同一种类型数据的集合。其实数组就是一个容器。
数组的好处
可以自动给数组中的元素从0开始编号,方便操作这些元素。
格式1:
元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
示例:int[] arr = new int[5];
格式2:
元素类型[] 数组名 = new 元素类型[]{元素,元素,……};
int[] arr = new int[]{3,5,1,7};
int[] arr = {3,5,1,7};
B:数组的内存分配及特点
内存结构:
Java程序在运行时,需要在内存中的分配空间。为了提高运算效率,有对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
栈内存:
 用于存储局部变量,当数据使用完,所占空间会自动释放。
黑马程序员---数组




堆内存:
 数组和对象,通过new建立的实例都存放在堆内存中。
 每一个实体都有内存地址值
 实体中的变量都有默认初始化值
 实体不在被使用,会在不确定的时间内被垃圾回收器回收
方法区,本地方法区,寄存器
C:数组操作常见问题
数组脚标越界异常(ArrayIndexOutOfBoundsException)
int[] arr = new int[2];
System.out.println(arr[3]);
访问到了数组中的不存在的脚标时发生。
空指针异常(NullPointerException)
int[] arr = null;
System.out.println(arr[0]);
arr引用没有指向实体,却在操作实体中的元素时。
D:数组常见操作
1.获取最值(最大值,最小值)
 a:最大值
 
 public static int getMax(int[] arr)
 {
  int max = arr[0];
  for(int x=1; x
  {
   if(arr[x]>max)
    max = arr[x];
  }
  return max;
 }
 b最小值
 
 public static int getMin(int[] arr)
 {
  int min = 0;
  for(int x=1; x
  {
   if(arr[x]
    min = x;
  }
  return arr[min];
 }
2.排序(选择排序,冒泡排序)
 a
 
 public static void selectSort(int[] arr)
 {
  for (int x=0; x
  {
   for(int y=x+1; y
   {
    if(arr[x]>arr[y])
    {
     
      swap(arr,x,y);
    }
    }
  }
 }
 b
 
 public static void bubbleSort(int[] arr)
 {
  for(int x=0; x
  {         
   for(int y=0; y
    {
    if(arr[y]
    {
     
      int temp = arr[y];
      arr[y] = arr[y+1];
      arr[y+1] = temp;
     
      swap(arr,y,y+1);
    }
    }
  }
 }
3.折半查找(二分查找)
 
 
 public static int halfSearch(int[] arr,int key)
 {
  int min,max,mid;
  min = 0;
  max = arr.length-1;
  mid = (max+min)/2;
  while(arr[mid]!=key)
  {
   if(key>arr[mid])
    min = mid + 1;
   else if(key
    max = mid - 1;
   if(min>max)
    return -1;
   mid = (max+min)/2;
  }
  return mid;
 }
E:数组中的数组
二维数组[][]
格式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];


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

详情请查看:http://edu.csdn.net/heima



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据结构与算法是计算机科学非常重要的概念。数据结构是一种组织和存储数据的方式,它涉及到数据元素之间的关系。一个好的数据结构可以提高程序的运行效率和存储效率。而算法则是解决问题的步骤和方法。通常情况下,数据结构和算法是相互关联的,精心选择的数据结构可以配合高效的算法,进一步提升程序的性能。 在黑马程序员的《数据结构与算法》视频教程,有关数据结构和算法的Java源码被提供。其,引用给出了数据结构的定义以及与高效检索算法和索引技术的关系。引用给出了计算阶乘的第二种解法,使用循环来实现。引用给出了计算阶乘的第一种解法,使用递归来实现。 你可以点击链接保存源码或者打开阿里云盘APP在线查看视频。这些资源可以帮助你更好地理解和学习数据结构与算法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [黑马程序员【数据结构与算法Java版】讲义源码](https://blog.csdn.net/qq_46323758/article/details/129521847)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [从0认识数据结构与算法,Java版](https://blog.csdn.net/itcast_cn/article/details/124593427)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值