- 方法其实就是若干语句的功能集合
将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集
一、方法的定义和调用
1.定义
- 方法头 方法体 //方法头就是规定和约束
- 方法头定义格式
访问修饰符 返回值类型(没返回值void) 方法名(参数列表) [throws 异常列表]{
方法体
return 返回值;
}
main方法
public static void main [String[] args]{
}
2.方法头注意事项
- 参数列表可以写多个
- 异常列表可写可不写
- 形参:方法定义中的参数
等同于变量定义格式,例如:int number
实参:方法调用中的参数
等同于使用变量或常量,例如:10
number
3.调用格式
- 直接调用
方法名 ( ) ;
- 打印调用
方法名 ( )放进输出语句
- 赋值调用
方法名 ( 变量名/常量值 ) ;
4.访问权限(重要)
同类 | 同包 | 异包子类 | 所有 | |
---|---|---|---|---|
private | √ | |||
default | √ | √ | ||
protected | √ | √ | √ | |
public | √ | √ | √ | √ |
5.注意事项
- 方法定义
- 在类当中,不能在方法中再定义方法
- 方法定义的前后顺序无所谓
- 方法定义之后不会执行,需要调用
- 如果方法头有返回值,必须写上return 返回值,不能没有
- return 后面的返回值必须和方法的返回值类型对应
- 对void,不能写return 后面的返回值 ,只能写return; 结束当前方法返回调用处,并且可以省略
- 一个方法的多个return,同时只有一个会被执行到
三、方法的其他特性
1.方法的重载
方法的重载:同一个类中,多个方法名称一样,参数列表不一样
- 有关因素:
- 参数个数不同
- 参数类型不同
- 参数不同类型的顺序不同
- 无关因素:
- 与参数名称无关
- 与方法的返回值无关
2.方法的参数传递 (Java本质上都是值传递)
值传递和引用传递:
看变量本身是否改变,本身改变就是引用传递
(基本数据类型都是值传递)
(有地址大概率就是传递地址,比如数组)
- 特例:String
(String永远是值传递,因为它的值存在常量池里)
String str = “old String”;
String str = new String (“old String”);
3.可变参数
JDK1.5之后,当方法的参数列表数据类型已经确定,但是参数的个数不能确定就可以使用可变参数
修饰符 返回值类型 方法名(数据类型...变量名) {
}
- 原理:
可变参数的底层就是一个数组,根据传递参数的个数不同,会创建不同长度的数组来存储这些参数
传递的参数个数可以是0个(不传递),1个,2个,…n个 - 注意事项:
- 一个方法的参数列表只能有一个可变参数
- 如果方法的参数有多个,可变参数只能写在参数列表的末尾