黑马程序员——java---数组
来源:互联网 发布:手机淘宝收获地址吗 编辑:程序博客网 时间:2024/05/20 22:00
概念
同一种类型数据的集合,其实数组就是一个容器。
数组的好处
可以自动给数组中的元素从0开始编号,方便操作这个元素。
格式
1.元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
示例:int[] arr = new int [5];
2.元素类型[] 数组名 = new 元素类型[]{元素,元素,.......};
Int [] arr = new {3,4,6,1};
数组中的数组
二维数组:(其实是一个一维数组,它的每一个元素又是一个一维数组),
可以看做是一张表格。
初始化:
动态初始化
int[ ][ ] arr = new int[3][2];
定义了一个二维数组,其中有3个一维数组,每一个一维数组中有2个元素
静态初始化
int[ ][ ] arr = new int[][]{{1,2},{3,4},{5,6}};
int[ ][ ] arr = {{1,2},{3,4},{5,6}};
public class Demo3 {public static void main(String[] args) {int age[][] = new int[][]{{1,2},{3,4},{5,6,7}};System.out.println(age[0].length);//2System.out.println(age[2].length);//3}}
内存结构
Java程序在运行时,需要在内存中的分配空间。为了提高运算效率,有对空间进行了不同区域的划分,因为每一片区域都有它特定的处理数据方式和内存管理方式。
栈内存
用于存储局部变量,当数据使用完,所占空间会自动释放。
堆内存
数组合对象,通过new建立的实例都存放在堆内存中。
每一个实体都有内存地址值。
实体中的变量都有默认初始化值实体不在被使用,会在不确定的实践内被垃圾回收器回收。
异常
1、数组脚标越界异常(ArrayIndexOutOfBoundsException)。例:int[] arr = new int[2];
System.out.println(arr[3]);
访问到了数组中的不存在的脚标时发生。
2、空指针异常(NullPointerException)。例:
int[]arr = null;
System.out.println(arr[0]);
arr引用没有指向实体,却在操作实体中的元素时
lenth方法
获取数组中的元素。通常会用到遍历
lenth可获取数组的长度
public class DeMo1 {public static void main(String[] args) {int [] arr = {3,4,2,7,6};//获取数组中的元素。通常会用到遍历。//数组中有一个属性可以直接获取到数组元素个数。length。//获取数组长度System.out.println(arr.length);for(int x = 0; x<arr.length; x++){System.out.println("arr["+x+"]="+arr[x]+";");}}}
练习:
1获取数组中的最大值:
public class DeMo2 {/** *获取数组中的最大值。 *思路: *1:获取最值需要进行比较。每一次比较都会有一个较大的值。因为该值不确定。 *通过一个变量临时存储。 *2:让数组中的每一个元素都和这个变量中的值进行比较。如果大于了变量中的值就用该变量记录较大值。 *3:当所有的元素都比较完成,那么该变量中存储的数组中的最大值了。 */public static void main(String[] args) {//定义一个数组。int[] arr = {3,7,6,9,2,4,11,13};//定义一个用于输出数组最大值的方法。int max = max(arr);System.out.println(max);}private static int max(int[] arr) {//定义一个用于临时存储的变量。int max =0;for(int x = 0; x<arr.length; x++){if(arr[x]>max)//如果遍历的数大于了max就把便利的数的值赋给max。max = arr[x];}return max;}}
2选择排序
public class DeMo3 {/** * 选择排序。 思路: 1:定义一个数组,遍历里面的数。 2:在遍历数组的同时用第一个数跟数组中所有的数比一遍。以此类推。 * 3:定义一个交换比较的数方法。 */public static void main(String[] args) {// 定义一个数组。int[] arr = { 2, 3, 5, 6, 9, 1, 12 };//定义一个方法用于比较每个数。arraySort(arr);}private static void arraySort(int[] arr) {for (int x = 0; x < arr.length-1; x++) {for (int y = x + 1; y < arr.length ; y++) {if (arr[x] > arr[y]) {int temp = arr[x];arr[x] = arr[y];arr[y] = temp;}}}//使打印后看起来更有好看。System.out.print("[");for(int x = 0; x<arr.length; x++){if(x!=arr.length-1)System.out.print(arr[x]+",");elseSystem.out.println(arr[x]+"]");}}}
3冒泡排序
原理相邻的两个元素进行比较,如果符合条件换位。
public class DeMo4 {/** *冒泡排序 *思路: *1:定义一个数组把相邻两个元素进行比较。 *2:满足指定条件交换位置。 */public static void main(String[] args) {//定义一个数组。int[] arr = {2,4,6,7,9,12,42,11};//定义一个符合冒泡排序的方法。bubbleSort(arr);}private static void bubbleSort(int[] arr) {// for(int x = 0; x<arr.length; x++){for(int y = 0; y<arr.length-x-1; y++){if(arr[y]>arr[y+1]){int temp = arr[y];arr[y] = arr[y+1];arr[y+1] = temp;}}}//使打印后看起来更有好看。System.out.print("[");for(int x = 0; x<arr.length; x++){if(x!=arr.length-1)System.out.print(arr[x]+",");elseSystem.out.println(arr[x]+"]");}}}
4.折半查找
折半查找可以提高效率但是但是必须要保证该数组是有序的数组。
public class DeMo5 {/** * 折半查找 * 思路: * 1:定义一个数组。定义三个变量分别记入最大值最小值和中间值。 * 2:如果要找的数在中间值的右边则把最小值变成中间值+1 * 3:如果要找的数在中间值的左边则把最大值变成中间值-1 */public static void main(String[] args) {// 定义一个数组。int[] arr = {1,2,4,5,7,9,12,13,16,34};//定义一个查找的方法。int index = halfSearch(arr,9);System.out.println(index);}private static int halfSearch(int[] arr, int i) {// 定义三个变量来实施查找。int min = 0;int max = arr.length-1;int mid = (min+max)/2;while(arr[mid]!=i){if(i<arr[mid])max = mid-1;else if(i>arr[mid])min = mid +1;mid = (min+max)/2;}return mid;}}
- 黑马程序员—Java数组
- 黑马程序员——JAVA数组
- 黑马程序员Java笔记——数组
- 黑马程序员——JAVA 数组
- 黑马程序员——Java数组
- 黑马程序员——Java函数、数组
- 黑马程序员——Java(数组)
- 黑马程序员——Java之数组
- 黑马程序员——java---数组
- 黑马程序员——Java数组
- 黑马程序员——JAVA 数组
- 黑马程序员——java基础---数组
- 黑马程序员——Java数组
- 黑马程序员——JAVA数组
- 黑马程序员——Java基础---数组
- 黑马程序员——JAVA基础---数组
- 黑马程序员——java数组
- 黑马程序员—Java基础—数组
- Input Layout
- git 给远程库 添加多个url地址
- 解决Input Text文本垂直居中的简单快速有效的方法
- telnet发送邮件
- SSL探索03
- 黑马程序员——java---数组
- 百度web前端面试题---2014
- 安卓短信过滤器小程序
- urllib2.HTTPError: HTTP Error 403: Forbidden
- 【java编程】IO流和集合类综合题目
- 领域驱动设计(转)
- Xcode常用插件使用及自动生成帮助文档
- 自己动手写操作系统之环境构建篇
- Android开发之监听或获取手机短信内容