Java入门(七):方法
方法,在日常生活中可以理解成解决问题或处理事情的技巧,一个方法的形成,需要思考和分析,从而形成一步一步的步骤,最后在实际执行过程中验证自己的思路。在Java中,方法的形成亦是如此。
方法,指用于封装一段特定的逻辑功能,如计算百分比、判断非空、时间日期的转换等操作,可以在程序中被反复调用,减少重复代码,也便于程序维护,也可以相当于一个小轮子。
一个完整的方法主要由访问修饰符、修饰词、返回值类型、方法名、参数列表、异常处理、方法体七个部分组成,只能声明在类的内部。
访问修饰符 修饰词 返回值类型 方法名(参数列表) throws 异常 {
方法体
}
1、访问修饰符
用于声明方法的可用范围。包括public、protected、private、缺省四种。public修饰的方法可以被所有类访问。protected修饰的方法可以被位于同一包中的所有类访问,也可以被所有子类(可以不同包)访问。private修饰的方法只能被当前类访问。缺省,也叫无访问修饰符,其修饰的方法可以被位于同一包中的所有类访问。
2、修饰词
用于声明方法的性质或用途。包含static、final、abstract、native、synchronized五种。static修饰的方法,属于静态方法,也称为类方法,可以直接通过类名点方法名调用。final修饰的方法,不能被重载(在面向对象会仔细说明重载、重写的)。abstract修饰的方法表示此方法是一个抽象方法,表示类中已声明但没有实现。native修饰的方法在类中没有实现,此修饰词并不多用。synchronized修饰的方法,表示该方法被“锁”,其他地方的调用无法执行,直到方法运行完,在后面的线程中会详细介绍。
3、返回值类型
用于声明方法的处理结果的数据类型。如果方法没有返回值,可以使用void来声明,表示无返回值。如果方法有返回值,则必须在方法中使用return语句,返回与返回值类型相兼容的返回值数据。
4、方法名
方法的识别名称,其命名原则遵守Java命名规范,做到见名知意,长一点也可以。
5、参数列表
用于声明方法中需要处理的数据,是方法执行的前提条件,可以有多个相同或不同数据类型参数。
6、异常处理
使用throws声明方法运行中可能会出现的异常,将其抛给方法调用者,常见的如空指针异常、输入输出异常等。
7、方法体
方法体是方法的处理过程,有具体的算法逻辑或业务逻辑,是一个方法的核心。
package javalearningday06; import java.util.Arrays; /**
* 方法
* @author 小川94
* @date 2018年3月25日
*/
public class Function { public static void main(String[] args) {
System.out.println(helloSomeone("")); // Hello world !
System.out.println(helloSomeone("小川94")); // Hello,小川94 !
System.out.println(randomCheckCode(4)); // 对于方法中参数的验证
int a = 5; // 声明的局部变量a
// 将a传给add方法,并不会使用上面已经在栈中存在的a,而是会另外在栈中开辟存储空间,存放传参a
add(a);
// 输出打印的a是main方法中声明的变量a,不是add方法中的传参a
System.out.println(a); // a = 5
} /**
* 打招呼方法
* StringUtil为工具类,同包下的类不需要引用;
* 对于传递进来的参数,如果后续会对其进行相关操作,请务必判断是否为空
* @param name 名称
* @return
*/
public static String helloSomeone(String name) {
if (StringUtil.IsNullOrEmpty(name)) {
return "Hello world !";
}
return "Hello," + name + " !";
} /**
* 生成num位随机验证码字符串
* @param num 验证码位数
* @return
*/
private static String randomCheckCode(int num){
if (StringUtil.IsNullOrEmpty(num)) {
return "请传入需要生成几位数验证码的参数!";
}
if (0 == num || num < 0) {
return "请传入大于0的正整数!";
}
String[] dic = {"A","B","C","D","E","F","G","H","I","J",
"K","L","M","N","O","P","Q","R","S","T",
"U","V","W","X","Y","Z","0","1","2","3",
"4","5","6","7","8","9"};
String[] strArr = new String[num];
for (int i=0; i<strArr.length; i++) {
int index = (int)(Math.random()*dic.length);
strArr[i] = dic[index];
}
return Arrays.toString(strArr);
} /**
* 关于方法中变量的问题:
* 方法中声明的变量、参数列表的传参都是局部变量,运行期间,都会在栈中分配存储空间
* @param a
*/
protected static void add(int a) {
a++;
} }
下面是一个是否为空判断的工具类
package javalearningday06; /**
* 是否为空工具类
* @author 小川94
* @date 2018年3月25日
*/
public class StringUtil { /**
* 判断对象是否为null或者空字符串
* @param obj
* @return
*/
public static boolean IsNullOrEmpty(Object obj){
if (obj == null) {
return true;
}
if (obj.toString().trim().equals("")) {
return true;
}
return false;
} /**
* 判断对象不为null或空字符串
* @param obj
* @return
*/
public static boolean IsNotEmpty(Object obj){
return !IsNullOrEmpty(obj);
} }
对于方法,也可以这样通俗的理解,将整个方法当做一台可以重复生产产品的机器,访问修饰符相当于这台机器可以由谁来操作;修饰词相当于机器的设置,对产品规格、重量等的设置;返回值类型相当于最后的成品;方法名就是这台机器的名字、编号;参数列表就是生产产品的原料;异常处理相当于机器运行过程中可能会出现的故障;方法体就是机器的加工过程了,最后通过return语句,来生成最终的成品。
Java的高级特性是面向对象,可以对万事万物进行抽象处理,一切皆对象,其中有抽象映射具体、具体归纳抽象的相互转化,这些不仅会在编程中运用,生活中亦是如此。
上面的代码都上传至了GitHub,地址是https://github.com/XiaoChuan94/javalearning/tree/master/javalearningday06,有需要的可以去下载观看,如果喜欢就给个star吧!如有不足,欢迎下方留言交流。
文章首发于我的个人公众号:悦乐书。喜欢分享一路上听过的歌,看过的电影,读过的书,敲过的代码,深夜的沉思。期待你的关注!

公众号后台输入关键字“Java学习电子书”,即可获得12本Java学习相关的电子书资源,如果经济能力允许,还请支持图书作者的纸质正版书籍,创作不易。
Java入门(七):方法的更多相关文章
- 针对安卓java入门:方法的使用
[修饰符]返回值类型 方法名 (形式参数表){ 程序代码; return 返回值; } 例子: public class Test { //方法一 public static void printIn ...
- [Java入门笔记] 面向对象编程基础(二):方法详解
什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能上来看,方法都有点类似与函数.但是,方法与传统的函数还是有着不同之处: 在 ...
- Java入门姿势【面向对象3】构造方法及其重载_方法的调用
上次我为大家写出啦"定义类与创建对象_了解局部变量",上篇文章代码可能较多,如没有了解透彻的话请打开下方文章在进行观看一下哦!! [Java入门姿势[面向对象2]定义类与创建对象_ ...
- Java入门 - 语言基础 - 19.方法
原文地址:http://www.work100.net/training/java-method.html 更多教程:光束云 - 免费课程 方法 序号 文内章节 视频 1 概述 2 方法的定义 3 方 ...
- Java入门基础(类的方法)
方法 1.添加方法 方法表示一个类能做什么.在Java里,方法和属性属于对等的术语,在一个类中,不仅可以添加属性,还可以添加方法. 类 { 属性:描述“我有什么” 方法:描述“我能做什么” } 例子: ...
- JAVA入门第一季(mooc-笔记)
笔记相关信息 /** * @subject <学习与创业>作业1 * @author 信管1142班 201411671210 赖俊杰 * @className <JAVA入门第一季 ...
- Java入门-浅析Java学习从入门到精通【转】
一. JDK (Java Development Kit) JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库 ...
- Java入门(三):变量和运算符
上次谈到了Java的基本数据类型,今天接着聊Java的变量.运算符. 一.变量 1.变量的分类 变量分为成员变量.局部变量和常量,其中成员变量又分为实例变量.类变量. 2.变量的定义 语法:变量类型( ...
- Jmeter Web 性能测试入门 (七):Performance 测试中踩过 Jmeter 的坑
脚本运行的过程中,大量request抛error,但没有地方能够查看request是因为什么error的. 原因:Jmeter默认禁掉了运行过程中每个request的具体response信息收集,只保 ...
随机推荐
- 深入MySQL复制(三):半同步复制
1.半同步复制 半同步复制官方手册:https://dev.mysql.com/doc/refman/5.7/en/replication-semisync.html 默认情况下,MySQL的复制是异 ...
- Perl正则表达式引用
正则表达式两篇: 基础正则 Perl正则 本文是对Perl正则的一点扩展,主要内容是使用qr//创建正则对象,以及一些其它的技巧. qr//创建正则对象 因为可以在正则模式中使用变量替换,所以我们可以 ...
- selenium3环境搭建以及各浏览器驱动的使用方法
想了解更多关于seleniu请访问selenium官网 https://www.seleniumhq.org/ 以Selenium3.0.2版本为例介绍在Python中如何安装及使用,具体操作步骤如下 ...
- 全面认识golang string
string我们每天都在使用,可是对于string的细节问题你真的了解吗? 今天我们先以一个问题开篇. 你能猜到下面代码的输出吗? package main import ( "fmt&qu ...
- ife 零基础学院 day 2
第二天:给自己做一个在线简历吧 最后的验证,提出了几个问题,尝试解答一下 HTML是什么,HTML5是什么 HTML的定义摘抄自w3school的HTML 简介 HTML 是用来描述网页的一种语言. ...
- 【转载】Asp.Net中使用基于jQuery的javascript前台模版引擎JTemplate
JTemplate是基于jQuery的开源的前端模版引擎,在Jtemplate模板中可以使用if判断.foreach循环.for循环等操作,使用Jtemplate模板优点在于ajax局部刷新界面时候不 ...
- SQL 語法
查詢 Sql = ("SELECT A1, A2, A5, A4 FROM Table1 ") 筆數 Sql = ("Select COUNT(*) From TW01. ...
- 读书笔记--Android Gradle权威指南(上)
本篇文章已授权微信公众号 dasu_Android(大苏)独家发布 最近看了一本书<Android Gradle 权威指南>,对于 Gradle 理解又更深了,但不想过段时间就又忘光了,所 ...
- loj#2483. 「CEOI2017」Building Bridges(dp cdq 凸包)
题意 题目链接 Sol \[f[i], f[j] + (h[i] - h[j])^2 + (w[i - 1] - w[j]))\] 然后直接套路斜率优化,发现\(k, x\)都不单调 写个cdq就过了 ...
- Mixing a dll boost library with a static runtime is a really bad idea错误的解决
作者:朱金灿 来源:http://blog.csdn.net/clever101 同事在使用boost库时遇到一个问题,在编译时出现一个错误:Mixing a dll boost library wi ...