---------------------- android培训、java培训、期待与您交流! ----------------------
函数 函数的定义,函数的特点,函数的应用,函数的重载
1,、什么是函数
(1)、函数就是定义在类中的具有特定功能的一段独立小程序,可重复使用
(2)、函数也称为方法
2,、函数的格式
修饰符 返回类型 函数名(参数类型 形式参数1,参数类型 形式参数2,..... )
{
执行语句;
return 返回值;
}
返回值类型:函数运行后的结果的数据类型。
参数类型:是形式参数的数据类型。
形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数
实际参数:传递给形式参数的具体数值。
return :用于结束函数。
返回值:该值会返回给调用者。
3、函数的特点
(1)、定义函数可以讲功能代码进行封装
(2)、便于对该功能进行复用
(3)、函数只有被调用才会被执行
(4)、函数的出现提高了代码的复用性
(5)、对于函数没有具体返回值的情况,返回值类型用关键字 void 表示,那么该函数中的 return 语句 如果在最后一行,可以省略不屑。写了类型,必须有返回,否则报错,否则写为 void
(6)、注意:
函数中只能调用函数,不可以在函数内部定义函数,定义函数时,函数的结果应该返回给调用者,交由调用者处理
4、如何定义一个函数
(1)、既然函数是一个独立的功能,那么该功能的运算结果是什么先明确,是在明确函数的返回值类型
(2)、在明确在定义该功能的过程中是否需要未知的内容参与运算,明确参数类型和参数的个数
(3)、System.out.print(函数),若函数返回类型为 void ,则会报错
(4)、 public static void printHr()
{
System.out.println("-----------");
}
5、函数的重载(overload)
(1)、重载的概念:在同一个类中,允许存在一个或一个以上的的同名函数,只要他们的参数个数或者参数类型不同即可。
(2)、重载的特点:与返回值类型无关,只看参数列表。
(3)、重载的好处:方便于阅读,优化了程序设计。
(4)、当定义的功能相同,但参与运算的未知内容不同,这时,就定义一个函数名称以表示功能,方便阅读,而通过参数列表不同,来区分多个同名函数
(5)、重载只和参数列表有关系,和返回值没有任何关系。
(6)、重载示例:
//返回两个整数的和、
int add(int x,int y){ return x+y;}
//返回三个整数的和
int add(int x,int y,int z){return x+y+z;}
//返回两个小数的和
double add(double x,double y){ return x+y;}
——————————————————————————————————————————————
数组的定义 new操作符在内存中产生容器实体
1、概念:同一种类型数据的集合,其实数组就是一个容器。
2、数组的好处:可以自动给数组中的元素从0开始编号,方便操作这些元素。
3、数组为数组类型,为引用数据类型,前面的格式类型为容器中数据的类型
4、格式1:元素类型[] 数组名 = new 元素类型[元素个数或数组长度]。
int[ ] arr = new int[5];
5、格式2:元素类型[] 数组名 = new 元素类型[]{元素,元素,元素,元素,元素}
int[ ] arr = new int[]{3,4,5,6} //静态初始化
int[ ] arr = {3,4,5,6}
int arr[ ] = {3,4,5,6} //这个也对,但建议不要这么写
6、范例
(1)、 int[] x = new int[3];
int[] y = x;
y[1] = 1;
则 x[1] 也为 1,引用类型
(2)、 int[] x = new int[3];
int[] y = new int[3];
y[1] = 1;
则 x[1] 没有内容,两个内存空间
(3)、int[] x = new int[3];
System.out.print(x[5]);
编译的时候不会报错,因为只是编译,但是当运行时,会分配内存空间,一使用x[5],就会报异常java.lang.ArrayIndexOutOfBoundsException 数组脚标越界异常,操作数组时,访问到了数组中不存在的角标
(4)、int[] x = new int[3];
x = null; //此时,x被赋值null,已经不再指向数组了,不是数组
System.out.print(x[5]);
java.lang.NullpointerException空指针异常运行时,会报空指针异常:当引用没有任何指向值为null的情况,该引用还在用于操作实体。
7、数组操作
数组中有一个属性可以直接获取到数组元素的个数:.length使用方式:数组名称.length
8、二维数组
(1)、格式:int[][] arr = new int[3][2];定义了名称为arr的二维数组,二维数组中有3个一维数组,每个以为数组中有两个元素,一维数组的名称分别为 arr[0] arr[1] arr[2]
给第一个一维数组 1 脚标 位赋值为78 的写法是:arr[0][1] = 78;
(2)、格式2:int[][] arr = new int[3][];二维数组中有3个一维数组,每个一维数组都是默认初始化值 null
可以对这三个一维数组分别进行初始化
arr[0] = new int[3];
arr[1] = new int[2];
arr[2] = new int[1];
(3)、格式3:int[][] arr = {{1,2,3},{4},{5},{3,4},};
栈内存
用于存储局部变量,当数据使用完,所占空间会自动释放。
堆内存
数组和对象,通过new建立的实例都存放在堆内存中。
每一个实体都有内存地址值
实体中的变量都有默认初始化值
实体不在被使用,会在不确定的时间内被垃圾回收器回收
---------------------- android培训、java培训、期待与您交流! ----------------------