java方法,方法调用机制

article/2025/10/8 15:36:08
  1. 方法使用
    public class Target1{public static void main(String[] args) {//方法使用Person jia = new Person();jia.speak();//调用方法jia.cal01();jia.cal02(5);//给n一个5;jia.cal02(10);int returnRes = jia.getSum(1,2);System.out.println("getSum方法返回的值="+returnRes);}
    }
    class Person{int age;String name;//1.public 表示方法是公开的,//2.void:表示方法没有返回值。//3.speak():speak是方法名,()形参列表//4.{}:方法体,可以写我们要执行的代码public void speak(){System.out.println("我是一个好人");}public void cal01(){int sum=0;for(int i=1;i<=1000;i++){sum+=i;}System.out.println("cal01的计算结果:"+sum);}public void cal02(int n){//(int n)形参列表,表示当前有一个形参,可以接收用户输入int sum=0;for(int i=1;i<=n;i++){sum+=i;}System.out.println("cal02的计算结果:"+sum);}//1.int:表示方法执行后,返回一个int值public int getSum(int a,int b){int res = a+b;return res;//表示把res值返回。//System.out.println(a+"+"+b+"的和为"+(a+b));}}
    
  2. 方法调用机制
  3. 方法调用小结
    1. 当程序执行到方法时,就会开辟一个独立的空间(栈空间)。
    2. 当方法执行完毕,或者执行到return语句时,就会返回。
    3. 返回到调用方法的地方
    4. 返回后,继续执行方法后面的代码
    5. 当main方法(栈)执行完毕,整个程序退出。
  4. 成员方法的好处

    1. 提高代码的复用性

    2. 可以将实现的细节封装起来,然后供其他用户来调用即可。

  5. 返回数据类型

    1. public class Method02{public static void main(String[] args) {addAndsub num = new addAndsub();int res[] = num.getSumAndSub(2,3);System.out.println("和:"+res[0]);System.out.println("差:"+res[1]);}
      }class addAndsub{//1.一个方法最多有一个返回值//【思考,如何返回多个结果,返回数组】public int[] getSumAndSub(int n1,int n2){int arr[] = new int[2];arr[0] = n1+n2;arr[1] = n1-n2;return arr;}
      }

    2. 如果方法要求有返回数据类型,则方法体中最后的执行语句必须为return 值二且要求返回值类型必须和return的值类型一致或兼容

    3. 如果方法是void,则方法体中可以没有return语句,或者只写return;

    4. 方法名:getSum,驼峰命名法。

  6. 形参列表细节

    1. 一个方法可以有0个参数,也可以有多个参数,中间用逗号隔开。

    2. 参数类型可以为任意类型,包含基本类型或引用类型。

    3. 调用参数的方法时,一定对应着参数列表传入相同类型或兼容类型的参数。

    4. 方法定义时的参数称为形式参数,简称形参,方法调用时传入参数称为实际参数,简称实参。实参和形参的类型要一致或兼容,个数,顺序必须一致

    5. 方法体里面不能在定义方法。方法不能嵌套定义。

  7. 方法调用细节说明

    public class Method03{public static void main(String[] args) {A a = new A();//a.seeOk();//同一个类中的方法调用:直接调用即可。a.m1();}
    }class A{public void print(int n){System.out.println("执行print()方法。n="+n);}public void seeOk(){print(10);System.out.println("执行完print()方法又回到seeOk");}//跨类中的方法A类调用B类方法:需要通过对象名调用。public void m1(){System.out.println("m1()方法被调用");//创建B类对象,然后调用方法即可。B b = new B();b.inBi();//========================System.out.println("又回到了A类中的m1方法。");}}
    class B{public void inBi(){System.out.println("执行B类中的inBi方法。");}
    }
  8. 成员方法传参机制(重要)

    1. public class Method05{public static void main(String[] args) {int a = 1;int b = 2;change jia = new change();jia.swap(a,b);//基本数据类型传递的是值(值拷贝),形参的任何改变不影响实参。System.out.println(a+"\t"+b);//1       2}
      }
      class change{public void swap(int a,int b){System.out.println("交换前的a="+a+",b="+b);//交换前的a=1,b=2int temp = a;a = b;b = temp;System.out.println("交换后的a="+a+",b="+b);//交换后的a=2,b=1//这里只是修改的是swap栈里的a,b。//调用方法之后会开辟一块独立的空间。//mian和swap是两块独立的空间,} 
      }

    2.  基本数据类型传递的是值(值拷贝),形参的任何改变不影响实参。

  9. 引用数据类型的传参机制

    1. public class Method06{public static void main(String[] args) {B b = new B();int arr[] = {1,2,3,5};System.out.println(arr[0]);b.test100(arr);System.out.println(arr[0]);}
      }
      class B{public void test100(int arr[]){arr[0] = 200;System.out.println(arr[0]+"test100方法中");}
      }
      /*输出
      1
      200test100方法中
      200*/

      引用类型传递的是地址(传递也是值,但是值是地址),可以通过形参影响实参。

    2.  

    3. 类中的基本数据类型放在堆中,引用数据类型放在方法区

    4.  

       是把新开辟的test空间里的p的地址给赋null

  10. 练习,克隆

    public class Method08{public static void main(String[] args) {//克隆,得到的新对象和原来的对象是两个独立的对象,//只是他们的属性相同。abb hang = new abb();Person jing = new Person();jing.name = "张晶";jing.age = 23;jing.weight = 100.9;Person zhang = hang.copyPerson(jing);//jing和zhang是两个独立的对象,只是属性相同。System.out.println("zhang的属性 age="+zhang.age);System.out.println("jing的属性 age="+jing.age);}
    }class abb{public Person copyPerson(Person p){Person jia = new Person();jia.name = p.name;jia.age = p.age;jia.weight = p.weight;return jia;}
    }
    class Person{String name;int age;double weight;
    }

  11. 方法递归调用

    1. 递归调用机制

       

    2. 执行一个方法时,就创建一个新的受保护的独立空间(栈空间)

    3. 如果方法中使用的是引用类型变量(数组,对象),就会共享该引用类型的数据

    4. 方法的局部变量是独立的,不会相互影响,比如n变量。

    5. 递归必须向退出递归的条件逼近,否则就是无限递归。

    6. 当一个方法执行完毕,或者遇到return,就会返回,遵守谁调用,就将结果返回给谁,同时当方法执行完毕或者返回时,该方法也就执行完毕。

       

 


http://chatgpt.dhexx.cn/article/WYP8V3ZA.shtml

相关文章

Java如何获得调用当前方法的方法名

Thread.currentThread().getStackTrace()[1]是你当前方法执行堆栈 Thread.currentThread().getStackTrace()[2]就是上一级的方法堆栈 以此类推 StackTraceElement[] tempThread.currentThread().getStackTrace(); StackTraceElement a(StackTraceElement)temp[2]; this.logger…

Java方法编写与调用

一、什么是方法 阅读下列程序&#xff1a; 发现&#xff1a; &#xff08;1&#xff09;三段代码都是求x的y次方 &#xff08;2&#xff09;重复编写求x的y次方的代码&#xff0c;这样程序变得很臃肿&#xff0c;可读性也非常差。 为了解决代码重复编写的问题&#xff0c;可以…

Java 的方法调用、对象调用

一般的&#xff0c;在Java语言中&#xff0c;调用方法有三种方式。第一种&#xff1a;通过对象名.方法名进行调用&#xff0c;这是最普通的也是最常见的一种调用方式。第二种&#xff1a;通过new关键字调用构造方法&#xff0c;这种是在实例化对象时使用的方式。第三种&#xf…

Java中的方法定义与调用

1.方法&#xff1a; 将具有独立功能的代码块组织成为一个整体&#xff0c;使其成为具有特殊功能的代码集。 2.方法必须先创建才可以使用&#xff0c;该过程称为方法定义。 方法必须先定义后调用&#xff0c;否则程序会报错。 3.方法创建后并不是直接运行的&#xff0c;需要手动…

JAVA类之间方法的调用

JAVA类方法的调用 一、静态方法调用其他方法&#xff1a;1. 静态方法调用非静态方法2.静态方法调用静态方法 二、非静态方法调用其他方法1.非静态方法在同一类内调用其他方法2.非静态方法在不同类之间调用其他方法 注&#xff1a;调用方法——调用另一方法的方法 被调用方法——…

Java方法调用的过程是怎样的?

写在前面 本文隶属于专栏《100个问题搞定Java虚拟机》&#xff0c;该专栏为笔者原创&#xff0c;引用请注明来源&#xff0c;不足和错误之处请在评论区帮忙指出&#xff0c;谢谢&#xff01; 本专栏目录结构和文献引用请见100个问题搞定Java虚拟机 解答 方法&#xff08;Java…

在java中方法的三种调用方式

在java中方法的调用有三种方式&#xff1a; 先写主代码&#xff1a; public static int sum (int a,iny b){System.out.println("有结果显示");int result ab;return result; }1.单独调用&#xff1a;方法名&#xff08;参数&#xff09;&#xff1b; sum(10,15);2…

惠普z840工作站linux,全模块战神 惠普旗舰级Z840工作站评测

【IT168 评测】对于设计师来说,无论是动漫设计还是工程制图,一款运行流畅、性能强大、安静稳定的工作站都是必要的选择。作为工作站市场的领军者,惠普早在多年前就进军工作站领域,并凭借Z800这样的高端产品树立了全新的形象。近日,我们收到了来自惠普送测的全新一代Z840工…

NVIDIA GPU显卡介绍

一、参考资料 NVCC学习笔记 NVIDIA GPU 架构演进 Nvidia GPU架构 - Cuda Core&#xff0c;SM&#xff0c;SP等等傻傻分不清&#xff1f; 请问英伟达GPU的tensor core和cuda core是什么区别&#xff1f; CUDA 专栏 二、相关概念 2.1 dGPU dGPU&#xff08;discrete GPU&…

GPU结构设计初探

GPU结构设计 1. 框架设计 GPU 即 graphics process unit&#xff0c;图形处理单元&#xff0c;其主要功能在于图形渲染和合成&#xff0c;擅长于浮点运算和三角形生成填充处理&#xff1b; 本部分主要回答&#xff1a;GPU如何实现让自己擅长于图形渲染和合成操作&#xff1f…

大型三维GIS图形工作站

随着GIS应用的深入&#xff0c;人们越来越多地要求从真三维空间来处理问题。在应用要求较为强烈的部门如采矿、地质、石油等领域已率先发展专用的具有部分功能的三维GIS。所以大型三维GIS图形工作站应运而生。 UltraLAB H360/H370系列是一款配备intel第7代高频处理器&#xff0…

怎样配置更完美的图形工作站

现在网上太多计算机“专业人士”&#xff0c;推出各种图形工作站选购方案&#xff0c;似乎采购一台理想的图形工作站&#xff0c;是一件轻松简单事情。客户方面&#xff1a;资金充裕&#xff0c;买个高端的&#xff0c;资金比较紧&#xff0c;买个低端的&#xff0c;找个大品牌…

如何搭建自己的深度学习工作站?

硬件设备&#xff0c;是任何一名深度学习er不可或缺的核心装备。普通玩家都是标准设备,高端玩家都是自己动手搭建合适自己的GPU 工作站甚至GPU集群. 可是&#xff0c;各种主板、CPU、GPU、内存条、外设&#xff0c;那么多品牌种类型号参数&#xff0c;到底该怎么选&#xff1f;…

工作站 桌面 服务器,图形工作站也虚拟化,立即让你的工作站也可以远程访问

在虚拟化的今天&#xff0c;几乎所有的计算机资源都可以虚拟化&#xff0c;如CPU,内存&#xff0c;存储&#xff0c;网络&#xff0c;IO等等&#xff0c;但是我们很少听到图形卡的虚拟化&#xff0c;也就是我们今天提到的GPU虚拟化。 为什么需要GPU&#xff1f;相信不需要说太多…

GPU

一、GPU简介 1.GPU是什么&#xff1a; GPU是图形处理器&#xff08;Graphics Processing Unit&#xff09;&#xff0c;计算机显卡的处理器. 2.GPU产生背景&#xff1a; 在GPU出世之前&#xff0c;处理2D、3D图像都依赖于CPU&#xff0c;这样会使”日理万机“的CPU更加劳累不…

GPU服务器Ubuntu环境配置教程及各种踩坑

博主的GPU服务器快要过期了&#xff0c;为了让其发挥更多的光和热&#xff0c;博主打算将系统重装&#xff0c;来分别感受下不同系统下的GPU服务器。哈哈哈 博主为了快速运行项目&#xff0c;在购买服务器时选择的是Pytorch 1.9.1 Ubuntu 18.04 &#xff0c;该系统下会帮我们安…

图灵深度学习工作站介绍

Artificial Intelligence&#xff0c;也就是人工智能&#xff0c;就像长生不老和星际漫游一样&#xff0c;是人类最美好的梦想之一。虽然计算机技术已经取得了长足的进步&#xff0c;但是到目前为止&#xff0c;还没有一台电脑能产生“自我”的意识。是的&#xff0c;在人类和大…

GPU是什么?有多大的用处?

想必大家最近都听说了GPU的断供的事件&#xff0c;但很多人却不知道GPU是什么&#xff1f;有多大的用处&#xff1f;下面就一起来了解一下吧。 GPU简介&#xff1a; GPU是Graphics Processing Unit的简写&#xff0c;是现代显卡中非常重要的一个部分&#xff0c;其中文名为图…

ShareStation工作站虚拟化,实现工作站共享使用

今年以来&#xff0c;由于挖矿导致显卡涨价&#xff0c;不少玩家成了等等党。公司需要给新报到设计师配置图形工作站&#xff0c;采购成本也暴涨。就拿以前不到3000的RTX3060TI为例&#xff0c;现在市场价格要7000-8000。但是工作不能耽误&#xff0c;等不起啊。经过对比测试&a…

NVIDIA-GPU 驱动程序安装

下面以GeForce RTX 2080TI GPU为例&#xff0c;基于ubuntu18.04进行驱动程序的安装。 1. 下载驱动程序 驱动程序下载链接&#xff1a;官方驱动 | NVIDIA 根据GPU型号&#xff0c;在如下下拉列表中进行选择&#xff0c;然后点击搜索按钮&#xff1a; 2. 安装驱动程序 1&…