文章目录
前言
系列文章比较适合非科班的同学, 由浅及深, 循序渐进, 从基础开始走上大数据之路
让我们一起努力, 达成目标, 实现理想
最后恳请留下你的小❤, 点赞给我一个小小的鼓励吧
一、方法的入门
1.1 概述
假如我们使用循环在一段程序中实现在控制台上打印3次helloworld、再打印5次helloworld , 我们会在main方法中编写两段for循环语句 , 若要再来3个打印多次呢 ? 这个时候我们会发现这样编写代码非常的繁琐且重复的代码过多。能否避免这些重复的代码呢,就需要使用方法来实现。
- 方法: 就是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集。
当我们需要这个功能的时候,就可以去调用。这样即实现了代码的复用性,也解决了代码冗余的现象。
1.2 无参数无返回值的方法定义
方法完整的定义格式:
修饰符 返回值类型 方法名 (参数列表){
方法体
return 结果;
}
- 定义格式解释:
- 修饰符: 目前固定写法
public static
,后面再拓展 - 返回值类型: 目前固定写法
void
,其他返回值类型后面再拓展 - 方法名:为我们定义的方法起名,满足标识符的规范(小驼峰法),用来调用方法。
- 参数列表: 目前无参数, 带有参数的方法后面再拓展。
- return:方法结束。因为返回值类型是void,方法大括号内的return可以不写。
- 修饰符: 目前固定写法
无参数无返回值的方法定义 格式就简化为:
修饰符 void 方法名 (){
方法体
}
举例
public static void methodPrint() {
System.out.println("HelloWorld"); // 自定义功能
}
> 注意:方法必须先定义,后调用,否则程序将报错,而且方法不调用不执行
1.2.1 方法的调用
方法在定义完毕后,方法不会自己运行,必须被调用才能执行,我们可以在主方法main中来调用我们自己定义好的方法。在主方法中,直接写要调用的方法名字就可以调用了。
调用格式:
方法名 ();
1.2.2 方法的调用图解
举例:
public static void main(String[] args) {
method(); //调用定义的方法method
}
//定义方法,在main方法中调用
public static void method() {
System.out.println("这是一个方法");
}
图解:
总结:每个方法在被调用执行的时候,都会进入栈内存,并且拥有自己独立的内存空间,方法内部代码执行完毕之后,会从栈内存中弹栈消失。
1.2.3 方法练习
打印九九乘法表
阶梯式的打印出九九乘法表
参考
public class MethodTest {
public static void main(String[] args) {
print99();
}
public static void print99 (){
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(i+" x "+j+" = "+i*j);
System.out.print("\t");
}
System.out.println();
}
}
}
二、方法详解
2.1 定义方法的格式详解
修饰符 返回值类型 方法名 (参数列表){
方法体
return 结果;
}
补充
- 参数列表:方法在运算过程中的未知数据,调用者调用方法时传递
- return:将方法执行后的结果带给调用者,方法执行到
return
,整体方法运行结束,这里的"结果"在开发中,我们正确的叫法成为方法的返回值
2.2 定义方法的三个明确
明确方法名称:给方法起个名字,方便调用,只要符合标识符规则就可以,尽量做到见名知意
明确返回值类型:例如方法计算的是整数的求和,结果也必然是个整数,返回值类型定义为int类型。
明确参数列表:例如计算两个整数的和,具体计算哪两个整数的和并不清楚,但可以确定是整数,参数列表可以定义两个int类型的变量,由调用者调用方法时传递
2.3 带参数无返回值的方法定义
格式
public static void 方法名 (参数列表){
方法体
}
举例
public static void printSum(int a, int b) {
int sum = a + b;
System.out.println(sum);
}
> 注意:
1. 方法定义时,参数中的数据类型与变量名都不能缺少,缺少任意一个,程序报错
2. 方法定义时,多个参数之间用“,”隔开
3. 这里预设的参数int a、int b称作形式参数,简称形参
2.3.1 方法调用
调用格式:
方法名 (参数1,参数2,…);
2.3.2 方法调用流程图解
举例
public static void main(String[] args) {
printSum(5,6); //调用定义的方法method
}
//定义方法,被main方法调用
public static void printSum(int a,int b){
int sum = a + b;
System.out.println(sum);
}
图解
2.3.3 方法练习
输出较大数
定义一个方法用于打印两个数中的较大数,数据来自于方法参数
参考
public class MethodTest {
public static void main(String[] args) {
// 调用方法的时候,规定形参有几个,就得给定几个参数,并且数据类型也要一一对应
getMax(13,14);
int a = 520;
int b = 1314;
getMax(a, b); //可以使用变量
}
public static void getMax(int a, int b) {
if (a > b) {
System.out.println(a);
} else {
System.out.println(b);
}
}
}
2.4 带参数带返回值的方法定义
格式
public static 返回值类型 方法名 (参数列表){
方法体
return 结果;
}
举例
public static int getSum(int a,int b){
int sum = a + b;
return sum;
}
> 注意:方法定义时return后面的返回值与方法定义上的数据类型要匹配(目前暂时认为数据类型一致),否则程序将报错
2.4.1 方法调用
调用格式:
数据类型 变量名 = 方法名 (参数1,参数2,… );
方法的返回值通常会使用变量接收,否则该返回值将无意义
2.4.2 方法调用流程图解
举例
public static void main(String[] args) {
int sum = getSum(13, 14); //调用定义的方法method
System.out.println(sum);
}
//定义方法,被main方法调用
public static void getSum(int a,int b){
int c = a + b;
return c;
}
图解
2.4.3 方法练习
- 返回随机小数
定义一个方法,返回 [0, 1) 的随机小数
参考
import java.util.Random;
public class MethodTest {
public static void main(String[] args) {
double a = returnDoubel();
System.out.println(a);
}
public static double returnDouble() {
Random rd = new Random();
return rd.nextDouble();
}
}
- 返回键盘录入值
定义一个方法,返回键盘录入的小数
参考
import java.util.Scanner;
public class MethodTest {
public static void main(String[] args) {
double a = returnDoubel();
}
public static double returnDoubel() {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个随机小数");
return sc.nextDouble();
}
}
- 返回字符串类型的矩形
定义一个方法,返回字符串类型 3x4大小 的*型矩形
参考
public class MethodTest {
public static void main(String[] args) {
String a = stringTir(3, 4);
System.out.println(a);
}
//int a是行数,int b是列数
public static String stringTri(int a, int b) {
String str = "";
for (int i = 0; i < a; i++) {
for (int j = 0; j < b; j++) {
str += "* ";
}
str += "\r\n"; //字符串拼接后行首换行
}
return str;
}
}
2.5 定义方法的注意事项
- 方法不能嵌套定义
public class MethodDemo {
public static void main(String[] args) {
}
public static void methodOne() {
// 这里会引发编译错误!!!
public static void methodTwo() {
}
}
}
- 返回值类型,必须要和
return
语句返回的类型相同,否则编译失败
// 返回值类型要求是int
public static int getSum() {
return 5;// 正确,int类型
return 1.2;// 错误,类型不匹配
return true;// 错误,类型不匹配
}
- 同一个方法体中 , 不能在
return
语句后面写代码,return
意味着方法结束,所有后面的代码永远不会执行,属于无效代码
public static int getSum(int a,int b) {
return a + b;
System.out.println("Hello");// 错误,return已经结束,这里不会执行,无效代码
}
- void表示无返回值,可以省略return,也可以单独的书写
return;
,后面不加数据
public class MethodDemo {
public static void main(String[] args) {
}
public static void methodTwo() {
return 100; //编译错误,因为没有具体返回值类型
return; //正确
System.out.println(100); //return语句后面不能跟数据或代码
}
}
三、方法重载
3.1 概念
方法重载:
指在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,与修饰符和返回值类型无关。
- 多个方法在同一个类中
- 多个方法具有相同的方法名
- 多个方法的参数不相同,类型不同或者数量不同
3.2 方法重载练习
使用方法重载的思想,设计比较两个数据是否相等的方法,兼容全整数类型byte,short,int,long
public class Method_Demo {
public static void main(String[] args) {
//定义不同数据类型的变量
byte a = 10;
byte b = 20;
short c = 10;
short d = 20;
int e = 10;
int f = 10;
long g = 10;
long h = 20;
// 调用
System.out.println(compare(a, b));
System.out.println(compare(c, d));
System.out.println(compare(e, f));
System.out.println(compare(g, h));
}
// 两个byte类型的
public static boolean compare(byte a, byte b) {
System.out.print("byte --> ");
return a == b;
}
// 两个short类型的
public static boolean compare(short a, short b) {
System.out.print("short --> ");
return a == b;
}
// 两个int类型的
public static boolean compare(int a, int b) {
System.out.print("int --> ");
return a == b;
}
// 两个long类型的
public static boolean compare(long a, long b) {
System.out.print("long --> ");
return a == b;
}
}
四、方法的练习
遍历数组
设计一个方法用于数组遍历,要求遍历的结果是在一行上的。例如:[11, 22, 33, 44, 55]
参考
public class MethodTest01 {
public static void main(String[] args) {
//定义一个数组,静态初始化
int[] arr = {11, 22, 33, 44, 55};
printArray(arr);
}
//定义一个方法,用数组遍历通用格式对数组进行遍历
/*
两个明确:
返回值类型:void
参数:int[] arr
*/
public static void printArray(int[] arr) {
System.out.print("[");
for(int x=0; x<arr.length; x++) {
if(x == arr.length-1) {
System.out.print(arr[x]+"]");
} else {
System.out.print(arr[x]+", ");
}
}
}
}
获取数组中的最大值
设计一个方法用于获取数组中元素的最大值
参考
public class MethodTest02 {
public static void main(String[] args) {
int[] arr = {12, 45, 98, 73, 60};
//调用获取最大值方法,用变量接收返回结果
int number = getMax(arr);
System.out.println("Max number:" + number);
}
public static int getMax(int[] arr) {
int max = arr[0];
for(int x=1; x<arr.length; x++) {
if(arr[x] > max) {
max = arr[x];
}
}
return max;
}
}
生成指定个数整数
设计一个方法指定生成随机整数个数,并将随机生成的整数全部返回
参考
// import java.util.Random
public static void main(String[] args) {
int [] a = newInts(6); //随机指定生成长度为6的整数数组
for (int i = 0; i<a.length; i++){
System.out.println(a[i]);
}
}
public static int[] newInts(int length){
int [] arr = new int[length];
Random rd = new Random();
for (int i = 0; i < length; i++) {
arr[i] = rd.nextInt();
}
return arr;
}
总结
左上角主页里面有所有系列文章喔!
消除贫穷的最好办法就是和我一起学大数据,加油,奥利给!
看到这里点个赞吧!