zoukankan      html  css  js  c++  java
  • Java学习笔记4(方法)

    方法和c++中的函数类似,区别在于java的方法定义不限位置,而c++中的定义在主函数后面的函数调用前要声明:

    求矩形面积方法示例:

    public class MethodDemo{
        public static void main(String[] args){
            int area = getArea(5,6);
            System.out.println("面积是:"+area);
        }
        public static int getArea(int w, int h){
            return w * h;
        }
    }

    输出:面积是:30

    调用过程分析:

    1.从main进入,开始执行程序

    2.调用getArea方法,传递参数,得到返回值

    3.输出

    调用过程内存分析:

    1.程序运行时期,必须进入内存,运行文件:编译后的class文件进入内存

    2.class文件进入方法区

    3.main方法进栈运行

    4.getArea方法进栈运行

    5.计算结果返回给调用者

    6.getArea方法运行结束,出栈,释放内存资源

    7.main输出后,出栈,释放内存资源,程序结束

    注意事项:

    1.方法不能定义在另一个方法内

    2.方法名严格区分大小写

    3.参数不能少传或多传,类型一致

    4.return代表结束,不可以在return下面继续写,返回类型一致

    方法重载:

     具体的重载的概念就不介绍了,这里实现一个最简单的重载

    public class MethodDemo{
        public static void main(String[] args){
            int sum = getSum(2,3,1);
            System.out.println(sum);
        }
        public static int getSum(int a, int b){
            System.out.println("int+int");
            return a+b;
        }
        public static int getSum(int a, int b, int c){
            System.out.println("int+int+int");
            return a+b+c;
        }
        public static double getSum(double a, double b){
            System.out.println("double+double");
            return a+b;
        }
    }

    再来一个难点:

    public class MethodDemo{
        public static void main(String[] args){
            int[] arr = {1,2,3,4};
            System.out.println(arr[2]);//3
            change(arr);
            System.out.println(arr[2]);//100
        }
        public static void change(int[] arr){
            arr[2] = 100;
        }
    }

    解释:

    1.main方法进栈运行

    2.在堆中开空间放入数组ARR并赋值

    3.数组首地址传给栈中的ARR,即ARR指向存有这个数组的内存空间

    4.调用change传递的参数方法实际上是内存地址,change中的ARR变量的地址和main中的ARR地址相同

    5.在change方法运行结束后释放内存,但是通过地址改变的arr[2]彻底变了

    通俗地理解:多个人合租房子,都拿到房屋地地址,某个人进入房子装修,以后进入的人看见的都是装修后的房子

  • 相关阅读:
    日志记录的作用和方法 java
    log4j自动加载原理
    java反射中的动态代理机制(有实例)
    万能的ctrl+shift+F(Element 'beans' cannot have character [children], because the type's content type is element-only.错误)
    Spring的@ModelAttribute注解
    Spring MVC 的@RequestParam注解和request.getParameter("XXX")
    SpringMVC 示例实战教程
    ecshop教程:重置后台密码MD5+salt
    github常见操作和常见错误!错误提示:fatal: remote origin already exists.
    ECShop函数列表大全
  • 原文地址:https://www.cnblogs.com/xuyiqing/p/8206698.html
Copyright © 2011-2022 走看看