方法和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. MyBatis多租户隔离插件开发

    在SASS的大潮流下,相信依然存在很多使用一个数据库为多个租户提供服务的场景,这个情况下一般是多个租户共用同一套表通过sql语句级别来隔离不同租户的资源,比如设置一个租户标识字段,每次查询的时候在后面 ...

  2. 使用CEF的JSON解析功能

    Cef提供了JSON解析功能,在cef_parser.h文件内有三个JSON相关的方法: CefParseJSON CefParseJSONAndReturnError CefWriteJSON 以最 ...

  3. C language 模拟 win的经典游戏——扫雷

    让我们在terminal下愉快的...扫雷 昨天跟奇葩霖聊起"雷区"这个敏感词汇,然后非常荣幸的... 应该轰炸不到我.. . 后来百无聊赖的去玩了把扫雷.然后发现我之前都是乱扫的 ...

  4. uva11059(最大乘积)

    Problem D - Maximum Product Time Limit: 1 second Given a sequence of integers S = {S1, S2, ..., Sn}, ...

  5. Linux禁用显示“缓冲调整”

    Linux禁用显示"缓冲调整" youhaidong@youhaidong-ThinkPad-Edge-E545:~$ free -o total used free shared ...

  6. kotlin web开发教程【一】从零搭建kotlin与spring boot开发环境

    IDEA中文输入法的智能提示框不会跟随光标的问题 我用的开发工具是IDEA 这个版本的IDEA有一个问题: 就是中文输入法的智能提示框不会跟随光标 解决这个问题的办法很简单,只有在安装目录下把JRE文 ...

  7. JAVA入门[2]-安装Maven

    一.资料 1.官网: https://maven.apache.org/ 二.下载Maven 下载地址:https://maven.apache.org/download.cgi# 三.Windows ...

  8. 自学Python3.1-函数基础

    一.函数概述 1. 简介 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率. 2. 组成 函数代码块以 def 关键词开头,后接函数名和圆括 ...

  9. java语言实现树

    首先用Node类定义一个节点,用来存储每个节点的内容: public class Node { // 关键字 private int keyData; // 其他数据 private int othe ...

  10. Spark术语

    1.resilient distributed dataset (RDD) The core programming abstraction in Spark, consisting of a fau ...