----------- android培训、java培训、期待与您交流!------------
一、函数
1、函数的好处:
1,对细节进行封装。
2,提高了代码的复用性。
方法要进栈的原因?
方法里面存储着局部变量,方法要进栈内存去将局部变量进行空间分配,运算完就出栈。(栈是一个运算区,方法区是一个存储区)
出栈以后,方法还在方法区中。
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,...)
{
执行语句;
return 返回值;
}
2、函数的特殊情况。
当一个功能没有具体结果返回时。
java中对这种情况,用关键字 void 来表示返回值类型。
void代表着没有具体返回值的情况。
return :将具体的功能结果返回给调用者。
将函数结束。是一个结束标记。
当void类型的函数定义时,函数中的return后面直接分号结束。
同时,该return语句可以省略不写。但是编译器会帮你加上。
3、定义的函数的两个明确:
既然要定义一个功能。那么功能就一定要有结果。
1,明确功能的结果。
其实就是在明确返回值类型。
2,在定义该功能的过程中,是否有未知的内容参数运算。
其实就是在明确参数列表。
4、函数的重载
在同一个类中,允许存在一个以上的同名函数,只要他们的参数列表不同即可
重载和返回值类型无关,只参照同名函数的参数列表
二、数组
int[] arr = new int[]{12,78,33,99};
int[] arr = {12,78,33,99,77,45,23};
int[] arr = new int[3];
数组的特点
1,必须是同一类型元素。
2,给元素进行编号,从0开始。
3,数组的定义都必须明确长度。
五片区域:
寄存器,栈内存,堆内存,方法区,本地方法区。
栈内存:存储的都是局部变量,先进后出。一旦局部变量生命周期结束立刻被释放。
堆内存:存储的是实体(对象,就是用于存储很多数据的堆内存空间)。
1,堆内存中的每一个实体都有自己的内存地址值。
2,堆内存中每一个变量都有默认初始化值,不同类型初始化值不同。
int 0,double 0.0 char \u0000,boolean false.
3,当实体被视为垃圾时,会在不定时的时间内,被垃圾回收。
常见异常:
ArrayIndexOutOfBoundsException:数组角标越界异常,发生在运行时期。当访问到不存在的角标时,就会发生该异常。
NullPointerException 空指针异常。当引用没有任何实体指向时,还在使用其操作实体,就会发生该异常。
获取最值
//第一种最大值
public static int getMax(int[] arr)
{
//1,定义变量,记录较大的值。
int max = arr[0];//初始化是数组中的任意一个元素
//2,遍历数组。
for (int x=1; x<arr.length ;x++ )
{
//3,进行判断比较。
if(arr[x]>max)
max = arr[x];
}
return max;
}
//第二种最大值。
public static int getMax2(int[] arr)
{
int maxIndex = 0;//初始化为数组中任意一个角标。
for (int x=0; x<arr.length ;x++ )
{
if(arr[x]>arr[maxIndex]){
maxIndex = x;
}
}
return arr[maxIndex];
}