zoukankan      html  css  js  c++  java
  • Java基础 -- Java方法

    Java方法

    1. 什么是方法?

      Java方法是语句的集合,他们在一起执行一个功能。

      • 方法是解决问题步骤的有序集合。
      • 方法包含于类或对象中。
      • 方法在程序中被创建,在其他地方被引用。
    2. 设计方法原则:一个方法只完成一个功能。

      方法的本意是功能块,即实现某个功能的语句块的集合。我们设计方法的时候最好保持方法的原子性,就是一个方法只完成一个功能。

    方法的定义

    1. Java方法类似函数,一段完成特定功能的代码。

    2. 方法包含一个方法头和方法体。包含:修饰符,返回值类型,方法名,参数类型,方法体

    3. 格式:

      /*
      修饰符 返回值类型 方法名(参数类型 参数名){
      	...
              方法体
          ...
          return 返回值;
      }
      */
      public static int max(int num1,int num2){
          int result = 0;
          if (num1==num2){
              System.out.println("num1=num2");
              return 0;//终止方法
          }
          int result =num1>num2?num1:num2;
          return result;
      }
      

    方法的调用

    1. 语法:对象名.方法名(实参列表)

    2. Java支持两种调用方式,根据是否有返回值来选择。

    3. 两种方式:

      • int larger = max(30,40);
        
      • System.out.println("Hello,World!");
        
    4. 课后拓展:

      • 值传递:传原实参副本,不改变实参变量。

      • 引用传递:传内存地址,操作该地址的变量,原实参发生改变。

        Java只存在值传递。

            public static void main(String[] args) {
                //StringBuilder sb = new StringBuilder("iphone");
                //foo(sb); // sb 没有被改变,还是 "iphone"。
        
                //Java中只有值传递
                int count = 66;
                fun(count);
                String str = "abc";
                fun1(str);
            }
        
            /*
            值传递:调用方法将实参作为副本放入方法中,无论方法中如何修改不影响原实参
            引用传递:将变量的内存地址传给方法,操作时会找到保存在地址内的变量,一旦修改会对原实参产生影响
             */
        
            //fun方法
            static void fun(int count){
                count = 666;
            }
            //fun1
            static void fun1(String str){
                str = "aabbcc";
            }
        
        //    static void foo(StringBuilder builder) {
        //        builder = new StringBuilder("ipad");
        //    }
        

    方法的重载

    1. 定义:一个类中,函数名相同,形参不同。

    2. 规则:

      • 方法名必须相同
      • 参数列表必须不同(个数/类型/顺序不同)
      • 方法返回值类型可以相同可以不同
      • 仅仅返回值不同不足以成为方法的重载
    3. 实现理论:

      方法名相同时,IDE根据调用方法的参数个数,类型,顺序注意匹配,以选择对应方法,如匹配失败,则IDE报错

          public static void main(String[] args) {
              double max = max(10.0, 20.0);
              System.out.println(max);
          }
      
          /*方法的重载:
              1.方法名必须相同
              2.参数列表必须不同(参数个数,类型,排列顺序)
           */
          public static double max(double a,double b){
              double result = 0;
              if (a==b){
                  System.out.println("a=b");
                  return 0;//终止方法
              }
              if (a>b){
                  result = a;
              }else{
                  result = b;
              }
              return result;
          }
      
          public static int max(int a,int b){
              int result = 0;
              if (a==b){
                  System.out.println("a=b");
                  return 0;//终止方法
              }
              if (a>b){
                  result = a;
              }else{
                  result = b;
              }
              return result;
          }
      

    命令行传参

    1. 代码:

      public class Demo03 {
          public static void main(String[] args) {
              /*
              命令行传参
               */
              for (int i = 0; i <args.length ; i++) {
                  System.out.println("args["+i+"]:"+args[i]);
              }
          }
      }
      

      在文件夹下 javac CommandLine.java

      返回src目录cd ../../../

      java com.wang.method.Demo03 this is wang

      命令行传参2

    可变参数

    1. jdk1.5后,java支持互残笛同类型可变参数给一个方法

    2. 方法声明中,在指定参数类型后加一个...

    3. 一个方法中至指定一个可变参数,它必须是方法的最后一个参数。

      public static void main(String[] args) {
          Demo04 demo04 = new Demo04();
          //        		        demo04.test(1,2,3,4,5,6,7,8);
          //调用可变参方式
          printMax(5,8,13,46,95,56,67,82,1);
          printMax(new double[]{1,2,3});
      }
      
      //可变参数
      public void test(int x,int ... i){
          System.out.println(x);
          System.out.println(i[0]);
          System.out.println(i[1]);
          System.out.println(i[2]);
          System.out.println(i[3]);
          System.out.println(i[4]);
      }
      
      public static void printMax(double ... numbers){
          if (numbers.length==0){
              System.out.println("No arguement passed");
              return;
          }
      
          double result = numbers[0];
      
          //排序
          for (int i = 1; i <numbers.length ; i++) {
              if (numbers[i]>result){
                  result = numbers[i];
              }
          }
          System.out.println("The max value is "+result);
      }
      

    递归(小计算使用)

    public static void main(String[] args) {
        System.out.println(fac(3));
    }
    
    	/*递归:
    	1.自己调用自己
    	2.用有限语句定义对象无限集合
    		结构:1.什么时间不调用自己 2. 什么时间调用自己
    		边界条件: 前阶段 --> 返回阶段
         */
    public static int fac(int n){
        if (n==1){
            return 1;
        }else{
            return n*fac(n-1);
        }
    }
    
  • 相关阅读:
    OCP 071中文考试题库(cuug整理)第25题
    OCP 071中文考试题库(cuug整理)第24题
    OCP 071中文考试题库(cuug整理)第23题
    OCP 071中文考试题库(cuug内部资料)第22题
    Oracle OCP 071【中文】考试题库-第21题
    Oracle OCP 071【中文】考试题库-第20题
    Oracle OCP 071【中文】考试题库-第18题
    Oracle OCP 071中文考试题库-第11题
    接口与实现
    solr学习0
  • 原文地址:https://www.cnblogs.com/bwxx/p/13170290.html
Copyright © 2011-2022 走看看