【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);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/419651.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【网络】UDP协议的简单使用

目录 服务器 客户端 测试 code for Udp_echo_serve Udp_dict_serve UDP是基于socket(基于IP和port进行通信就叫做socket通信)进行网络通信的,那我们这篇博客就来介绍一下基于UDP通信的基本流程,先让服务端和客户端进行简单的…

深入探索Unity协程:揭开CSharp迭代器背后的神秘面纱

协程是一种特殊类型的迭代器方法,允许你在多个帧之间分段执行代码。可以用来处理时间延迟、异步操作和顺序执行的任务,而不阻塞主线程。Unity协程的实现依赖于C#语言提供的迭代器相关的语言特性,所以想要弄清楚Unity协程的底层原理&#xff0…

单例的饿汉式,懒汉式的线程安全问题

1 单例的饿汉式 对象在类加载的时候就创建了,线程安全,速度块,但是浪费空间, public class Hungry {//唯一对象private static final Hungry HUNGRY new Hungry();byte byte1[]new byte[1024];byte byte2[]new byte[1024];byte…

Java的时间复杂度和空间复杂度和常见排序

目录 一丶时间复杂度 二丶空间复杂度 三丶Java常见排序 1. 冒泡排序(Bubble Sort) 2.插入排序(Insertion Sort) 3.希尔排序(Shell Sort) 4.选择排序(Selection Sort) 5.堆排序&am…

qmt量化交易策略小白学习笔记第61期【qmt编程之期权行情数据--get_market_data_ex函数】

qmt编程之获取期权数据 期权行情数据 qmt更加详细的教程方法,会持续慢慢梳理。 也可找寻博主的历史文章,搜索关键词查看解决方案 ! 获取期权行情数据 获取期权最新数据,首先需要进行数据订阅。完成合约订阅后,用g…

【OpenCV】灰度化处理

文章目录 1. 图像灰度化处理对比2. 代码示例3. 二值化处理 1. 图像灰度化处理对比 2. 代码示例 #include <opencv2/opencv.hpp> using namespace cv;int main() {Mat currentImage imread("path_to_image.jpg"); // 读取彩色图像Mat grayImage;// 将彩色图像…

Rust的常数、作用域与所有权

【图书介绍】《Rust编程与项目实战》-CSDN博客 《Rust编程与项目实战》(朱文伟&#xff0c;李建英)【摘要 书评 试读】- 京东图书 (jd.com) Rust到底值不值得学&#xff0c;之一 -CSDN博客 Rust到底值不值得学&#xff0c;之二-CSDN博客 Rust的数据类型-CSDN博客 3.7 常…

HTTP 二、进阶

四、安全 1、TLS是什么 &#xff08;1&#xff09;为什么要有HTTPS ​ 简单的回答是“因为 HTTP 不安全”。由于 HTTP 天生“明文”的特点&#xff0c;整个传输过程完全透明&#xff0c;任何人都能够在链路中截获、修改或者伪造请求 / 响应报文&#xff0c;数据不具有可…

阿里不认命

​ 转载&#xff1a;新熵 原创 作者丨萧维 编辑丨影蕨 国家定调了&#xff01;一系列积极信号为平台经济注入一剂强心针&#xff0c;阿里迎来新生。 最近&#xff0c;阿里捷报频传&#xff01; 先是8月28日&#xff0c;阿里巴巴完成香港双重主要上市。紧接着&#xff0c;8月…

基于聚类与LSTM对比特币价格深度分析与预测

1.项目背景 比特币作为全球最具影响力的加密货币之一&#xff0c;其价格受到多种复杂因素的共同作用&#xff0c;包括市场情绪、政策变化、大型机构的投资行为等&#xff0c;这些因素在不同的市场阶段对比特币价格波动产生直接或间接的影响。通过对比特币市场的深入分析&#…

66城代表齐聚!蓝卓分享“全国经验”,批量复制推动中小企业数字化转型

9月6日下午&#xff0c;2024中小企业数字化转型现场交流活动在浙江宁波隆重举行。 全国66个中小企业试点城市500多名中小企业主管部门及专家学者&#xff0c;制造业企业、数字化转型服务商等重点企业代表齐聚宁波&#xff0c;共同探讨中小企业数字化转型的模式和路径。 工业和…

酒店智能轻触开关:智慧化的创新实践

在追求高品质住宿体验的今天&#xff0c;酒店智能轻触开关作为智慧酒店建设的关键一环&#xff0c;正逐步成为提升酒店服务品质、优化运营效率、增强顾客满意度的有力工具。本文将深入探讨酒店智能轻触开关如何助力酒店实现智慧化管理&#xff0c;以及它所带来的多重变革。 一、…

VSCode连接docker

1.启动ssh服务 vim /root/.bashrc 或者 vim ~/.bashrc /usr/sbin/sshd #启动ssh服务~代表主目录&#xff0c;cd ~会返回root目录 cd / 返回最根上的目录 为了防止每次打开容器都要输入此指令&#xff0c;我们直接在 ~/.bashrc文件最后一行添加sshd启动命令即可。 打开终端…

【JAVA开源】基于Vue和SpringBoot的图书个性化推荐系统

本文项目编号 T 015 &#xff0c;文末自助获取源码 \color{red}{T015&#xff0c;文末自助获取源码} T015&#xff0c;文末自助获取源码 目录 一、系统介绍1.1 业务分析1.2 用例设计1.3 时序设计 二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究…

掌握ChatGPT写论文六步提问法,会提问才能写出优质好论文

大家好,感谢关注。我是七哥,一个在高校里不务正业,折腾学术科研AI实操的学术人。关于使用ChatGPT等AI学术科研的相关问题都可以分享,相互成就,共同进步,为大家带来最酷最有效的智能AI学术科研写作攻略。 今天给大家分享的是借助GPT一年发两篇SCI的学术大拿总结的ChatGPT六…

IPS和IDS有啥区别?

吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247485367&idx1&sn837891059c360ad60db7e9ac980a3321&chksmc0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330&scene21#wechat_redirect 《网安面试指南》…

ChatGPT付费创作系统V3.0.6独立版 WEB+H5+小程序端 (新增AI全网搜索+文档解析+豆包AI通道)安装部署教程

播播资源GPT付费体验系统最新版系统是一款基于ThinkPHP框架开发的AI问答小程序&#xff0c;是基于国外很火的ChatGPT进行开发的Ai智能问答小程序。这是一种基于人工智能技术的问答系统&#xff0c;可以实现智能回答用户提出的问题。相比传统的问答系统&#xff0c;ChatGPT可以更…

认识Linux及Linux的环境搭建

目录 1、什么是Linux2、Linux环境搭建2.1 下载安装 Xshell2.2 下载安装 VMware Workstation Pro2.3 选择适合自己系统 1、什么是Linux Linux&#xff0c;一般指GNU/Linux&#xff08;单独的Linux内核并不可直接使用&#xff0c;一般搭配GNU套件&#xff0c;故得此称呼&#xff…

ARM基础知识---CPU---处理器

目录 一、ARM架构 1.1.RAM---随机存储器 1.2.ROM---只读存储器 1.3.flash---闪存存储器 1.4.时钟&#xff08;振晶&#xff09; 1.5.复位 二、CPU---ARM920T 2.1.R0~R12---通用寄存器 2.2.PC程序计数器 2.3.LR连接寄存器 2.4.SP栈指针寄存器 2.5.CPSR当前程序状态寄存…

java,php,go,nodejs,Python开发web项目优缺点对比

Java 优点:java 是一门广泛应用于企业级开发的语言,丰富且庞大的开发框架和库。有较高的性能和可伸缩性。生态系统庞大且成熟,拥有大量的开源框架和工具,可以加速开发过程。 内置对多线程的支持,适合处理高并发的 Web 项目。 缺点:相比其他语言,Java 的语法相对冗长繁琐…