首页 > 其他分享 >形式参数和返回值类型的对比

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

时间:2024-08-07 22:05:20浏览次数:8  
标签:对比 fun1 show void public new 返回值 class 形式参数

方法的形式参数

  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{
    @Override
    public 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{
    @Override
    public 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 {
    @Override
    public 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{
    @Override
    public 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(); // 调用方式:链式调用
    }
}

标签:对比,fun1,show,void,public,new,返回值,class,形式参数
From: https://www.cnblogs.com/zhuzhuya/p/18347955

相关文章

  • 【MATLAB源码-第174期】基于matlab的OFDM电力线系统仿真:梳状导频+LS/MMSE/SVD信道估计
    操作环境:MATLAB2022a1、算法描述OFDM电力线通信系统(PLC)是一种通过电力线传输数据的通信技术,利用了OFDM(OrthogonalFrequencyDivisionMultiplexing,正交频分复用)技术的优势来提高数据传输的速率和质量。电力线作为一种传输介质,其特点包括信道条件的不稳定性、高衰减率以及......
  • 程序设计部分 指针(三) 第2关:指针作为函数返回值
    任务描述本关任务:读取数据建立数组。相关知识指针作为函数返回值指针能作为函数参数,自然也能作为函数的返回值。不过需要注意的是,返回的指针不应该指向函数的局部变量,因为局部变量只在函数这一次被调用期间有效,如果返回了指向局部变量的指针,又在之后的程序中访问了这个指针......
  • 类,抽象类,接口作为方法的返回值类型 day10
    /*返回值类型基本类型:引用类型:类:当你看到一个类作为方法的返回值类型的时候,将来方法内部应该返回该类或该类的子类对象抽象类:当你看到一个抽象类作为方法的返回值类型的时候,将来方法内部应该返回继承该抽象类的具体子类对象......
  • 面试考点分析( ArrayList和LinkedList对比)
    1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。2.两者都是线程不安全,都实现了Collection接口。3.数据结构:ArrayList是基于动态数组的数据结构,LinkedList是基于双向链表的数据结构。性能:ArrayList支持随机访问,查询快,增删慢,查询的时间复杂度为O(1),插......
  • Git 对比 SVN 的区别和优势
    引言版本控制系统(VCS)是软件开发过程中不可或缺的一部分,它们用于管理代码的变更、协调开发团队的工作。Git和SVN(ApacheSubversion)是目前最流行的两个版本控制系统。本文将详细分析Git和SVN的区别及各自的优势,帮助开发者选择最适合自己项目的版本控制系统。一、Git和S......
  • 科大讯飞智能办公本x3和x3pro区别对比
    科大讯飞x3和x3pro在多个方面存在差异,如屏幕尺寸、内存配置、分辨率以及摄像头规格。那么,在选购时,哪款AI学习机更适合你呢?如果你偏好更大的屏幕,科大讯飞x3可能更适合你;而如果你更注重内存和性能,科大讯飞x3pro则是不二之选。在屏幕尺寸上科大讯飞x3拥有11英寸的显示面板,而x3pro则采......
  • 大疆 DJI Osmo Action 3和Osmo Action4的区别对比
    设计方面大疆Action4相较于Action3更加紧凑和轻便。这使得Action4在携带和固定时更加方便,尤其适合户外活动和极限运动爱好者。同时,Action4的外观设计也更加现代化,更符合当下消费者的审美需求。功能方面Action4相较于Action3有了显著的提升。首先,Action4的传感器和图像处......
  • codemirror diff-match-match 不同设备、不同设备状态下的对比结果不稳定
    今天遇到一个问题,在使用codemirror对两条文本内容进行对比时,有同事反馈在它的电脑上会显示成:前面一半是正常显示差异内容,而后面就变成了全部是新增的。像这样:预期的对比结果是这样:我们观察用于对比的两个文本,实际上上面的文本都是去掉后面括号中的内容,对比结果不应该表现成全......
  • 科大讯飞学习机s30和p30区别对比
    科大讯飞AI学习机S30科大讯飞AI学习机S30,以其卓越的性能和全面覆盖小学到高中的学习内容,成为学生和家长们的首选学习工具。这款学习机拥有8GB+256GB的大容量存储,满足学生日益增长的学习需求。12英寸的护眼屏幕,采用先进技术减少蓝光对眼睛的伤害,有效保护学生的视力健康。作为一款......
  • 科大讯飞学习机P30和C10 Pro 区别对比评测
    科大讯飞AI学习机C10Pro是一款专为学生设计的学习平板电脑。其10.1英寸护眼平板电脑画面清晰明亮,护眼效果好,适合长时间学习使用。拥有4GB内存和256GB存储空间,运行稳定,存储空间大,能够满足各种学习和娱乐需求。内置英语学习功能和家教机功能,帮助学生和家长轻松提高英语水平和家庭教......