方法的定义
注意,java中方法不能嵌套定义!!!
方法头:也叫方法的声明,五个部分组成
[访问修饰符]<返回值类型><方法名>([参数列表])[异常列表]
使用[]包括的部分是可选项,<>包括的是必填项
例如:
Public static void attack(String type)
访问修饰符:public static
返回值类型:void(当前不返回任何值)
方法名:attack
参数:type(形参)
方法体:也叫方法的实现,具体要使用的代码块位于{}中
public static void fun(){
System.out.println("fun方法体")
}
2.访问权限符
修饰符 | 当前类 | 子类 | 相同包 | 其他包 |
public | yes | yes | yes | yes |
protetcted | yes | yes | yes | no |
default | yes | no | yes | no |
private | yes | no | no | no |
2.1访问权限符范围
从小到大private->default->protected->public
私有权限(private):private可以修饰数据成员、构造方法、和方法成员,不可以修饰类(外部类,不考虑内部类)。被private修饰的成员只能在定义它们的类中使用,在其他类中不能调用
2.默认权限(default):不被private、protected、public修饰即为默认权限,类、数据成员、构造方法和方法成员等都能够使用默认权限(相比于其他多了一个类)。被默认权限修饰的元素只能在定义它们的类中以及同包的类中被调用
3.受保护权限(protected):protected可以修饰数据成员、构造方法和方法成员,被protected修饰的类只能在定义它的类和同包的类或者其他包的子类中才能访问
4.公共权限(public):public可以修饰类、数据成员、构造方法和方法成员(相比于其他多了一个类)。被public修饰的成员可以在任何一个类中被调用,不管同包不同包,是权限最大的一个修饰符
3.方法返回值
1.如果方法在声明时,返回值类型不是void,说明方法必须要有返回值,必须要使用return语句来返回,返回的数据必须和方法声明时的数据类型相同 或兼容
2.当一个方法中,执行到return语句时,就表明,当前方法执行结束了,回到主调方法继续运行
3.在return语句后面,不能再出现其他语句,除非return语句在条件分支中。如果return在条件分支中,要保证方法不管在什么情况下,都要有return语句被执行
4.方法参数传递
基本数据类型传递:传递参数所对应的数据值
引用数据类型传递:传递的是存储的引用地址值,字符串String,传递的是字面量值
4.1形参
也叫形式参数,方法声明时候的参数称为形参,如test(int x)
4.2 实参
也叫实际参数,方法调用时传入的参数,如test(1)
public class Test {
public static void main(String[] args) {
fun("这里是实参");//括号中为实参
}
private static void fun(String str) {//括号中为形参
System.out.println(str);//将传入的参数打印输出
}
}
4.3可变参数(不定长参数)
1.当参数的个数不定时,可以使用可变参数
2.可变参数的写法:int…x前面为参数类型,中间加三个点,后面为参数名
使用规则:
1.如果方法中,有可变参数,还有其它参数,可变参数必须是最后出现,并且只能有一个可变参数
2.可变参数的原理为数组,传入参数时,根据传入的参数自动生成匹配的数组类型,数组长度等于传入的参数个数,数组元素为传入的实参
public class Demo {
public static void main(String[] args) {
int sum = add(1,2,3,4,5,6,7,8,9);
System.out.println(sum);
}
private static int add(int ...x) {//可变参数
int add = 0;
//将数组元素(即传入的参数)求和
for (int i = 0; i < x.length; i++) {
add += a[i];
}
return add;
}
运行结果为 45
5.方法的声明和调用
public class Test {
//定义4种方法
private static void m1() {
System.out.println("无参无返回值的方法");
}
private static int m2() {
System.out.println("无参有返回值的方法");
return 1;
}
private static int m3(String str) {
System.out.println("有参有返回值的方法");
return 1;
}
private static void m4(String str) {
System.out.println("有参无返回值的方法");
}
public static void main(String[] args) {
//调用方法
m1();
m2();
m3("有参");
m4("有参");
}
}
运行结果为
无参无返回值
无参有返回值
有参无返回值
有参有返回值
6.方法的重载
同一个类中,方法名相同,参数列表不同,就是方法重载
要求:
1.方法名必须相同
2.访问修饰符可以相同,也可以不同
3.返回值类型可以相同,也可以不相同
4.参数列表必须不同(不区分形参名称的)
1.参数类型不同
2.参数个数不同
3.参数顺序不同
public class Text {
public static void main(String[] args) {
add(1,2);//两个数的相加
add(1,2,3);//三个数的相加
add(1,2,3,4);//四个数的相加
add(1,2,3,4,5);//五个数的相加
}
//方法名相同,参数列表不同造成重载
private static void add(int a,int b) {
int sum = a + b;
System.out.println("两个数的相加和为"+sum);
}
private static void add(int a,int b,int c) {
int sum = a + b + c;
System.out.println("三个数的相加和为"+sum);
}
private static void add(int a,int b,int c,int d) {
int sum = a + b + c +d;
System.out.println("四个数的相加和为"+sum);
}
private static void add(int a,int b,int c,int d,int e) {
int sum = a + b + c + d +e;
System.out.println("五个数的相加和为"+sum);
}
}
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.youkuaiyun.com/qq_45626589/article/details/112271660