方法和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]);//
change(arr);
System.out.println(arr[2]);//
}
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学习笔记4(方法)的更多相关文章

  1. Java学习笔记之---方法和数组

    Java学习笔记之---方法与数组 (一)方法 (1)什么是方法? 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 (2)方法的优点 使程序变得更简短而 ...

  2. 0019 Java学习笔记-面向对象-方法

    方法属于谁 方法要么属于类,要么属于对象 static修饰的方法属于类 没有static修饰的方法属于对象 方法只能定义在类里面,不能独立定义 不能独立的执行方法,要么通过类调用,要么通过方法调用 一 ...

  3. Java学习笔记之方法重载,动态方法调度和抽象类

    一.方法重载 如果子类中的方法与它的超类中的方法有相同的方法名,则称子类中的方法重载超类中的方法,特别是当超类和子类中的方法名和参数类型都相同时,在子类中调用该方法时,超类中的方法会被隐藏.考虑下面程 ...

  4. 【原】Java学习笔记008 - 方法(函数)

    package cn.temptation; public class Sample01 { public static void main(String[] args) { // 方法/函数 Met ...

  5. Java学习笔记之方法重载

    被重载的方法必须具有不同的参数列表.不能基于不同修饰符或返回值类型来重载方法. package welcome; public class TestMethodOverloading { public ...

  6. Java学习笔记之——方法重载

    方法重载: overload 1. 方法签名 组成:方法名(参数列表) 参数列表不同分为哪些情况? (1)有无参数 (2)参数的类型 (3)参数的个数 (4)参数的顺序(前提是类型不一样) 2.方法重 ...

  7. java学习笔记5(方法)

    方法: 1.如何创建方法 修饰符   返回值类型  方法名(参数){被封装的代码段} 2.方法的定义和使用的注意事项: a:方法不能定义在另一个方法里面: b:方法 名字和方法的参数列表,定义和调用时 ...

  8. Java学习笔记day05_方法重载

    1.方法的重载overload 在同一个类中, 允许出现同名的方法, 只要方法的参数列表不同即可. 参数列表不同: 参数个数不同, 参数类型不同, 顺序不同. public class MethodO ...

  9. Java 学习笔记之 方法内的临时变量是线程安全

    方法内的临时变量是线程安全: 方法内部的私有变量,是线程安全的. public class HasSelfPrivateNum { public void addI(String username) ...

  10. Java学习笔记之方法

     前言:如果把所有代码都写到main方法中,后果是什么?    1,结构混乱 不清晰    2,不能重用 方法:规则:方法写在类中,不能写在其它方法中.方法不能嵌套方法 如何定义方法: 访问修饰符 返 ...

随机推荐

  1. PHP-学习之路1

    相信入职快有5个月了,目前项目做过HIS,zySystem,ComStoreSystem当然今天不是来介绍的,后期直到第四个月后APP护身宝经理拍板今后也就是明年正式交于我们团队接手与扩展,运维.虽然 ...

  2. MapReduce编程(一) Intellij Idea配置MapReduce编程环境

    介绍怎样在Intellij Idea中通过创建mavenproject配置MapReduce的编程环境. 一.软件环境 我使用的软件版本号例如以下: Intellij Idea 2017.1 Mave ...

  3. 游戏AI(三)—行为树优化之基于事件的行为树

    上一篇我们讲到了关于行为树的内存优化,这一篇我们将讲述行为树的另一种优化方法--基于事件的行为树. 问题 在之前的行为树中,我们每帧都要从根节点开始遍历行为树,而目的仅仅是为了得到最近激活的节点,既然 ...

  4. .NET Core容器化@Docker

    温馨提示:本文适合动手演练,效果更佳.  1. 引言 我们知道. NET Core最大的特性之一就是跨平台,而对于跨平台,似乎大家印象中就是可以在非Windows系统上部署运行.而至于如何操作,可能就 ...

  5. js清除cookie有时无法清除

    最近写页面遇到一个问题,退出的时候需要清除cookie,但是刚开始一直清除不掉,代码如下: //清除函数 function delCookie(name) { var date= new Date() ...

  6. 学习Spring必学的Java基础知识(1)----反射(转)

    引述要学习Spring框架的技术内幕,必须事先掌握一些基本的Java知识,正所谓"登高必自卑,涉远必自迩".以下几项Java知识和Spring框架息息相关,不可不学(我将通过一个系 ...

  7. Effective Java 第三版——7. 消除过期的对象引用

    Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...

  8. 《程序设计语言——实践之路》【PDF】下载

    程序设计语言--实践之路>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382240 内容简介 本书在美国大学已有使用了十余年,目前被欧 ...

  9. IOS学习2——Xcode快捷键大全

    转载自:图文解释XCode常用快捷键的使用 刚开始用Xcode是不是发现以前熟悉的开发环境的快捷键都不能用了?怎么快捷运行,停止,编辑等等.都不一样了.快速的掌握这些快捷键,能提供开发的效率. 其实快 ...

  10. laravel and lumen 软删除操作

    知识都是有联系的,这绝对是真理.作为一名小白,看了一点官方文档,把我自己理解的软删除操作给大家讲讲.有些就是套用官方文档的话. 定义:什么是软删除呢,所谓软删除指的是数据表记录并未真的从数据库删除,而 ...