黑马程序员-(5)Java基础语法之数组

 ------- android培训java培训、期待与您交流! ---------- 


  1. 数组的定义:
概念:同一种类型数据的集合,就是一个容器

数组优点:可以自动从0开始给数组中的元素排序,方便操作这些元素。

格式1:元素类型 [] 数组名 = new 元素类型 [元素长度或元素个数] ;

示列:int [] arr = new int [5];

格式2:元素类型 [] 数组名 = new 元素类型 [] {元素,元素,....}

示列:int [] arr = new int []{1,2,3,5};

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

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

堆内存:存放数组和对象,通过new建立的实列都存放在堆内存中。

堆特点:

  • 存放数组实体,每一个实体都有内存地址值
  • 实体中的变量都有有默认初始化值
  • 实体不再被使用,会在不定时的时间被垃圾回收机制回收
注:Java会自动不定时清理垃圾,c++只能手动清理。

3.数组的两种异常情况:

ArrayIndexOutOfBoundsException: 操作数组时,访问到了数组中不存在的角标。

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

4.数组的操作

获取数组中的元素,通常会用到遍历

数组中有一个属性可以直接获取到数组元素个数:length

使用方式:数组名称.length

数组遍历实列:

黑马程序员-(5)Java基础语法之数组 - wp王者归来 - 187327471王者归来的博客

应用:获取数组中最大值和最小值

获取数组中的最大值。

思路

1,获取最值需要进行比较。每一次比较都会有一个较大的值。因为该值不确定。

通过一个变量进行临储。

2,让数组中的每一个元素都和这个变量中的值进行比较。

如果大于了变量中的值,就用该该变量记录较大值。

3,当所有的元素都比较完成,那么该变量中存储的就是数组中的最大值了。

步骤

1,定义变量。初始化为数组中任意一个元素即可。

2,通过循环语句对数组进行遍历。

3,在变量过程中定义判断条件,如果遍历到的元素比变量中的元素大,就赋值给该变量;

需要定义一个功能来完成。以便提高复用性。

1,明确结果,数组中的最大元素 int。

2,未知内容:一个数组。int[]

代码如下:

黑马程序员-(5)Java基础语法之数组 - wp王者归来 - 187327471王者归来的博客

另一种方式: 初始化为数组中任意一个角标

 黑马程序员-(5)Java基础语法之数组 - wp王者归来 - 187327471王者归来的博客

对给定数组进行排序:

(1)选择排序

黑马程序员-(5)Java基础语法之数组 - wp王者归来 - 187327471王者归来的博客

黑马程序员-(5)Java基础语法之数组 - wp王者归来 - 187327471王者归来的博客

 黑马程序员-(5)Java基础语法之数组 - wp王者归来 - 187327471王者归来的博客  

(2)冒泡排序:

黑马程序员-(5)Java基础语法之数组 - wp王者归来 - 187327471王者归来的博客

代码如下:

黑马程序员-(5)Java基础语法之数组 - wp王者归来 - 187327471王者归来的博客

黑马程序员-(5)Java基础语法之数组 - wp王者归来 - 187327471王者归来的博客

延伸:1.Arrays.sort(arr);ava中已经定义好的一种排序方式。开发中,要使用该句代码对数组排序。

2.对功能进行封装:int temp = arr[y];

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

arr[y+1] = temp;


public static void swap(int[] arr,int a,int b)

{

int temp = arr[a];

arr[a] = arr[b];

arr[b] = temp;

}

5.对给定的数组进行反转

{3,1,5,6,2} --->

{2,6,5,1,3}

黑马程序员-(5)Java基础语法之数组 - wp王者归来 - 187327471王者归来的博客

  黑马程序员-(5)Java基础语法之数组 - wp王者归来 - 187327471王者归来的博客

6.数组的查找操作

(1)获取key第一次出现在数组中的位置:

黑马程序员-(5)Java基础语法之数组 - wp王者归来 - 187327471王者归来的博客

折半查找的两种方式

  黑马程序员-(5)Java基础语法之数组 - wp王者归来 - 187327471王者归来的博客  第二种方式:

黑马程序员-(5)Java基础语法之数组 - wp王者归来 - 187327471王者归来的博客

 

6.几种进制间的转换

黑马程序员-(5)Java基础语法之数组 - wp王者归来 - 187327471王者归来的博客

  黑马程序员-(5)Java基础语法之数组 - wp王者归来 - 187327471王者归来的博客
  8.二维数组

int[] arr = new int[3];//一维数组。

int[][] arr = new int[3][4];//定义了名称为arr的二维数组。二维数组中有3个一维数组。

每一个一维数组中有四个元素。

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

arr[0] = new int[3];

arr[1] = new int[1];

arr[2] = new int[2];

System.out.println(arr.length);//打印是二维数组的长度 3;

System.out.println(arr[0].length);//打印二维数组中第一个一维数组长度

黑马程序员-(5)Java基础语法之数组 - wp王者归来 - 187327471王者归来的博客

二维数组练习

  int[] x,y[];//x一维,y二维。

int[] x;

int[] y[];

a.

x[0] = y;//error

b.

y[0] = x;//yes

c.

y[0][0] = x;//error

d.

x[0][0] = y;//error

e.

y[0][0] = x[0];//yes

f.

x=y;//error

 


自我总结:今天重点复习了数组的操作,对数组的冒泡排序和顺序排序进行了深入的代码分析。

难点在于对两种排序的代码不是很熟悉,久了容易忘,以后会不定时的复习数组,

总之,对数组有了一个更深入的认识。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值