# 方法的定义与调用
## 方法的定义
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 关键字










