JAVAEE学习day04方法的定义和重载

1.方法定义的格式

  方法就是完成特定功能的代码块

  修饰符 返回值类型 方法名(参数类型 参数名1, 参数类型 参数名2...){

    方法体;

    return 返回值;

  }

 

  修饰符:

    初学者只需记住public static

  返回值类型:

    用于限定返回值数据类型

  方法名:

    一个名字,方便我们调用方法

  参数类型:

    用于接受调用方法时传入的数据的类型

  参数名:

    用于接收调用方法时传入的数据的变量

  方法体:

    完成功能的代码

  return:

    结束方法,把返回值带给调用者

 

2.调用方法的三种方式:

  a.单独调用
    方法名()
  b.打印调用
    System.out.println(方法名())
  c.赋值调用
    方法名(参数1,参数2...)

 

3.方法的注意事项:

  a.方法应该定义在类中,但是不能在方法中再定义方法
  b.方法的定义顺序无所谓
  c.方法定义之后不会自己执行,只有调用才会执行
  d.如果方法由返回值,必须有return
  f.return后边的返回值类型与方法定义的返回值类型相同
  g.对于void类型,最后的return可以省略
  h.一个方法中可以有多个return语句,但是必须保证只有一个能被执行到

 

4.break,continue和return的区别

  break:只能用在switch和循环中,表示结束这个循环
  continue:只能用在循环中,表示跳过此次循环,继续下一个循环
  return:用在方法中,表示此方法到此结束

 

5.方法重载的概述和基本使用

  在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。

  方法重载特点:

    a.与返回值类型无关,只看方法名和参数列表

    b.在调用时,虚拟机通过参数列表的不同来区分同名方法

/*
 * 需求:比较两个数据是否相等。参数类型分别为两个byte类型,两个short类型,两个int类型,两个long类型,
 *     并在main方法中进行测试
 */
public class MethodTest {
    public static void main(String[] args) {
        // 调用
        System.out.println(compare(10, 20));
        System.out.println("-------------");
        System.out.println(compare((byte)10, (byte)20));
        System.out.println("-------------");
        System.out.println(compare((short)10, (short)20));
        System.out.println("-------------");
        //System.out.println(compare((long)10, (long)20));
        System.out.println(compare(10L, 20L));
    }

    // 两个byte类型的
    public static boolean compare(byte a, byte b) {
        System.out.println("byte");
        // 第一种写法
        // boolean flag = a==b?true:false;
        // return flag;
        // 第二种写法
        // boolean flag = a == b;
        // return flag;
        // 第三种写法
        return a == b;
    }

    // 两个short类型的
    public static boolean compare(short a, short b) {
        System.out.println("short");
        return a == b;
    }

    // 两个int类型的
    public static boolean compare(int a, int b) {
        System.out.println("int");
        return a == b;
    }

    // 两个long类型的
    public static boolean compare(long a, long b) {
        System.out.println("long");
        return a == b;
    }
}

 

6.方法中参数传递

  a.方法的形式参数为基本数据类型

     形式参数的改变不影响实际参数。

 

      形式参数:用于接收实际数据的变量

      实际参数:实际参与运算的变量

 

   b.方法的形参为引用数据类型

     形式参数的改变直接影响实际参数。引用的时参数的地址

// 参数传递的经典案例

class Test{

    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println("a:"+a+",b:"+b); //a:10,b:20
        change(a,b);
        System.out.println("a:"+a+",b:"+b); //a:10,b:20
     // a,b的值在前后并没有发生改变

        int[] arr = {1,2,3,4,5}; 
        change(arr);
        System.out.println(arr[1]); // 4
      //数组的值发生改变 
    }

    // 参数时基本数据类型
    public static void change(int a,int b) { 
        System.out.println("a:"+a+",b:"+b); //a:10,b:20
        a = b;       //a=20
        b = a + b;   //b=40
        System.out.println("a:"+a+",b:"+b); //a:20,b:40
    }
    // 参数是引用数据类型
    public static void change(int[] arr) { //arr={1,2,3,4,5};
        for(int x=0; x<arr.length; x++) {
            if(arr[x]%2==0) {
                arr[x]*=2;
            }
        }
            //arr={1,4,3,8,5};
    }
}

 

 

    

7.打印所有的水仙花数

public class MethodTest2 {
    //把所有的水仙花数打印在控制台
    public static void printFlower() {
        for(int x=100; x<1000; x++) {
            int ge = x%10;
            int shi = x/10%10;
            int bai = x/10/10%10;
            
            if((ge*ge*ge+shi*shi*shi+bai*bai*bai) == x){
                System.out.println(x);
            }
        }
    }
    
    public static void main(String[] args) {
        printFlower();
    }
}

 

posted on 2019-03-03 21:43  BRIGHTM00N  阅读(227)  评论(0编辑  收藏  举报