方法和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. 3.python元组与列表

    Python的元组与列表类似,同样可通过索引访问,支持异构,任意嵌套.不同之处在于元组的元素不能修改.元组使用小括号,列表使用方括号. 创建元组 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开 ...

  2. 一、OpenStack入门 之 初步认识

    OpenStack入门 之 初步认识 写在前面 从 OpenStack 基础知识開始学起,剖析 OpenStack 架构.分析 OpenStack 的各个组件的功能.原理和用法,通过实战演练来掌握 O ...

  3. Leetcode 高精度 Plus One

    本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie Plus One Total Accepted: 17614 Total Submissio ...

  4. 自学Zabbix3.1-语言切换

    题记:   默认使用的zabbix版本为Zabbix 3.0.8 登陆到zabbix web控制台默认是英文界面,对有些英文不好或者习惯中文的人来说会有不适应. 实际上是切换到中文版本,步骤:点击用户 ...

  5. Asynchronous MQTT client library for C (MQTT异步客户端C语言库-paho)

    原文:http://www.eclipse.org/paho/files/mqttdoc/MQTTAsync/html/index.html MQTT异步客户端C语言库   用于C的异步 MQTT 客 ...

  6. Visual Studio Code作为Angular开发工具常用插件安装、json-server安装与使用、angular/cli安装失败问题

    前提准备: 搭建好Angular开发环境 1 安装Visual Studio Code 教程简单,不会的去问度娘 2 安装Chrome浏览器 教程简单,不会的趣闻度娘 3 Visual Studio ...

  7. selenium.common.exceptions.WebDriverException: Message: 'phantomjs' executab

    该问题博主是在Mac环境遇到的,对应windows找对应解决方案解决即可. 问题原因: phantomjs环境配置有问题,要么是配置错误,要么是没有配置. 解决方案: 1.将下载解压好的phantom ...

  8. eoLinker 新功能发布,增加了识别代码注释自动生成文档功能

    产品地址:https://www.eolinker.com开源代码:https://www.eolinker.com/#/os/download在线生成代码注释工具:http://tool.eolin ...

  9. 【java提高】---ArrayList源码

    ArrayList源码 一.定义 public class ArrayList<E> extends AbstractList<E> implements List<E& ...

  10. 事务处理操作(COMMIT,ROLLBACK)。复制表。更新操作UPDATE实际工作中一般都会有WHERE子句,否则更新全表会影响系统性能引发死机。

    更新操作时两个会话(session)同时操作同一条记录时如果没有事务处理操作(COMMIT,ROLLBACK)则会导致死锁. 复制表:此方法Oracle特有