----------------------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培训、期待与您交流! ----------------------