Java方法的定义
前言
经过前面两篇关于面向对象、类和对象的文章,壹哥相信你现在对面向对象已经有了基本的了解。我们知道,在一个类中,包括属性和行为两大核心要素。我们之前已经给大家讲解了如何定义属性,但很多同学对方法还不了解,那么今天这篇文章,壹哥就带大家学习Java中的方法。
在前面的文章中,壹哥跟大家说过,Java的类中包括两个核心要素:属性和行为。所谓的行为,其实就是用方法来表现出来。那么到底方法是什么?有哪些作用?怎么定义方法?这就是我们今天要学习的内容。
-----------------------------------------前戏已做完,精彩即开始------------------------------------
全文大约【3600】字,不说废话,只讲可以让你学到技术、明白原理的纯干货!本文带有丰富的案例及配图,让你更好地理解和运用文中的技术概念,并可以给你带来具有足够启迪的思考......
一. 方法简介
1. 背景
我们想一个问题,如果让你实现下图所示的效果,用现有的知识,你该如何实现?
在上图中,每一句诗都用虚线分割,我们可以采用蓝色方框所示的方式进行打印出来。但不论如何打印,都存在冗余的代码。如果后面需要修改这些冗余的代码,就需要修改多处。比如以后我们想要将虚线修改为直线,则需要修改图中的四个地方,从而增加了维护成本。那么有没有办法做到只修改一次,就能将四个地方的虚线全都修改掉呢?学习了今天的内容之后,我们就可以做到只修改一次,达到四个地方全都修改的目的。
2. 概念
要想实现上面的目标,我们就可以使用Java里的方法。方法中封装了一些为解决某个问题而编写的代码片段,可以反复使用。从这句话可以得知,方法是若干语句的集合,这些语句合在一起共同实现一个功能。我们可以在一个类中定义多个方法,方法之间可以互相引用。另外A类中定义的方法,在特定条件下,也可以在B类中引用。
3. 分类
Java中的方法,根据是否带有static修饰符,我们可以分为两种:
● 实例方法:也可以叫做成员方法。这种方法不能通过"类名.方法名"的形式直接调用,需要先创建出类的对象,通过"对象名.方法名"的形式调用。
● 静态方法:也叫做类方法,方法上带有static关键字。可以通过"类名.方法名"的形式直接调用。
4. 优点
我们在Java中定义的方法,具有如下优点:
● 方法可以实现某个特定的功能,减少了冗余代码,使程序变得简短清晰,便于后续的维护和修改;
● 方法采用单一职责,就是一个方法只做一件事情,降低了程序的耦合性;
● 方法的创建,提高了代码的复用性,提高了开发效率。
了解了这些基本概念之后,接下来就请大家跟着壹哥学习如何定义方法吧。
二. 方法定义
1. 基本语法
如果我们想定义一个方法,基本语法如下:
修饰符 返回值类型 方法名(参数类型 参数名){
...
方法体
...
return 返回值;
}
2. 组成部分
从方法定义的语法中可知,一个方法有如下几个重要组成部分:
修饰符:方法的修饰符是可选的,用于定义该方法的访问类型,可用的修饰符包括public/private/protected/默认的。
返回值:方法可以有返回值,也可以没有返回值。当有返回值时,需要指定返回值的数据类型;如果没有返回值,要使用void关键字声明。
方法名:定义方法时需要给方法取个名称,方便我们进行引用,该名称要符合Java的命名规范。方法名和方法参数共同构成了方法的签名。
参数:方法中可以带参数,也可以不带参数。如果不带参数,该方法就是无参方法。如果带有参数,需要指明参数的类型,且一个方法中可以带多个参数,这些参数叫做“形式参数(形参)”。当有多个参数时,要注意参数的类型、顺序和个数可以任意排列组合,不同的组合会形成不同的方法。当有参方法被调用时,需要传递真实的数据值给形参,这个值被称为“实际参数(实参)”。
方法体:方法体就是方法中具体的执行语句,用于实现该方法的核心功能。
3. 命名规则
我们在上面说过,每个方法都需要有名称,并且方法的命名要符合Java的命名规则。另外除了必须遵循的命名规则之外,我们在对方法命名时还要遵循一定的命名规范:
● 方法名称的首字母应该是小写。但如果方法名由多个单词组成,第一个单词的首字母应该是小写,后面的单词要用大写字母,且不要使用连接符。例如:showMsg。
4. 基本案例
接下来我们就通过一个案例,来看看如何定义一个实例方法。
public class Demo01 {
//定义一个带有返回值的方法
//访问修饰符 返回值 方法名 参数类型 参数名
public String showMsg(int age, String name, String msg) {
//方法体
String result;
if (age >= 18) {
result = name + ",恭喜你成年啦," + msg;
} else {
result = name + ",你还没成年," + msg;
}
//返回结果
return result;
}
}
大家注意,如果上面这个方法多加一个“static”关键字,就会变成静态方法哦,就是这么简单。
5. 方法调用
我们现在定义好了一个方法,那么该怎么来调用该方法呢?根据是否是静态方法,可以有两种不同的调用方式,我们来看看具体的代码吧。
5.1 同类中静态方法的调用
如果两个方法都在同一个类中,且A方法和B方法都是静态方法,A方法可以直接调用B方法。另外一个方法调用就是一个语句,所以不要忘了在末尾加“;”,如下所示:
public class Demo01 {
public static void main(String[] args) {
//调用方法,获取到返回结果
String result = showMsg(16, "一一哥", "要好好学习");
System.out.println(result);
}
//定义一个静态方法
//访问修饰符 返回值 方法名 参数类型 参数名
public static String showMsg(int age, String name, String msg) {
//方法体
String result;
.....
//返回结果
return result;
}
}
大家要注意,静态方法不能调用非静态方法,否则编译会出错!
5.2 不同类中静态方法的调用
如果两个方法不在同一个类中,且A方法和B方法都是静态方法,我们可以在另一个类中,通过“类名.方法名”的形式进行调用,如下所示:
public class Demo02 {
public static void main(String[] args) {
//调用方法,获取到返回结果
String result = Demo01.showMsg(16, "一一哥", "要好好学习");
System.out.println(result);
}
}
5.3 实例方法的调用
假如我们定义了一个非静态的实例方法,如下所示:
public class Demo01 {
//定义一个非静态的实例方法
// 访问修饰符 返回值 方法名 参数类型 参数名
public String showMsg2(int age, String name, String msg) {
// 方法体
String result;
if (age >= 18) {
result = name + ",恭喜你成年啦," + msg;
} else {
result = name + ",你还没成年," + msg;
}
// 返回结果
return result;
}
}
则可以采用“对象名.方法名”的形式调用,如下所示:
public class Demo02 {
public static void main(String[] args) {
//调用非静态的实例方法,先创建出类对象
Demo01 demo=new Demo01();
//对象.方法名
String result = demo.showMsg2(19, "以一个", "你好啊");
System.out.println(result);
}
}
6. 小结
壹哥给大家总结一下使用方法时的几个注意事项:
● 方法的定义位置:方法需要定义在类中其他方法的外面,方法之间不能互相嵌套;
● 方法的实参要与形参保持一致(个数、类型、顺序);
● 方法的返回值,并不一定非要接收。但一般方法既然定义了返回值,如果不去接受那么也没有意义。
三. 方法返回值
1. 概述
壹哥在上面说过,Java的方法中可以有返回值,也可以没有返回值。当有返回值时,需要指定返回值的数据类型;如果没有返回值,要使用void关键字进行声明。
2. void关键字
如果方法没有返回值,则该方法的返回类型要设置为void,表示该方法没有任何返回值,可以省略return。我们来看下面的案例:
public class Demo02 {
public static void main(String[] args) {
//调用方法
printTriangle(6);
}
//定义一个没有返回值的方法,打印三角形(三角形行数由调用者来确定)
public static void printTriangle(int rows) {
for (int i = 1; i <= rows; i++) {
for (int j = 1; j <= i ; j++) {
System.out.print("*");
}
System.out.println();
}
//返回值为void时,返回值可以写成如下格式,但实际上没必要
//return ;
}
}
注意,当返回值为void时,返回值可以写成“return ;”的形式,但实际上没必要。
3. return关键字
如果方法有返回值,则要使用return关键字进行值的返回,其格式如下所示。
return 表达式; 或 return (表达式);
其中,表达式可以是常量、变量、对象等,且表达式的数据类型必须与声明方法时给出的返回值类型一致。我们来看下面的案例:
public class Demo04 {
public static void main(String[] args) {
//调用方法
int num = max(6,10);
System.out.println("num="+num);
}
//定义一个带参数和返回值的方法,该方法包含2个参数num1和num2,返回这两个参数中的最大值。
public static int max(int num1,int num2) {
if(num1 > num2) {
return num1;
}else {
return num2;
}
}
}
4. 小结
壹哥给大家总结一下return关键字的作用:
● return表示当前方法的执行结束了;
● return可以用在有返回值的方法中;
● return也可以用在没有返回值的方法中;
● 在return的后面不能直接写任何代码,因为不可能执行的到;
● 没有返回值的方法可以只写return,而有返回值的方法必须要写“return 返回值”;
另外我们还有知道void和return null的区别。
void的表示方法没有返回值,但是大家要注意,void和“return null;”是不一样的!void表示啥也不用返回,根本不用考虑返回值的事!而“return null;”表示要返回一个引用类型的值,只是该值是一个空值!
----------------------------------------正片已结束,来根事后烟-------------------------------------
四. 结语
至此,壹哥就给大家把方法的定义介绍完毕了,现在你知道方法怎么创建了吗?其实关于方法的内容还有很多,比如方法的参数、方法的重载、构造方法等内容,接下来壹哥会在下一篇文章中继续给大家进行讲解,敬请期待哦。
五. 今日作业
1. 第一题
写一个方法,打印九九乘法表。
2. 第二题
定义一个方法,求100以内所有的质数并输出。
Java方法的定义的更多相关文章
- Java方法之定义形式及可变参数
目录 Java方法之定义形式及可变参数 方法调用 使用static修饰的方法 没有static修饰的方法 方法的定义格式 无参无返 无参有返 有参无返 有参有返 形参个数可变的方法 采用数组形参来定义 ...
- 22.java方法的定义
java中的方法:就相当于c语言中的函数:sun在开发java的时候,为提高其代码的重复利用率,引入了方法. 什么是方法? 方法就是一段代码片段,这个片段可以完成特定的功能,并且可以重复利用. 从入口 ...
- Java方法的定义以及调用、方法重载、可变参数以及递归
目录 何谓方法 方法的定义及调用 方法的定义 方法调用 方法重载 命令行传参 可变参数 递归 何谓方法 Java方法是语句的集合,它们在一起执行一个功能 方法是解决一类问题的步骤的有序组合 方法包含于 ...
- Java | 方法的定义 & 重载 & 递归
方法 方法就是一段用来完成特定功能的代码片段. 方法用于定义该类或该类的实例的行为特征和功能实现.方法是类和对象行为特征的抽象.在面向对象中,整个程序的基本单位是类,方法是从属于类和对象的. 方法 ...
- 11. Java方法的定义与使用
1.1方法的定义 方法是一段可以被重复调用的代码块. 方法的声明: public static 方法返回值 方法名称 ([参数类型 变量...]) 方法体代码: [return 返回值]: 当方法以v ...
- java 方法的定义与调用
/* 定义一个方法的格式: public static void 方法名称(){ 方法体 } 方法名称的命名规则和变量一样,使用小驼峰 方法体:也就是大括号里面的可以包含任何语句 注意事项: 1.方法 ...
- Java方法的定义和使用
/* 定义一个方法的格式: public static void 方法名称() { 方法体 } 方法名称的命名规则和变量一样,使用小驼峰. 方法体:也就是大括号当中可以包含任意条语句. 注意事项: 1 ...
- Java方法02——定义与调用
方法的定义与调用 定义与调用 例子 package method; public class Demon03 { public static void main(String[] arg ...
- java方法的定义格式
Java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段,声明格式为: [修饰符1 修饰符2 …..] 返回值类型 方法名( 形式参数列表 ){ Java 语句;… … … } 例如 ...
- 深入理解为什么Java中方法内定义的内部类可以访问方法中的局部变量
好文转载:http://blog.csdn.net/zhangjg_blog/article/details/19996629 开篇 在我的上一篇博客 深入理解Java中为什么内部类可以访问外部类的成 ...
随机推荐
- 利用matlab求解函数微分
利用matlab解决求解函数微分 matlab,微分 1. 问题提出 最近在复习高等数学,感觉可以结合 去理解他. 遇到了一个题目: 2. 具体代码 %{ 解决函数微分问题 %} clc; clear ...
- 机器学习之pandas介绍
pandas简介 pandas全称python Data Analysis Library,是基于numpy的一种工具,pandas纳入了大量库和一些标准的数据模型,提供了高效的操作大型数据集所需的工 ...
- elementUI table 数组中各项加逗号隔开
js处理 //this.newTableData 数组 this.newTableData.map((item,index)=>{ //item.label 数组 if(item.label){ ...
- 2020年第11届蓝桥杯C/C++B组 第二轮省赛
# JJU-干干 试题A :门牌制作[问题描述]小蓝要为一条街的住户制作门牌号.这条街一共有 2020 位住户,门牌号从 1 到 2020 编号.小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符 ...
- 项目实训 DAY 9
加入页面之间定向的按钮,并改了一个typo
- 4、word—截图的试卷背景为黑色,如何去掉呢?
1.[图片格式]->[校正]->[锐化50%] 2.[图片格式]->[校正]->[亮度/对比度]选择一个适合自己的
- Jetpack compose学习笔记之自定义layout(布局)
一,简介 Compose中的自定义Layout主要通过LayoutModifier和Layout方法来实现. 不管是LayoutModifier还是Layout,都只能measure一次它的孩子Vie ...
- deepin 调整微信、百度网盘、迅雷等等软件字体的方法
一.修改微信字体大小方法: 1.方法一:修改deepinwine桌面环境字体 env WINEPREFIX="$HOME/.deepinwine/Deepin-WeChat" wi ...
- JavaScript常见事件记录
JavaScript常见事件记录 onblur: 元素失去焦点 onfocus: 元素获得焦点 onchange: 用户改变域的内容 onclick: 鼠标点击某个对象 ondblclick: 鼠标双 ...
- 第13章 MVC和Razor Pages过滤器管道(ASP.NET Core in Action, 2nd Edition)
本章包括 过滤器管道及其与中间件的区别 创建自定义筛选器以重构复杂的操作方法 使用授权筛选器保护您的操作方法和Razor页面 短路筛选器管道以绕过操作和页面处理程序执行 将依赖项注入筛选器 在第1部分 ...