形式参数和返回值类型的对比

news/2024/11/19 10:22:14/文章来源:https://www.cnblogs.com/zhuzhuya/p/18347955

方法的形式参数

  1. 形式参数是基本数据类型

  2. 形式参数是引用类型
    (1)形式参数是基本数据类型
    基本数据类型作为方法的形参,形式参数的改变不影响实际参数
	public static void main(String[] args) {int a = 10;int b = 20;System.out.println(a);System.out.println(b);change(a, b);System.out.println(a);System.out.println(b);}public static void change(int a,int b){a = b+10 ;b = a-b;System.out.println("a:"+a+",b:"+b);}
在调用change()方法时,分别给变量“a”和“b”做了赋值的转换。作为局部变量,它的生命周期随着方法的调用而存在,随着方法的调用完毕而消失。在内存中的体现,就是在栈内存中调用完毕后,里面局部变量就立即被GC垃圾回收器回收。所以,此时变量“a”和“b”的值不会发生改变。运行结果如下:

(2)形式参数是引用类型

引用类型:类:当你看到一个类作为方法参数类型的时候,将来调用时需要传递该类及其该类的子类对象class Demo1 {public void fun1() {System.out.println("好好学习,天天向上!");}
}
class Demo1Zi extends Demo1{}
class Demo1Test {public void show(Demo1 demo1) { //Demo1 demo1 = new Demo1Zi()demo1.fun1();}
}
public class StudentDemo1 {public static void main(String[] args) {Demo1Test demo1Test = new Demo1Test();demo1Test.show(new Demo1());demo1Test.show(new Demo1Zi());}
}抽象类:当你看到一个抽象类作为方法的参数类型的时候,将来调用时需要传递继承该抽象类的具体子类对象abstract class Demo2{public abstract void fun1();
}class Demo2Zi extends Demo2{@Overridepublic void fun1() {System.out.println("我真棒!");}
}class Student2{public void show(Demo2 demo2){ //Demo2 demo2 = new Demo2Zi()demo2.fun1();}
}public class StudentDemo2 {public static void main(String[] args) {Student2 student2 = new Student2();student2.show(new Demo2Zi());}
}接口:当你看到一个接口作为方法参数类型的时候,将来调用时需要传递实现该接口的具体子类对象interface Inter1{public abstract void fun1();
}class Inter1Impl implements Inter1{@Overridepublic void fun1() {System.out.println("Hello World!");}
}class Student3{public void show(Inter1 inter1){ //Inter1 inter1 = new Inter1Impl() 接口多态inter1.fun1();}
}public class StudentDemo3 {public static void main(String[] args) {Student3 student3 = new Student3();student3.show(new Inter1Impl());}
}

返回值类型

1、返回值类型是基本数据类型

(1)包括 byte, short, int, long, float, double, char, boolean 等原始数据类型,方法返回的是这些基本类型的具体数值。

(2)无返回值类型:

使用 void 关键字表示,这类方法不返回任何值,主要用于执行某种操作,如打印信息、修改对象状态等

若一个方法没有返回值,return可以省略不写

2、返回值类型是引用数据类型

类:当你看到一个类作为方法的返回值类型的时候,将来方法内部应该返回该类或该类的子类对象
package com.shujia.day10.ketang.bao2;
class Student1{public void fun1(){System.out.println("欢迎大家来到数加学院!");}
}
class Demo1{public Student1 show(){return new Student1();}
}
public class StudentDemo1 {public static void main(String[] args) {Demo1 demo1 = new Demo1();Student1 s1 = demo1.show(); // Student1 s1 = new Student1()s1.fun1();}
}抽象类:当你看到一个抽象类作为方法的返回值类型的时候,将来方法内部应该返回继承该抽象类的具体子类对象
abstract class Demo2{public abstract void fun1();
}
class Demo2Zi extends Demo2 {@Overridepublic void fun1() {System.out.println("小祝是阿里巴巴的高级开发程序员");}
}class Student2 {public Demo2 show() {return new Demo2Zi();}}public class StudentDemo2 {public static void main(String[] args) {Student2 student2 = new Student2();Demo2 d1 = student2.show(); //Demo2 d1 = new Demo2Zi() 抽象多态d1.fun1();}}
接口:当你看到一个接口作为方法的返回值类型的时候,将来方法内部应该返回实现了该接口的具体子类对象
interface Inter1{public abstract void fun1();
}
class Inter1Impl implements Inter1{@Overridepublic void fun1() {System.out.println("昨天南京下冰雹了");}
}
class Student3{public Inter1 show(){return new Inter1Impl();}
}
public class StudentDemo3 {public static void main(String[] args) {Student3 student3 = new Student3();Inter1 i1 = student3.show(); //Inter1 i1 = new Inter1Impl() 接口多态i1.fun1();
//         new Student3()
//                .show()
//                .fun1(); // 调用方式:链式调用}
}

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

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

相关文章

莽撞闯荡的6周年,也就是弹指一挥间

6年也就是弹指一挥间,时间过得飞快。6年前的明天,也就是2018年的8月8日,我离开了服务12年的腾讯开始探索自己的梦想-参见《回顾4180天在腾讯使用C#的历程,开启新的征途》。到今天,已经整整走过了6年,这6年还是围绕着C# 开展业务和活动。在这个6周年的特殊日子,总感觉要说…

七牛云私有空间图片上传、下载

导航引言 总体思路 七牛云相关的配置文件 获取七牛云上传token相关类定义 核心代码实现获取七牛云图片下载链接公开空间 私有空间 核心代码实现结语 参考引言我们在成长,代码也要成长。多媒体图片在各种网站、小程序和app中应用广泛,同时也大大增强了用户体验。 随着云服务的…

2024.08.07 记录一下面试。

这次面试面试官就说我们想要基础好的,所以就问了一堆基础问题。这里的知识点图片都是来自JavaGuide,如果不是图片我会贴一下链接,但是很有可能我都不会解答。Java 面试指南 | JavaGuide按我能想到的写。1.手动获得spring配置文件application.yml文件。答:最普遍的方法就是V…

sql注入一些学习笔记

以下内容主要是作为自己学习笔记记录使用,可能会有错误,欢迎指正,所有内容仅供参考,部分名词内容解释来自其他博主或chatgpt,如有侵权,联系删除 一些基础的表 information_schema.schemataschemata_name其实就是databasesCatalog_name 每个Catalog包含多个Schema,每个Sc…

Ubuntu Linux 搭建邮件服务器(postfix + dovecot)

准备工作 1. 一台公网服务器(需要不被服务商限制发件收件的,也就是端口25、110、143、465、587、993、995不被限制),如有防火墙或安全组需要把这些端口开放 2. 一个域名,最好是com cn org的一级域名 3. 域名备案(如果服务器是国外的则不需要备案) 一、配置域名解析 1. 登…

洛谷P1064 金明的预算方案——题解

洛谷P1064题解传送锚点摸鱼环节 [NOIP2006 提高组] 金明的预算方案 题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过 \(n\) 元钱…

从0到1:穿透 SpringCloud 工业级 底座工程的架构和实操,让自己实力猛增

文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 :《尼恩Java面试宝典》 持续更新+ 史上最全 + 面试必备 2000页+ 面试必备 + 大厂必备 +涨薪必备 免费赠送 :《尼恩技术圣经+高并发系列PDF》 ,帮你 实现技术自由,…

最小二乘法原理推导+代码实现[Python]

0.前言本文主要介绍了最小二乘法公式推导,并且使用Python语言实现线性拟合。 读者需要具备高等数学、线性代数、Python编程知识。 请读者按照文章顺序阅读。 绘图软件为:geogebra5。1.原理推导 1.1应用 最小二乘法在购房中的应用通常涉及房价预测和房屋定价方面。这种统计方法…

SpringBoot项目中HTTP请求体只能读一次?试试这方案

问题描述 在基于Spring开发Java项目时,可能需要重复读取HTTP请求体中的数据,例如使用拦截器打印入参信息等,但当我们重复调用getInputStream()或者getReader()时,通常会遇到类似以下的错误信息:大体的意思是当前request的getInputStream()已经被调用过了。那为什么会出现这…

类与类之间的基本关系

类与类之间的基本关系 类与类之间的六种关系 一、继承关系继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。在Java中继承关系通过关键字extends明确标识,在设计时一般没有争议性。在UML类图设计中,继承用…

js 将十进制字符串转换成4字节的字节数组

函数function convertToHexArrays(input) {// 通过制表符分割输入字符串const numbers = input.split(\t);// 用于存储结果的数组const result = [];for (let num of numbers) {// 将字符串转换为数字const value = parseInt(num);// 创建一个 4 字节的 ArrayBufferconst buffe…

超异构计算杂谈

超异构计算杂谈 在这一节中要从更远的视角来看看计算机架构发展的黄金 10 年,主要将围绕异构计算和超异构来展开。在开始具体内容前,非常推荐观看以下两个视频:计算机架构的新黄金时代:A New Golden Age for Computer Architecture 编译器的黄金时代:The Golden Age of Co…