Java方法(函数)
4.1方法简介
方法是语句的集合,他们在一起执行一个功能:
1、方法是解决一类问题的步骤的有序组合(功能块)
2、方法包含于类与对象中
3、方法在程序中创建,在其它地方引用
4、原子性:单一职能原则(一个方法只完成一个功能,方便后期扩展)
方法定义:
1、方法包括一个方法头和一个方法体
2、修饰符:可选,告诉编译器如何调用该方法,定义了该方法的访问类型
3、返回值类型:方法会有返回值除了(void)方法没有返回值
4、方法名:方法的实际名称,在main函数中调用使用的名称;方法名包含参数列表(可为空)
5、参数类型:可选;方法调用需要传值给参数(实参)
形参(形式参数):接收外界输入的数据
实参(实际参数):实际传递给方法的数据
6、方法体:包含的具体功能语句;组成一个完整的功能
修饰符 返回值类型 方法名(参数类型 参数名){
。。。
方法体
。。。
return 返回值;
}
package com.hch.method;
public class Demo01_method {
//主方法main
public static void main(String[] args) {
System.out.println(add(1,5));
}
//加法方法
public static int add(int a , int b){
return a+b;
}
}
/*
-接收返回值类型:函数调用了表达式最终代表了所返回的结果
-返回值类型:定义时就约定了返回值的结果类型
-返回值:接在return关键字后面
PS:**注意:return在方法中除了返回值的意义还有终止方法的作用**
*/
方法调用:
调用方法: 对象名.方法名(实参列表)
Java支持两种调用方法的方式,根据方法是否返回值来选择
4.2方法的重载
重载就是在一个类中,有相同的函数名称,但是形参不同的函数
方法重载的规则:
1、方法名称必须相同
2、参数列表必须不同(参数个数、参数类型、参数排列顺序)
3、方法的返回类型可以相同也可以不同
4、仅仅返回类型不同不足以成为方法的重载
package com.hch.method;
public class Demo01_method {
//主方法main
public static void main(String[] args) {
System.out.println(add(1,5));
}
//加法方法
public static int add(int a , int b){
return a+b;
}
/**
* 方法重载
* 方法名称必须相同,参数列表必须不同
* */
//1、参数类型不同
public static double add(double a ,double b){
return a+b;
}
//2、参数个数
public static int add(int a,int b,int c){
return a+b+c;
}
//3、参数排列顺序
public static double add(double b,double a,double c){
return b-a-c;
}
}
this关键字:
类是一种模板可服务于此类的所有对象;
this是类中的默认引用,代替当前实例,当类服务于某个对象时,this则指向这个对象
用法:
1、调用实例属性、实例方法:this.name; this.sayHi();
2、调用本类中其它构造方法,如:this()、this(实参列表);
4.3可变参数
JDK1.5开始,Java支持传递同类型的可变参数给一个方法
在方法声明中,在指定参数类型后加一个省略号(...):用于接收变长的参数值。
一个方法中只能指定一个可变参数,它必须是方法的可变参数。
package com.hch.method;
public class Demo02_method {
public static void main(String[] args) {
Demo02_method d = new Demo02_method();
d.test(1,2,6);
}
// public void method(){}
// public void method(int a){}
// public void method(int a,int b){}
// public void method(int i,double b){}
public void test(int ...i){
System.out.println(i[0]);
System.out.println(i[1]);
System.out.println(i[2]);
}
}
4.4递归
递归就是:A方法调用A方法;即自己调用自己。
递归包括两个部分:
递归头:什么时候不调用自身方法(什么时候停止递归,否则造成死循环)
递归体:什么时候需要调用自身方法
package com.hch.method;
public class Demo03_method {
public static void main(String[] args) {
Demo03_method d = new Demo03_method();
System.out.println(d.f(3));
}
//阶乘的表示
public static int f(int i){
if (i==1){
return 1;
}else{
return i*f(i-1);
}
}
}
4.5返回值与返回值类型
定义语法:
public static 返回值类型(基本类型、引用类型、void) 函数名称(形参表){
//函数主体
return value; //返回值(按需求返回一个结果,一个函数只能有一个return语句)
}
调用语法:
变量 = 函数名称()
注意:
*接收返回值:函数调用的表达式最终即代表了所返回的结果。
*返回值类型:定义时,即约定了返回的结果类型
*返回值:与返回值类型匹配的具体结果,在return关键字后面追加具体的值
return关键字:
-应用在具体返回值类型的函数中;return value; //表示结束当前函数,并返回返回值到函数调用处
-应用在没有返回值类型(void)函数中;return; //表示结束当前函数,直接返回到函数调用处
Java方法(函数)的更多相关文章
- java 方法(函数)
所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块. 一般情况下,定义一个方法的语法是: 其中: 1. 访问修饰符:方法允许被访问的权限范围, 可以是 public.protected.p ...
- Atitit java方法引用(Method References) 与c#委托与脚本语言js的函数指针
Atitit java方法引用(Method References) 与c#委托与脚本语言js的函数指针 1.1. java方法引用(Method References) 与c#委托与脚本语言js ...
- Java虚拟机性能管理神器 - VisualVM(8) 查找JAVA应用程序耗时的方法函数【转】
Java虚拟机性能管理神器 - VisualVM(8) 查找JAVA应用程序耗时的方法函数[转] 标签: javajvm监控工具性能优化 2015-04-07 16:47 1846人阅读 评论(0) ...
- 蓝桥杯 算法提高 11-1实现strcmp函数 (JAVA方法)
蓝桥杯 算法提高 11-1实现strcmp函数 (JAVA方法) 首先这不是一个多难的题,但是网上的我没怎么找到有Java的代码,基本全都是c语言的,小编是个小白,如果有不对的地方请联系小编 问题描述 ...
- C++调用JAVA方法详解
C++调用JAVA方法详解 博客分类: 本文主要参考http://tech.ccidnet.com/art/1081/20050413/237901_1.html 上的文章. C++ ...
- JNI中C调用Java方法
背景需求 我们需要在JNI的C代码调用Java代码.实现原理:使用JNI提供的反射借口来反射得到Java方法,进行调用. JNI关键方法讲解. 1. 在同一个类中,调用其他方法 JNIEXPORT v ...
- HAL中通过JNI调用java方法【转】
转载请注明本文出处:http://www.cnblogs.com/xl19862005 作者:Xandy 由于工作的需要,最近一直在研究HAL.JNI.Java方法之间互调的问题,并做了如下一些记录和 ...
- hive 调用java的函数和科学记数法转换
hive中field如果是string,比如id,那么使用10000000000+id结果是科学计数法显示,转换为正常显示方法: select (10000000000+cast(id as int) ...
- [Java]_函数传参的疑惑与思考
问题来源于leetcode上的两道题 Path Sum I && II,分别写了两个dfs. void dfs(TreeNode node , int sum , ArrayList& ...
- Java 回调函数
下面使用java回调函数来实现一个测试函数运行时间的工具类: 如果我们要测试一个类的方法的执行时间,通常我们会这样做: public class TestObject { /** * 一个用来被测试的 ...
随机推荐
- webpack的入门实践,看这篇就够了
webpack的入门实践 我会将所有的读者概括为初学者,即使你可能有基础,学习本节之前我希望你具有一定的JavaScript和node基础 文中的 ... ...代表省略掉部分代码,和上面的代码相同 ...
- CentOS 7 内核更新后删除旧内核(转载)
CentOS 7 内核更新后删除旧内核 0.当前 # uname -sr Linux 3.10.0-123.20.1.el7.x86_64 1.搜索查询 # rpm -q kernel kernel- ...
- html中map area 热区自适应的原生js实现方案
在做自适应网页的时候,如果在图片中使用了热区map.图片可以通过样式实现:图片大小随页面变化,但是MAP中每个area的坐标并不能通过css直接实现自适应.这篇文章就介绍通过原生js来实现:MAP中每 ...
- CountDownLatch 线程工具类
CountDownLatch:概念是,允许一个或多个线程等待其他线程完成操作: 在线程基础知识中,学习过线程的join方法,当前线程阻塞等待join线程执行完毕才能执行: 测试代码如下: public ...
- BUUCTF-Misc-No.4
比赛信息 比赛地址:Buuctf靶场 内心os(蛮重要的) 我只想出手把手教程,希望大家能学会然后自己也成为ctf大佬,再来带带我QWQ 被偷走的文件 | SOLVED | foremost分离一下文 ...
- pythonl操作数据库
目录 今日内容详细 Navicat软件 提示 练习题 pymysql模块 sql注入 navicat可视化界面操作数据库 数据库查询题目讲解(多表操作) python如何操作MySQL(pymysql ...
- 【题解】p2388阶乘之乘
原题传送门 题解一堆\(O(n)\)算法真给我看傻了. 考虑\(10=2*5\),因子2肯定更多,所以计算因子5的个数即可. 从5到n这\(n-5+1\)个数的阶乘里面,都各自含有一个因子\(5=1* ...
- 在Linux下安装zotero
背景 系统:deepin15 zotero5.0 本来deepin的商店里是有zotero的,但貌似商店里的太老了,安装完打开之后什么功能都不能用,点击按钮没有反应.无奈之下,只能手动安装了 网上的教 ...
- day60 django入门
目录 一.静态文件配置 1 引子 2 如何配置 1 在settins.py中的具体配置 2 静态文件的动态解析(html页面中) 二.request对象方法初识 三.pycharm链接数据库(mysq ...
- pigctf期末测评
pigctf期末测评 MISC 1 拿到图片,先binwalk一下,如下图 果然发现png图片后面跟了个ZIP,然后提取出来打开发现了一个flag.png,然后查看16进制文件没有发现什么问题,之后查 ...