`
赵雅智
  • 浏览: 97627 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

赵雅智_java.方法

 
阅读更多
  • 静态方法
  • 方法的参数传递
  • 形参长度可变的方法
  • 递归方法
  • 方法重载

方法是类或对象的行为特征的抽象,是类或对象最重的组成部分。

static

用static修饰的方法属于这个类,属于该类的所有对象所共有。
因此即使没有创建该类的具体对象,类中用static修饰的方法也会存在。

创建对象前初始化。
只能处理静态属性、调用静态方法
静态方法中不能:使用this引用、构造函数中调用、直接访问非静成员。

-- 类 の调用 类名 . 方法名 ( [ 实参表 ] ) ;
类是static方法的调用者 类方法

对象 -- 类 の调用:
对象名 . 静态方法名 ( [ 参数表 ] );.

对象 -- 对象の调用:

对象名 . 方法名 ( [ 实参表 ] );
对象是方法的调用者 普通方法

需注意:

方法不能独立定义,只能在类体里定义。 因此,类体内定义方法。
从逻辑意义上看,方法要么属于类,要么属于对象。因此,执行方法必须使用类或对象作为调用者
同一个类中的方法相互调用时,普通方法调用者:this ;静态方法调用者:

不同:

  1. 静态方法:类调用、任何对象调用,结果一致;
    普通方法:对象调用,不同对象调用结果不一致。
  2. 生命周期不同。

方法的参数传递

如果定义方法时包含了形参,则调用方法时必须传实参。

注意:Java里方法的参数传递方式为值传递---将实际参数值的副本(复制品)传入方法内,而实际参数值本身不会受到任何影响。
基本类型的变量 \ / 值
值传递
引用---------------- / \ 地址

方法参数的传递方式-----值传递

public class TestTransfer{
	public class void changeAB(int a,int b){
	int tmp = a;
	a = b;
	b = tmp;
	System.out.println("changeAB方法里,a的值是" + a +";b的值是"+b);

	public static void main(String[] args){
	int a = 10;
	int b = 5;
	changeAB(a,b);
	System.out.println("交换结束后,a的值是" + a +";b的值是"+b);

	}
}

changeAB方法里,a的值是5 ;b的值是10
交换结束后 ,a的值是10;b的值是5

调用方法changAB()时,形参a、b值的交换,并不影响main方法中的实参a、b的值。

引用类型的变量作方法参数

源文件:DataWrap.java

public class DataWrap{
	public int a;
	public int b;
}
源文件:TestTransfer.java

public class TestTransfer{
	public class void changeAB(DataWrap dw){
	int tmp = dw.a;
	dw.a = dw.b;
	dw.b = tmp;
	System.out.println("changeAB方法里,a的值是" + dw.a +";b的值是"+ dw.b);

	public static void main(String[] args){
	DataWrap dw = new DataWrap();
	dw.a = 10;
	dw.b = 5;
	changeAB(a,b);
	System.out.println("交换结束后,a的值是" + dw.a +";b的值是"+ dw.b);

	}
}

changeAB方法里,a的值是5;b的值是10
交换结束后 ,a的值是5;b的值是10 对象的地址

main方法创建对象DW对象,并定义一个对象指向DW。 调用c,系统开辟出2个栈区存放m和c局变,dw(实参)值传入c。m的dw值赋给c的dw,完成c的dw的初始化
创建对象时,系统有2个实体:堆:本身;栈:该对象的引用 m的dw是一个引用,保存的是地址,dw值赋给c形参后,c的dw形参也保留这地址值,引用到堆中的DW对象

引用操作DW对象,给ab赋值

形参长度可变的方法
从JDK1.5以后,Java允许定义形参长度可变的参数,从而允许为方法指定数量不确定的形参。
形参长度可变的方法定义:如果在定义方法时,在最后一个形参的类型后增加三点…,则表明该形参可以接受多个参数值,多个参数值被当成数组传入。
例4.9 形参长度可变的方法outClassInfo。
public static void outClassInfo(String cname,String…sname){
//在方法体内将参数sname当成是数组
}
在方法体内,将参数sname当成数组处理
for (String student : sname){
System.out.println(student);
}


形参长度可变的方法调用
outClassInfo(“08软件技术”,“李四”,“王五”,“赵六”);
注意:
以可变个数形参来定义方法 public static void outClassInfo(String cname , String... sname);
采用数组形参来定义方法 public static void outClassInfo(String cname , String[] snames)
这两个方法签名的效果虽然一样,但还是有区别的:
调用可变形参的方法,更加简洁;
调用数组形参来声明的方法,必须传给该形参一个数组,outClassInof(“09软件”,new String[]{“王五”,“李四”});
数组形式的形参可以处于形参列表的任意位置,但个数可变的形参只能位于形参列表的最后。
递归方法
如果一个方法定义中直接或间接调用它本身,就是方法的递归调用。
例4.10 编写程序,计算10的阶乘。
public static long calc(int n){
if(n==1){
return 1;
}else{
return n*calc(n-1);
}
}
递归体:递归的方式
递归方法一般由两部分组成:
递归出口:递归终止的条件

例4.11已知有一个数列:f(0)=1,f(1)=4,…,f(n+2)=2*f(n+1)+f(n),其中n是大于0的整数,求f(10)的值。
方法的重载
Java语言允许在一个类中定义几个同名的方法,但要求这些方法具有不同的参数特征,这种做法称为方法的重载(overloaded)。不同的参数特征包括:
参数个数:int GetSort(int x); int GetSort(int x,int y);
参数类型:int GetSort(int x); int GetSort(double x);
参数次序:int GetSort(int x,double y); int GetSort(double x,int y);
注意:返回值类型不是重载的依据。
重载方法的调用:当类中有多个重载的方法,调用该类的某个重载方法时,Java能够根据实参表的不同区分实际调用的是哪一个方法。
例4.12 方法的重载。
Overload ol=new Overload();
ol.test(); //调用无参数的test()
ol.test(“hello”); //调用带一个字符串参数的test()
例4.13 重载方法中有一个带可变长度的形参。
public void test(String msg);
public void test(String… books);
则,olv.test(); //调用test(String… books);
olv.test(“aa”,”bb”); //调用test(String… books);
olv.test(“aa”); //调用test(String msg);
如只传入一个参数,又需要调用参数长度可变的方法,则可采用如下调用形式:olv.test(new String[]{“aa”});

分享到:
评论

相关推荐

    node-v9.9.0-win-x86.zip

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v6.13.0-sunos-x64.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    毕业设计Python基于LSTM的多步向前手术风险预测项目源代码+数据+论文

    毕业设计Python基于LSTM的多步向前手术风险预测项目源代码+数据+论文

    node-v9.2.0-x86.msi

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    258ssm-mysql-jsp 陆丰市医院分诊管理系统.zip(可运行源码+数据库文件+文档)

    医院分诊管理管理系统是典型的信息管理系统,其主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起一致性、完整性强和安全性好的数据库。而对于后者则要求应用程序具有功能完备,易使用等特点。经过分析如此情况,决定使用Java语言进行开发,利用其提供的各种面向对象的开发工具,数据库方面使用当前比较流行的mysql。 本系统主要包括以下功能:系统设置功能、患者管理模块、分诊管理功能、诊断管理功能。1) 系统设置模块 系统设置包括权限管理和用户信息。此模块主要功能包括: ·添加、修改、删除和查看用户信息; ·给用户分配权限; 2) 患者管理功能 此模块的主要功能包括: ·包括添加、修改、删除和查看患者信息; 3) 科室管理模块 此模块主要功能包括: ·包括添加、修改、删除和查看信息; 4) 分诊管理模块 本模块用于对分诊信息进行统计和查询,主要包括: ·分诊排队; ·分诊叫号; 关键字 面向对象;数据库;java;医院分诊管理系统;mysql。

    心电图机监控软件 vc++ 心电图机数据采集 曲线显示诊断病历源码.zip

    心电图机监控软件 vc++ ,心电图机数据采集 , 曲线显示, 诊断 , 病历

    node-v9.10.0-x86.msi

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    儿童编程启蒙之Scratch编程详解

    Scratch是一款专为儿童设计的图形化编程语言,通过直观易懂的界面和丰富的功能模块,帮助孩子们理解编程的基本概念,激发创新思维,培养解决问题的能力。本文将全面介绍Scratch的特点、应用及教育意义,为广大家长和教育工作者提供有益的参考。 Scratch作为一款专为儿童设计的图形化编程语言,以其直观易懂的界面和丰富的功能模块,为儿童编程启蒙教育提供了有力的支持。它不仅能够帮助孩子们掌握基本的编程技能,还能够培养他们的逻辑思维能力、创新精神和团队合作能力。因此,广大家长和教育工作者应该充分利用Scratch这一工具,为孩子们创造一个充满乐趣和挑战的编程学习环境,让他们在快乐中成长,为未来的学习和发展打下坚实的基础。

    node-v9.11.0-x86.msi

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    波士顿.py

    波士顿.py

    Fortran学习规划与基本案例.pdf

    这份文档是一份详细的Fortran语言学习规划及基本案例说明,对于希望学习和掌握Fortran编程语言的用户来说,是一份极为宝贵的参考资料。 首先,文档明确了学习Fortran的背景与目标,有助于学习者明确自己的学习方向和目的,从而更有针对性地进行学习。同时,文档还详细规划了学习内容和时间安排,从基础知识学习到项目实践与综合应用,每个阶段的学习任务都清晰明了,为学习者提供了一个系统的学习框架。 其次,文档还介绍了Fortran语言的基本用法和案例,包括变量声明与赋值、数组、程序结构与流程控制等方面的知识,并通过实例练习来帮助学习者加深对知识点的理解和应用。这些案例不仅具有代表性,而且具有很强的实用性,可以帮助学习者更好地掌握Fortran编程技能。 此外,文档还提供了学习方法与资源的建议,为学习者提供了多样化的学习途径和参考资料。无论是官方文档、教材与参考书目,还是在线学习平台和科研团队的经验分享,都为学习者提供了丰富的学习资源,有助于学习者更全面地了解Fortran语言的特点和应用。

    answer.sql

    answer.sql

    Sora AI Video Preview Case Sora AI 视频模版项目,React全栈快速部署.zip

    Sora AI Video Preview Case Sora AI 视频模版项目,React全栈快速部署.zip

    最新试用版发货100虚拟商品自动发货系统 源码免费下载.rar

    最新试用版发货100虚拟商品自动发货系统 源码免费下载.rar最新试用版发货100虚拟商品自动发货系统 源码免费下载.rar

    ### Linux:信息、使用技巧和优缺点

    linux

    node-v8.16.0-x86.msi

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v12.22.9-linux-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    源代码-access 管理 系统 API 文件.zip

    源代码-access 管理 系统 API 文件.zip

    基于Qt的频谱分析器,修改于Spek,支持Windows和Linux平台.zip

    基于Qt的频谱分析器,修改于Spek,支持Windows和Linux平台

Global site tag (gtag.js) - Google Analytics