当前位置: 首页 > news >正文

【Java】解析方法的调用关系

目录

    • 一、方法的定义
    • 二、方法的声明格式
    • 三、方法的调用
    • 四、特殊方法:程序入口main方法
    • 五、方法的局部变量
    • 六、类的静态变量
    • 七、类的静态方法
    • 八、方法的传参
    • 九、方法的重载

在这里插入图片描述
在这里插入图片描述

一、方法的定义

方法就是 将功能重复的代码封装成一段独立的代码,通过调用方法的方式 (作用)提高代码的复用性(减少代码重复)。

每一个方法只能完成一个功能。

二、方法的声明格式

[修饰符1,修饰符2] 返回值类型 方法名 (参数类型 形式参数1,参数类型 形式参数2,…){

执行语句块;
return 返回值;

}

例:

boolean isLeapYear (int year){  //定义方法boolean isLeap = false;if(year%4==0 && year%100 != 0 || year%400 != 0){isLeap = true;}return isLeap;
}
public class MethodDemo01 {//提取一个方法,计算两个数的和并返回public static int addNum(int a,int b){int sum = a +b;return sum;}//提取一个方法,计算三个数的和并打印public static void addNum2(int a,int b,int c){int sum = a +b +c;System.out.println(sum);}public static void main(String[] args) {//调用方法1,计算1+2的和int sum1 = addNum(1,2);System.out.println(sum1);//调用方法1,计算3+4的和System.out.println(addNum(3,4));//调用方法,计算5+6+7的和并打印addNum2(5,6,7);}
}

返回值类型:方法输出数据的类型(如果方法没有返回值,则用关键字void来表示)
方法名:类似变量名,可以自定义方法名(需符合Java标识符规则)
形式参数:变量(用于存储调用方法输入的数据)
实际参数:调用方法输入的数据。
返回值:调用方法返回的数据。

三、方法的调用

int year= 2020;
boolean leapYear =isLeapYear(year); //调用方法
if(leapYear){System.out.println(year +"是闰年!")
}
year = 2052;
leapYear =isLeapYear(year);//调用方法
if(leapYear){System.out.println(year +"是闰年!")
}

四、特殊方法:程序入口main方法

main方法是一个特殊方法,它是Java程序的入口方法,执行Java程序时,JVM会调用main方法。

public static void main (String[]args){}

五、方法的局部变量

局部变量是指在方法中声明的变量,其作用范围仅限于方法中

局部变量使用前必须进行初始化。(定义在main方法中的变量也是局部变量)

boolean isLeapYear (int year){boolean isLeap = false;//声明了一个局部变量并进行初始化if(year%4==0 && year%100 != 0 || year%400 != 0){isLeap = true;}return isLeap;
}
public classA{public static void main (String[]args){int i =6; //整数(实参,局部变量)int [] array = {1,2,3}; //数组(实参,局部变量,传数组的地址)test(i,array);System.out.println(i+""+array[0]);}public static void test(int i,int []array){  //形参i += 3;array[0] += 3;}
}
//输出结果:6 4

六、类的静态变量

静态变量(也称为类变量)是使用static关键字声明的变量,这些变量属于类本身,而不是类的任何特定实例(静态变量在使用前无需初始化。)

public class HellWorld{public static boolean isLeap;//全局变量(默认自动化)public static void method01(){ //isLeap = true;//共享全局变量}public static void method02(){isLeap = true;//共享全局变量}
}

七、类的静态方法

静态方法是使用static关键字定义的方法,静态方法可以访问类的静态变量和静态方法,但不能访问类的实例方法和实例变量。

八、方法的传参

  1. 实参和形参
    实参:调用方法输入的变量或常量值

形参:方法中定义的数据类型变量。

  1. 值传递
    实参将数据传递给形参时,形参的改变改变不影响原实参的值,即值传递只会改变形参,不会改变实参。(基本数据类型)

  2. 引用传递
    引用传递:是指在调用函数时,将实际参数的地址传递给函数,这样在函数中对参数的修改,将影响到实际参数。(引用数据类型)

引用数据传递的不是真正的数据地址,是引用的堆内存中的地址,无论引用传递的数据怎么改变,它也只是引用的堆内存中的地址,原数据组的数据地址并没有被改变,改变那部分的值只是形参复制给实参使用的的地址,并不是把原地址改变。

  1. 总结
    在Java中,参数传参本质上只存在值传递。

值传递时,形参改变并不会影响到实参。

在函数中,只有修改了实参所指向的对象内容,也就是引用堆内存中的地址,才会影响到实参

public classA{public static void main (String[]args){int i =6; //整数(实参,局部变量)int [] array = {1,2,3}; //数组(实参,局部变量,传数组的地址)test(i,array);System.out.println(i+""+array[0]);}public static void test(int i,int []array){//形参i += 3;array[0] += 3;}
}
//输出结果:6 4

九、方法的重载

方法的重载指的是在同一个类中,有一个以上的同名方法,但方法的参数个数或参数类型有所不同(与方法的返回值无关)

方法重载是对于 一个类。

 public static int addNum(int a,int b){int sum = a +b;return sum;}//提取一个方法,计算三个数的和并打印public static int addNum2(int a,int b,int c){int sum = a +b +c;return sum;}

例如,以下都属于方法的重载

  • void show (int a,char b,double c);

  • void show (int a,double b,char c);

  • void show (int a,int b);

  • void show (int a);

  • double show(int a,char b,double c);

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Linux Shell编程--数组
  • Linux服务管理(五)Apache服务优化
  • 贷齐乐hpp+php特性注入
  • Gerrit 使用教程
  • C++ | stack/queue
  • 【安卓】Service的基本用法
  • 排序算法【希尔排序】
  • python识别车辆标志
  • 前端开发攻略---图片裁剪上传的原理
  • Hackademic.RTB1靶场实战【超详细】
  • S71200 - 编程 - 笔记
  • ZooKeeper 集群的详细部署
  • eNSP 华为三层交换机实现VLAN间通信
  • 【课程总结】day23:大模型训练策略(BERT模型与GLM模型)
  • 【若依 - 前后端不分离版】SysCaptchaController 详解:生成与处理验证码
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • Brief introduction of how to 'Call, Apply and Bind'
  • echarts的各种常用效果展示
  • eclipse(luna)创建web工程
  • HTTP 简介
  • iOS小技巧之UIImagePickerController实现头像选择
  • js中forEach回调同异步问题
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • Puppeteer:浏览器控制器
  • React的组件模式
  • vue-cli3搭建项目
  • vue学习系列(二)vue-cli
  • 工作手记之html2canvas使用概述
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 面试总结JavaScript篇
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  •  一套莫尔斯电报听写、翻译系统
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • HanLP分词命名实体提取详解
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • # 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • (2)Java 简介
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (十二)Flink Table API
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • @Autowired多个相同类型bean装配问题
  • @拔赤:Web前端开发十日谈
  • [ MSF使用实例 ] 利用永恒之蓝(MS17-010)漏洞导致windows靶机蓝屏并获取靶机权限
  • [ 蓝桥杯Web真题 ]-Markdown 文档解析
  • [《百万宝贝》观后]To be or not to be?