# 方法的定义与调用
## 方法的定义
1. 修饰符
2. 返回类型
3. break:**跳出Switch,结束循环和return 的区别**
4. 方法名
5. 参数列表(参数类型 参数名)...
6. 异常输出
```java
package opp.demo01;
import java.io.IOException;
//Demo01 类
public class Demo01 {
// main方法
public static void main(String[] args) {
}
/*
修饰符 返回值类型 方法名(...){
//方法体
return 返回值;
}
*/
//return 结束方法,返回一个结果!
public String sayHello(){
return "hello,world";
}
public int max(int a, int b) {
return a > b ? a : b ;//三元运算符 如果a>b 则输出结果为a,否则为b
}
//数组下标越界: Arrayindexoutofbounds
public void readFile(String file) throws IOException{
}
}
```
## 方法的调用
1. 静态方法(加static);非静态方法(不加static)

2. 形参与实参
```java
package opp.demo01;
public class Demo03 {
public static void main(String[] args) {
//实际参数和形式参数的类型要对应
int add = Demo03.add(1,2);
System.out.println(add);
}
public static int add(int a,int b){
return a+b;
}
}
```
3. 值传递和引用传递
```java
package opp.demo01;
//值传递
public class Demo04 {
public static void main(String[] args) {
int a = 1;
System.out.println(a);//1
Demo04.change(a);
System.out.println(a);//1
}
//返回值为空
public static void change(int a){
a = 10;
}
}
```
```java
package opp.demo01;
// 引用传递: 对象 ,本质还是值传递
public class Demo05 {
public static void main(String[] args) {
Perosn perosn = new Perosn();
System.out.println(perosn.name);//null
// Demo05.change(perosn);
System.out.println( perosn.name);//"脏三"
}
public static void change(Perosn perosn) {
//perosn是一个对象 指向---》 Perosn perosn = new Perosn();这是一个具体的人,可以改变属性
perosn.name = "脏三";
}
}
//定义了一个preosn类 有一个属性:name
class Perosn{
String name;//null
}
```
4. this 关键字