黑马程序——关于函数(黑马我来了之三)

来源:互联网 发布:mac怎么显示图片尺寸 编辑:程序博客网 时间:2024/05/31 15:18

                                                ---------------------- 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]

给第一个一维数组 脚标 位赋值为78 的写法是:arr[0][1] = 78;

(2)、格式2int[][] arr = new int[3][];二维数组中有3个一维数组,每个一维数组都是默认初始化值 null

可以对这三个一维数组分别进行初始化

arr[0] = new int[3];

arr[1] = new int[2];

arr[2] = new int[1];

 (3)、格式3int[][] arr = {{1,2,3},{4},{5},{3,4},};

栈内存
用于存储局部变量,当数据使用完,所占空间会自动释放。
堆内存
数组和对象,通过new建立的实例都存放在堆内存中
每一个实体都有内存地址值
实体中的变量都有默认初始化值
实体不在被使用,会在不确定的时间内被垃圾回收器回收

                                        ---------------------- android培训java培训、期待与您交流! ----------------------

原创粉丝点击