1.1 方法,也可以成为函数。它表示一段可以独立运行的代码,具有独立功能。当程序调用时,通过方法(函数)名称进行调用。
1.2方法(函数)的书写
它写在类的大括号{}中,不能写在main方法里,要和main方法在关系上属并列关系,我们自己定义的函数(方法)和main方法没有先后次序。
1.3方法(函数)的作用
抽取相同的功能代码,进行封装,成为一个新的方法(函数),提高程序中代码的复用性。
tps:复用性:指功能代码只要书写一次,就可以重复的使用(调用)。
1.3方法(函数)的格式
函数的修饰符 函数的返回值类型 函数的名( 接收的参数类型 参数名 , 接收的参数类型 参数名 ....){
函数体代码;//具体完成相应功能的代码。
return 返回值; //返回值的类型必须是之前定义函数时所声明的函数的返回值类型
}
注意:如果这个函数调用完之后,不需要给调用者返回任何数据,
这时函数的返回值类型必须写void。
注意:如果需要返回值,则用return关键字。
原则:在书写代码的时候,每段代码如果是一个独立的功能,这时需要把这些代码单独的抽离到一个函数中,不要把所有代码全部书写在一个方法中。
1.4定义函数的原则:
- 遵守函数的定义格式。
- 定义函数的时候,一定要仔细去分析需求,确定函数要不要返回值。
- 定义函数的时候,确定当前这个函数要不要接收参数。
- 当定义函数的时候,数据并不是自己功能中产生的,而是需要调用者传递进来,然后根据传递的参数进行其他的 *** 作。这时一定要在参数列表中定义接收参数。
1.5重载:函数的重载,要求必须在同一个类(程序)中,有多个同名的函数,它们的参数列表不同,这时我们称为函数的重载。
注意:
- 要求必须在同一个类中(程序)。
- 要求函数的名称必须相同
- 要求函数的参数列表必须不同。
参数列表不同,主要针对的参数的个数,类型,顺序不同。
结论:重载就是在一个类中具有相同名称的函数,但是这些相同函数的参数列表不能相同。
2类名,变量名,方法名的命名规范
类名:多个单词每个单词首字母大写。
变量名:多个单词,从第二个单词开始,首字母大写。
方法名:它的书写规则和变量名一致。getSum( ) 这是一个求和的函数、printNumber( ) 打印数字、printArray( ) 打印数组。
3方法的形式参数是基本类
思考,为什么打印的a和b不是 6 和 10 呢?
在main方法中调用了demo方法,而在调用的时候,是把main方法中的2个变量的值复制了一份传递给demo方法中的a和b变量,这时在demo方法中对a和b进行修改,仅仅只能修改demo方法中的a和b,而对main方法中的a和b无法进行 *** 作。
4方法的形式参数是引用类型
引用的传递:当在main方法中把arr所指数组的引用地址值传递给demo方法,那么在demo方法中的arr和main方法中的arr同时指向堆中的同一个数组空间地址值,这时不管是在main方法中还是在demo方法中通过引用都可以去修改堆中的同一个数组。
总结:
值的传递(常量值传递或者就是基本数据类型传递)和引用的传递区别:
在程序中如果把具体的一个值传递给其他的方法,那么在方法中只能 *** 作传递过来的那个值。不影响实际参数的值。
在程序中如果把某个地址传递给了其他的方法,这是在其他方法中获取到的是地址,那么通过地址就可以找到真实存放数据的空间,这是通过地址去 *** 作同一个空间。影响空间的值。
*赘述 程序的执行在内存中的表现是:当程序开始执行,先执行的方法(main)A先进入“栈内存”,A中定义的变量sum也在“栈内存”中存储,但是方法A中new(创建)出来的(arr)对象变量,是在“堆内存”中创建并开辟的存储空间,且“堆内存”的地址值0x456会被赋值给方法A中的对象变量。
当方法(getArraySum)简称B被调用,进入“栈内存”中,定义的变量sum也在“栈内存”中存储,传递进来的(arr)对象变量,所指向的是“堆内存”的地址值0x456是和A同一个。当B方法执行完成后出栈,方法A继续执行,执行完后出栈,程序结束。
“栈内存”的特点:先进入栈内存的方法后出栈,全局和局部变量在这里存储。
“堆内存”的特点:“栈内存”的方法中new(创建)出来的对象变量,实际是在“堆内存”创建和开辟内存空间,并使对象变量指向“堆内存”地址值。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)