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]彻底变了

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

  • 相关阅读:
    一个int类型究竟占多少个字节
    TCMalloc 安装与使用
    [创意标题] spoj 11354 Amusing numbers
    如何更好地理解和使用Github
    一天JavaScript示例-点击图片显示大图片添加鼠标
    php方法综述除去换行符(PHP_EOL使用变量)
    使用jQuery和css3实现了仿淘宝ued博客左边的菜单切换动画
    【软件使用技巧】PL/SQL Developer实现双击table询
    newlisp 接受jenkins带空格的参数
    Oracle listener lsnrctl
  • 原文地址:https://www.cnblogs.com/xuyiqing/p/8206698.html
Copyright © 2011-2022 走看看