黑马程序员——Java基础---数组

本文详细介绍了Java中的数组概念、定义方式及常见操作,包括一维数组和二维数组,并探讨了数组在内存中的存储方式。
------<a href=" http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

1.数组的定义

1>概念:同一种类型数据的集合,其实数组就是一个容器。

2>格式:

a>元素类型[]数组名 = new 元素类型[元素个数或数组长度]

例:int[] arr = new int[5];

b>元素类型[]数组名 = new 元素类型[]{元素,元素....}

例:int [] arr = new int[]{1,2,3};

int [] arr = {1,3,5};

注意:int[] x = new int[3]

 int [] y =x;实际上是将x对应于堆内存数组的地址值赋给y,也就是此时    xy同时指向堆内存中同一个数组。改变x中的元素,y中对应的元素也将改     变。

操作数组时常见问题:

 a>.数组角标越界异常(ArrayIndexOutOfBoundsException):操作数组时,访问   到了数组中不存在的角标。

 b>空指针异常(NullPointerException):当引用没有任何指向,值为null的情况,  该引用还在用于操作实体

2.数组常见操作

1>遍历

2>获取最值

3>排序:

a>顺序排序

 

b>冒泡排序

 public static voidbubbleSort(int[] arr) 

 { 

      for(int x=0; x<arr.length-1; x++) 

      { 

             for(int y=0;y<arr.length-1-x; y++) 

             { 

                    if(arr[y]>arr[y+1]) 

                    { 

                                      int temp = arr[y]; 

                                         arr[y]= arr[y+1]; 

                           arr[y+1]=temp; 

                    } 

             }     

      } 

 } 

 

4>查找

折半查找:提高效率,但是必须保证数组是有序的。

public static int halfSearch(int [] arr, int key)

{

int min,max,mid;

min = 0;

max = arr.length-1;

mid = (min + max) / 2;

while(arr[mid] != key)

{

if(key > arr[mid])

min = mid + 1;

else if(key < arr[mid])

max = mid -1;

if(min > max)

return -1;

mid = (min + max) / 2;

}

return mid;

}

3.二维数组(数组中的数组)

1>格式:

a> int [] [] arr = new int[3][2];

b> int [] [] arr = new int[3][];

c> int[][] arr = {{3,8,2},{2,7},{9,0,1,6}};

   arr.length 为一维数组的个数即3arr[0].length为第一个一维数组中元素的个      数即3

关于数组的定义的问题

一维数组的定义:int[] x;int x[]

二维数组的定义:int[] [] y; int y[] []; int[] y[]

[]即可以放在变量的左边也可以放在变量的右边。

 

 

 

内存结构

Java运行时,为了提高运算效率,在内存中分了五片区域,每一片区域都有特定的处理数据方式和内存管理方式。

1>栈内存:用于存储局部变量,当数据使用完,所占空间会自动释放。

2>堆内存:数组和对象,通过new建立的实例都存放在堆内存中;每个实体都有内存地址值;实体中的变量都有默认初始化;实体不在被使用,会在不确定的时间内被垃圾回收器回收。

3>方法区

4>本地方法区

5>寄存器

 

05._Java语言基础(数组概述和定义格式说明)

 A:为什么要有数组
  现在需要统计某公司员工的工资情况,例如计算平均工资、找到最高工资等。假设该公司有80名员工,
  用前面所学的知识,程序首先需要声明80个变量来分别记住每位员工的工资,然后在进行操作,这样做会显得很麻烦。
  为了解决这种问题,Java就提供了数组供我们使用
  结论:
   数组是存储多个变量(元素)的东西(容器)
   这多个变量的数据类型要一致 
 B:数组概念
  数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。
  数组既可以存储基本数据类型,也可以存储引用数据类型(后面讲解)。
 C:数组定义格式
  格式1: 数据类型[] 数组名;
  格式2: 数据类型   数组名[];
 举例:
  int[] a;  定义了一个int类型的数组a;
  int a[]; 定义了一个int类型的a数组;
  推荐使用第一种定义方式。

 

 

5._Java语言基础(Java中的内存分配以及栈和堆的区别)

 A:栈: 存放的是局部变量
  局部变量:在方法定义中或者方法声明上的变量都是局部变量。
 B:堆: 存放的是所有new出来的东西
  特点:
   a: 每一个new出来的东西都会为其分配一个地制值。
   b: 每一个变量都有一个默认的值
    byte,short,int,long  -- 0
    float,double      -- 0.0
    char        -- '\u0000'
    boolean        -- false
    引用数据类型     -- null  
   c: 使用完毕就变成了垃圾,等待垃圾回收器对其回收
 C:方法区:(面向对象部分讲解)
 D:本地方法区:(和系统相关)
 E:寄存器:(cpu使用)

 

 

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值