您的位置:首页 > 职场人生

黑马程序员----------java基础知识(4)之数组

2014-05-18 16:45 344 查看
----------------------android培训java培训、期待与您交流!
----------------------

今天主要学习了java中的函数,也就是方法,还有数组,下面针对数组做一下自己的总结。

:数组(重点)

(1)数组的概念和特点

A:数组时存放同一种数据类型的集合.数组是一个容器.

B:特点

**它会把元素自动从0开始编号,方便于操作元素.

(2)数组定义的两种格式

A:第一种

int[] arr = new int[长度]; 经常使用

/*

左边:

int 元素的数据类型

[] 表示这是一个数组

arr 是数组(变量)名

右边:

new 用于创建实体的.

实体:可以用于存放多个数据的东西.

就像class定义一个类似的.

int 元素的数据类型

[] 表示这是一个数组

长度 表示的是数组中的元素个数

*/

int arr[] = new int[长度]; //了解

B:第二种

int[] arr = new int[]{元素列表...};

int[] arr = {元素列表...}; 经常使用

C:那么,我们定义数组的时候使用哪种格式呢?

如果数组的元素能够明确的列出来,用第二种.否则,用第一种.

(3)什么时候使用数组呢?

当你要操作的数据是多个的时候,考虑使用数组.

(4)java中的内存图(看懂)

栈:存储的是具备变量(函数内定义的变量)

特点:离开使用空间,立刻自动释放.

堆:存储的是实体,就是 new出来的东西.

特点:

**堆内存中的实体都有首地址值

**堆内存中的实体的变量都有默认值

byte,short,int,long 0

float,double 0.0

boolean false

char '\u0000' 空字符

**堆内存中的实体不在被引用变量指向时,就变成了垃圾.

它会在jvm空闲的时候,有java的自动垃圾回收机制进行

清除.

方法区:后面讲

本地方法区:与系统相关的资源

寄存器:与CPU相关的资源

(5)数组常见问题

A:角标越界 访问了不存在的角标.

ArrayIndexOutOfBoundsException

B:空指针异常 数组为null,我们还在通过它访问数组中的元素.

NullPointException

(6)数组常见操作 肯定离不开角标

A:遍历

数组的属性:length

用法格式:数组名.length 获取数组的长度

public static void printArray(int[] arr)
{
for(int x=0; x<arr.length; x++)
{
System.out.println(arr[x]);
}
}


//为了格式好看

public static void printArray(int[] arr)
{
System.out.print("[");

for(int x=0; x<arr.length; x++)
{
if(x==arr.length-1)
{
System.out.print(arr[x]);
}
else
{
System.out.print(arr[x]+",");
}
}

System.out.println("]");
}


B:最值

**最大值

public static int getMax(int[] arr)
{
int max = arr[0];

//0角标的元素作为了参照物
for(int x=1; x<arr.length; x++)
{
if(arr[x]>max)
{
max = arr[x];
}
}

return max;
}


**最小值

public static int getMin(int[] arr)
{
int min = arr[0];

//0角标的元素作为了参照物
for(int x=1; x<arr.length; x++)
{
if(arr[x]<min)
{
min = arr[x];
}
}

return min;
}


C:排序

**选择排序 用0角标的元素和其后元素依次比较,最值出现在左边.

public static void selectSort(int[] arr)
{
for(int x=0; x<arr.length-1; x++)
{
//y总是比x大1
for(int y=x+1; y<arr.length; y++)
{
if(arr[y]<arr[x])
{
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
}
}
}


**冒泡排序 原理是 相邻元素两两相比,最值出现在右边.

public static void bubbleSort(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;
}
}
}
}


以前看过老师将的数组排序,其实数组的排序有很多种,其中冒泡排序和选择排序是最基本的最麻烦的排序算法,不过我感觉还行,自己代码没有必要一个不漏的背下来,只要自己知道原理就好了,在面试的时候也可以自己当场去总结其中的规律,直接就可以将代码写出来。

----------------------android培训java培训、期待与您交流!
----------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: