方法 Method
方法的本质就是一段可以重复使用的代码,而且每个方法都是独立的,可以独立的完成某项任务;
- 注意:方法只定义不调用是不会执行的;
- 方法的定义与调用:
- 1.10 形式参数列表一般简称为:形参。形参个数是:0-N个。多个的话,使用逗号隔开。
形参是局部变量。形参中起决定性作用的是:形参的类型。形参名随意。- 方法的定义。
1.1 语法格式: java基础教程动力
[修饰符列表] 返回值类型 方法名(形式参数列表){
方法体;
}
//[ ]中的修饰符列表不是必须存在的!
1.2 修饰符列表:目前修饰符列表这一块,统一编写public static。后面讲。
1.3 返回值类型
可以是java语言中任何一种数据类型。包括基本数据类型,引用数据类型。
例如:byte short int long float double boolean char String…
如果方法执行结束的时候没有返回任何数据给调用者,返回值类型写:void。
切记:不能空着不写。
返回值类型是String表示:方法结束的时候会返回一个字符串给调用者。
返回值类型是void表示:方法结束的时候不返回任何数据给调用者。
1.4 当返回值类型不是void的时候,方法在结束的时候必须使用“return 值;”语句来完成数据的返回。
1.5 return语句有两种写法:
第一种:return 值;
第二种:return;
不管是哪一种,只要return语句执行,方法必然结束。
1.6 当返回值类型是void的时候:
不能编写"return 值;" 这样的语句。
但是可以编写"return;"语句,主要是用来终止方法的执行。也可以不编写“return;”,这个要看具体的业务。
1.7 当调用一个返回值类型不是void的方法时,方法结束的时候会返回值,这个值可以采用变量接收。注意变量的类型。
变量的类型一定要和返回值类型一致。或者能够自动类型转换,或者强制类型转换。
1.8 方法执行结束有返回值,但是对于调用者来说,可以选择接收,也可以选择不接收。
1.9 方法名:只要是合法的标识符即可。首字母小写,后面每个单词首字母大写。(一般方法都是一个行为,所以方法名一般都是动词。)
方法名最好是反映了这个方法所实现的功能。
deleteUser
saveUser
login
logout
…
1.11 方法体:任何一个方法都有一个方法体。方法体用大括号括起来:
在大括号中编写“java语句;”
并且方法体中的代码有执行顺序,遵循自上而下。 - 方法的定义。
- 实际参数列表简称为:实参。
- 方法的调用。
当这个方法修饰符列表有static关键字的时候:
调用的语法格式:
类名.方法名(实际参数列表);
实参和形参列表必须一一对应:
类型要一一对应。
个数要一一对应。
当调用函数和被调用函数在同一个方法中时,可以省略类名,反之不可以。
return 语句不是写了就可以,还要保证100%的执行,也就是一定能够完成值的返回!
在同一个域(就是有效范围)中:return语句后面的代码是无法执行的。请不要写。 - 方法的调用。
public static int m1(){
int i = 100;
if(i > 99){//i的域就是m1函数内!
return 1;
}else{
return 0;
}
}
变量的分类:
- 局部变量 方法中的变量就是局部变量,注意形参列表里的变量作用域就是其所在方法,所以形参是局部变量
- 成员变量 类体中,方法外的变量叫成员变量。
通过运用方法思想编写一个登陆方法。
执行结果
方法重载Overload
当一个程序满足怎样的条件时,代码就构成了方法重载呢?
条件1:在同一个类中。
条件2:方法名一致。
条件3:形式参数列表不同:
类型不同算不同
顺序不同算不同说的是数据类型的顺序不同。
个数不同算不同
注意:形参中重要的是形参的数据类型,因此
方法重载是编译阶段的机制还是运行阶段的机制?
方法重载机制是编译阶段的机制。
在编译阶段已经完成了方法的绑定。
在编译阶段已经确定了要调用哪个方法了。
什么情况下我们考虑使用方法重载呢?
在以后的开发中,在一个类中,如果两个方法的功能相似,建议将方法名定义为同一个名字。
此时就使用了方法重载机制。
运算器的实现就可以借助方法重载机制,比如实现加法:
方法递归 Recursion
方法的递归调用:
- 什么是方法的递归调用?
方法自己调用自己。 - 递归调用如果没有结束条件的话,会出现栈内存溢出错误:
java.lang.StackOverflowError - 所有的递归调用必须要有结束条件。
- 在实际开发中,使用递归调用的时候,即使有的时候,结束条件是存在的,并且结束条件也是合法的。但仍然会发生栈内存溢出错误,这可能是因为递归太深,栈内存不够了导致的。所以递归调用一般是不建议使用的。只有在不使用递归调用时这个问题解决不了的情况下,才建议使用递归调用。
原则:能用循环尽量使用循环。
因为递归调用太耗费栈内存。 - 在实际开发中,如果因为递归调用发生了栈内存溢出错误,你该怎么办?
首先可以调整栈内存的大小。扩大栈内存。
如果扩大之后,运行一段时间还是出现了栈内存溢出错误。
可能是因为递归结束条件不对。需要进行代码的修改。
兔子繁殖问题又称为斐波那契数列:
分析过程:
代码如下:
package
package只能在代码第一行的含义:所有被编译器执行的代码中,排首行。如果有注释的话,注释在第一行也没关系。
package语法:
- package是包机制,有什么用?
便于管理。不同的类放在不同的包下。好维护。 - package语句只能写1行,并且只能写在java源码的第一行。
- 怎么定义包?
package 包名; - 定义了包之后,怎么带包编译?
javac -d . PackageTest01.java
语法:javac -d 生成目录 源文件路径当然,也可以不带包编译,编译之后,可以手动创建目录,这种方式比较麻烦。
- 一旦定义了package之后,有了包之后,怎么运行java程序呢?
重点强调:有了package之后,完整的类名是带包名的。所以运行的时候一定要添加包名:
java org.apache.struts.PackageTest02 - package命名规范:
- 所有的包名都是小写。
- 包名的命名规范:
公司域名倒序 + 项目名 + 模块名 + 功能名; - 例如:com.powernode.oa.empmgt.service;
- import语句只能出现在package和class定义之间。
- import语句可以编写多个。
- 什么时候必须使用import语句?
A类中使用B类,当A和B类不在同一个包下。并且B类也不属于java.lang包,必须使用import引入。 - import支持模糊导入。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/24934.html