前面的章节中,使用过嵌套循环输出矩形,控制台打印出矩形就可以了,因此方法定义为void
,没有返回值。在主方法main
中直接被调用。
public class Method_Demo1 {
public static void main(String[] args) {
print();
}
private static void print() {
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 8; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
print
方法被main
方法调用后直接输出结果,而main
方法并不需要print
方法的执行结果,所以被定义为void
。
修饰符 返回值类型 方法名(参数列表) {
// 代码省略...
return 结果;
}
return
,整体方法运行结束小贴士:return 结果;这里的"结果"在开发中,我们正确的叫法称为方法的返回值
定义方法实现两个整数求和计算。
明确返回值类型
方法计算的是整数的求和,结果也必然是个整数,返回值类型定义为int类型。
明确参数列表
计算哪两个整数的和,并不清楚,但可以确定是整数,参数列表可以定义两个int类型的变量,由调用者调用方法时传递。
public class Method_Demo2 {
public static void main(String[] args) {
// 调用方法getSum,传递两个整数,这里传递的实际数据又称为实际参数
// 并接收方法计算后的结果,返回值
int sum = getSum(5, 6);
System.out.println(sum);
}
/*
定义计算两个整数和的方法
返回值类型,计算结果是int
参数:不确定数据求和,定义int参数.参数又称为形式参数
*/
public static int getSum(int a, int b) {
return a + b;
}
}
程序执行,主方法main
调用getSum
方法,传递了实际数据5
和6
,两个变量a
和b
接收到的就是实际参数,并将计算后的结果返回,主方法main
中的变量sum
接收的就是方法中的返回值。
定义方法实现功能,需要有两个明确,即返回值
和参数列表
。
明确返回子值
比较整数,比较结果只有两种可能,相同或不相同,因此结果是布尔类型,比较的结果相同为true。
明确参数列表
比较的两个整数不确定,所以默认定义两个int类型的参数。
public class Method_Demo3 {
public static void main(String[] args) {
//调用方法compare,传递两个整数
//并接收方法计算后的结果,布尔值
boolean bool = compare(3, 8);
System.out.println(bool);
}
/*
定义比较两个整数是否相同的方法
返回值类型,比较的结果布尔类型
参数:不确定参与比较的两个整数
*/
public static boolean compare(int a, int b) {
if (a == b) {
return true;
} else {
return false;
}
}
}
定义方法实现功能,需要有两个明确,即返回值
和参数
。
明确返回值
1~100的求和,计算后必然还是整数,返回值类型是int
明确参数
需求中已知道计算的数据,没有未知的数据,不定义参数
public class Method_Demo4 {
public static void main(String[] args) {
//调用方法getSum
//并接收方法计算后的结果,整数
int sum = getSum();
System.out.println(sum);
}
/*
定义计算1~100的求和方法
返回值类型,计算结果整数int
参数:没有不确定数据
*/
public static int getSum() {
//定义变量保存求和
int sum = 0;
//从1开始循环,到100结束
for (int i = 1; i <= 100; i++) {
sum = sum + i;
}
return sum;
}
}
定义方法实现功能,需要有两个明确,即返回值
和参数
。
明确返回值
方法中打印HelloWorld
即可,没有计算结果,返回值类型void
。
明确参数
打印几次不清楚,参数定义一个整型参数
public class Method_Demo5 {
public static void main(String[] args) {
//调用方法printHelloWorld,传递整数
printHelloWorld(9);
}
/*
定义打印HelloWorld方法
返回值类型,计算没有结果 void
参数:不确定打印几次
*/
public static void printHelloWorld(int n) {
for (int i = 0; i < n; i++) {
System.out.println("HelloWorld");
}
}
}
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已经结束,这里不会执行,无效代码
}
直接写方法名调用
public static void main(String[] args) {
print();
}
public static void print() {
System.out.println("方法被调用");
}
调用方法,在方法前面定义变量,接收方法返回值
public static void main(String[] args) {
int sum = getSum(5,6);
System.out.println(sum);
}
public static int getSum(int a,int b) {
return a + b;
}
在输出语句中调用方法,System.out.println(方法名())
public static void main(String[] args) {
System.out.println(getSum(5,6));
}
public static int getSum(int a,int b) {
return a + b;
}
不能用输出语句调用void
类型的方法。因为方法执行后没有结果,也就打印不出任何内容。
public static void main(String[] args) {
System.out.println(printHello());// 错误,不能输出语句调用void类型方法
}
public static void printHello() {
System.out.println("Hello");
}
方法重载指在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,与修饰符和返回值类型无关。
比较两个数据是否相等。参数类型分别为两个byte
类型,两个short
类型,两个int
类型,两个long
类型,并在main
方法中进行测试。
public class Method_Demo6 {
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.println("byte");
return a == b;
}
// 两个short类型的
public static boolean compare(short a, short b) {
System.out.println("short");
return a == b;
}
// 两个int类型的
public static boolean compare(int a, int b) {
System.out.println("int");
return a == b;
}
// 两个long类型的
public static boolean compare(long a, long b) {
System.out.println("long");
return a == b;
}
}
判断哪些方法是重载关系。
public static void open(){}
public static void open(int a){}
static void open(int a,int b){}
public static void open(double a,int b){}
public static void open(int a,double b){}
public void open(int i,double d){}
public static void OPEN(){}
public static void open(int i,int j){}
模拟输出语句中的println
方法效果,传递什么类型的数据就输出什么类型的数据,只允许定义一个方法名println
。
public class Method_Demo7 {
public static void println(byte a) {
System.out.println(a);
}
public static void println(short a) {
System.out.println(a);
}
public static void println(int a) {
System.out.println(a);
}
public static void println(long a) {
System.out.println(a);
}
public static void println(float a) {
System.out.println(a);
}
public static void println(double a) {
System.out.println(a);
}
public static void println(char a) {
System.out.println(a);
}
public static void println(boolean a) {
System.out.println(a);
}
public static void println(String a) {
System.out.println(a);
}
}
package com.zzm.day04.demo01;
/**
* 用途:
* 时间:2021/5/18 15:50
* 创建人:张子默
*/
/*
复习一下此的方法基础入门知识。
定义格式:
public static void 方法名称() {
方法体
}
调用格式:
方法名称();
注意事项:
方法定义的先后顺序无所谓。
方法定义必须是挨着的,不能再一个方法内部定义另外一个方法。
方法定义之后自己不会执行的,如果希望执行,一定要进行方法的调用。
*/
public class Demo01Method {
public static void main(String[] args) {
printMthod();
}
public static void printMthod() {
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 20; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
package com.zzm.day04.demo01;
/**
* 用途:
* 时间:2021/5/18 16:03
* 创建人:张子默
*/
/*
方法其实就是若干语句的功能集合。
方法好比是一个工厂。
蒙牛工厂 原料:奶牛、饲料、水
产出物:奶制品
钢铁工厂 原料:铁矿石、煤炭
产出物:钢铁建材
参数(原料):就是进入方法的数据。
返回值(产出物):就是从方法中出来的数据。
定义方法的完整格式:
修饰符 返回值类型 方法名称(参数类型 参数名称, ...) {
方法体
return 返回值;
}
修饰符:现阶段的固定写法,public static
返回值类型:也就是方法最终产生的数据结果是什么类型
方法名称:方法的名字,规则和变量一样,小驼峰
参数类型:进入方法的数据是什么类型
参数名称:进入方法的数据对应的变量名称
PS:参数如果有多个,使用逗号进行分隔
方法体:方法需要做的事情,若干行代码
return的两个作用:
停止当前方法
将后面的返回值还给调用处
返回值:也就是方法执行后最终产生的数据结果。
注意:return后面的"返回值"必须和方法名称前面的"返回值类型"保持对应。
定义一个两个int数字相加的方法。三要素:
返回值类型:int
方法名称:sum
参数列表:int a, int b
方法调用的三种格式:
单独调用:方法名称(参数);
打印调用:System.out.println(方法名称(参数));
赋值调用:数据类型 变量名称 = 方法名称(参数);
注意:此前章节的方法返回值类型固定写为void,这种类型的方法只能进行单独调用,不能进行赋值调用和打印调用。
*/
public class Demo02MethodDefine {
public static void main(String[] args) {
// 单独调用
sum(10, 20);
System.out.println("===============");
// 打印调用
System.out.println(sum(10, 20));
System.out.println("===============");
// 赋值调用
int number = sum(15, 25);
number += 100;
System.out.println("变量的值:" + number);
}
public static int sum(int a, int b) {
System.out.println("方法执行啦!");
// return a + b;
int result = a + b;
return result;
}
}
package com.zzm.day04.demo01;
/**
* 用途:
* 时间:2021/5/18 16:34
* 创建人:张子默
*/
/*
有参数:小括号当中有内容,当一个方法需要一些数据条件才能够完成任务的时候,就是有参数。例如两个数字相加,必须知道两个数字是各自多少,才能相加。
无参数:小括号当中留空,一个方法不需要任何数据条件,自己就能独立完成任务,就是无参数。例如定义一个方法打印固定10次HelloWorld。
*/
public class Demo03MethodParam {
public static void main(String[] args) {
method1(10, 20);
System.out.println("===============");
method2();
}
// 两个数字相乘,做乘法必须知道两个数字各自是多少,否则无法进行计算
// 有参数
public static void method1(int a, int b) {
int result = a * b;
System.out.println("结果是:" + result);
}
// 打印输出固定10次文本字符串
public static void method2() {
for (int i = 0; i < 10; i++) {
System.out.println("Hello,World!" + i);
}
}
}
package com.zzm.day04.demo01;
/**
* 用途:
* 时间:2021/5/18 16:43
* 创建人:张子默
*/
/*
题目要求:定义一个方法,用来【求出】两个数字之和。(你帮我算,算完之后把结果告诉我。)
题目变形:定义一个方法,用来【打印】两个数字之和。(你来计算,算完之后你自己负责显示结果,不用告诉我。)
注意事项:
对于有返回值的方法,可以使用单独调用,打印调用或者赋值调用。
但是对于无返回值的方法,只能使用单独调用,不能使用打印调用或者赋值调用。
*/
public class Demo04MethodReturn {
public static void main(String[] args) {
// 我是main方法,我来调用你。
// 我调用你,你来帮我算一下,算完了之后,把结果告诉我的num变量
int num = getSum(10, 20);
System.out.println("返回值是:" + num);
System.out.println("===============");
printSum(100, 200);
System.out.println("===============");
System.out.println(getSum(2, 3)); // 正确写法
getSum(3, 5); // 正确写法,但是返回值没有用到
System.out.println("===============");
// 对于void没有返回值的方法,只能单独,不能打印或者赋值
// System.out.println(printSum(2, 3);); // 错误写法!
// System.out.println(void);
// int num2 = printSum(10, 20); // 错误写法!
// int num3 = void;
// void num4 = void;
}
// 我是一个方法,我负责两个数字相加。
// 我有返回值int,谁调用我,我就把计算结果告诉谁
public static int getSum(int a, int b) {
int result = a + b;
return result;
}
// 我是一个方法,我负责两个数字相加。
// 我没有返回值,不会把结果告诉任何人,而是我自己进行打印输出。
public static void printSum(int a, int b) {
int result = a + b;
System.out.println("结果是:" + result);
}
}
package com.zzm.day04.demo02;
/**
* 用途:
* 时间:2021/5/18 17:11
* 创建人:张子默
*/
/*
题目要求:定义一个方法,用来判断两个数字是否相同。
*/
public class Demo01MethodSame {
public static void main(String[] args) {
System.out.println(isSame(10, 20)); // false
System.out.println(isSame(20, 20)); // true
}
/*
三要素:
返回值类型:boolean
方法名称:isSame
参数列表:int a, int b
*/
public static boolean isSame(int a, int b) {
// boolean same;
/*if (a == b) {
same = true;
} else {
same = false;
}*/
// same = a == b ? true : false;
// same = a == b;
// return same;
return a == b;
}
}
package com.zzm.day04.demo02;
/**
* 用途:
* 时间:2021/5/18 17:17
* 创建人:张子默
*/
/*
题目要求:定义一个方法,用来求出1~100之间所有数字的和值。
*/
public class Demo02MethodSum {
public static void main(String[] args) {
System.out.println("结果是:" + getSum());
}
/*
三要素:
返回值:有返回值,计算结果是一个int数字
方法名称:getSum
参数列表:数据范围已经确定,是固定的,所以不需要告诉我任何条件
*/
public static int getSum() {
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
return sum;
}
}
package com.zzm.day04.demo02;
/**
* 用途:
* 时间:2021/5/18 17:50
* 创建人:张子默
*/
/*
题目要求:定义一个方法,用来打印指定次数的HelloWorld。
*/
public class Demo03MethodPrint {
public static void main(String[] args) {
printCount(10);
}
/*
三要素:
返回值类型:只是进行一大堆打印操作而已,没有计算,也没有结果要告诉调用处。
方法名称:printCount
参数列表:到底要打印多少次?必须告诉我,否则我不知道多少次,没法打印。次数:int
*/
public static void printCount(int num) {
for (int i = 1; i <= num; i++) {
System.out.println("Hello,World!" + i);
}
}
}
package com.zzm.day04.demo02;
/**
* 用途:
* 时间:2021/5/18 17:55
* 创建人:张子默
*/
/*
使用方法的时候,注意事项:
方法应该定义在类当中,但是不能在方法当中再定义方法,不能嵌套。
方法定义的前后顺序无所谓。
方法定义之后不会执行,如果希望执行,一定要调用:单独调用,打印调用,赋值调用。
如果方法有返回值,那么必须写上"return 返回值;"不能没有。
return后面的返回值数据,必须和方法的返回值类型对应起来。
对于一个void没有返回值的方法,不能写return后面的返回值,只能写return自己。
对于方法当中最后一行的return可以省略不写。
一个方法当中可以有多个return语句,但是必须保证同时只有一个会被执行到。两个return不能连写。
*/
public class Demo04MethodNotice {
public static int method1() {
return 10;
}
public static void method2() {
// return 10; // 错误的写法!方法没有返回值,return后面就不能写返回值。
return; // 没有返回值,只是结束方法的执行而已。
}
public static void method3() {
System.out.println("AAA");
System.out.println("BBB");
// return; // 最后一行的return可以省略不写。
}
public static int getMax(int a, int b) {
/*int max;
if (a > b) {
max = a;
} else {
max = b;
}
return max;*/
if (a > b) {
return a;
} else {
return b;
}
}
}
package com.zzm.day04.demo03;
/**
* 用途:
* 时间:2021/5/19 16:44
* 创建人:张子默
*/
/*
对于功能类似的方法来说,因为参数列表不一样,却需要记住那么多不同的方法名称,太麻烦。
方法的重载(Overload):多个方法的名称一样,但是参数列表不一样。
好处:只要记住唯一一个方法名称,就可以实现类似的多个功能。
方法重载与下列因素相关
参数个数不同
参数类型不同
参数的多类型顺序不同
方法重载与下列因素无关
与参数的名称无关
与方法的返回值类型无关
*/
public class Demo01MethodOverload {
public static void main(String[] args) {
/*System.out.println(sumTwo(10, 20)); // 30
System.out.println(sumThree(10, 20, 30)); // 60
System.out.println(sumFour(10, 20, 30, 40)); // 100*/
System.out.println(sum(10, 20)); // 30,两个参数的方法
System.out.println(sum(10, 20, 30)); // 60,三个参数的方法
System.out.println(sum(10, 20, 30, 40)); // 100,四个参数的方法
// System.out.println(sum(10, 20, 30, 40, 50)); // 找不到任何方法来匹配,所以错误!
sum(10, 20);
}
public static int sum(int a, int b) {
System.out.println("有两个参数的方法执行!");
return a + b;
}
/*
// 错误写法!与参数的名称无关
public static int sum(int x, int y) {
return x + y;
}*/
/*
// 错误写法!与方法的返回值类型无关
public static double sum(int a, int b) {
return a + b + 0.0;
}*/
public static int sum(double a, double b) {
return (int) (a + b);
}
public static int sum(double a, int b) {
return (int) (a + b);
}
public static int sum(int a, double b) {
return (int) (a + b);
}
public static int sum(int a, int b, int c) {
System.out.println("有三个参数的方法执行!");
return a + b + c;
}
public static int sum(int a, int b, int c, int d) {
System.out.println("有四个参数的方法执行!");
return a + b + c + d;
}
}
package com.zzm.day04.demo03;
/**
* 用途:
* 时间:2021/5/19 17:06
* 创建人:张子默
*/
/*
题目要求
比较两个数据是否相等。
参数类型分别为两个byte类型,两个short类型,两个int类型,两个long类型,并在main方法中进行测试。
*/
public class Demo02MethodOverloadSame {
public static void main(String[] args) {
byte a = 10;
byte b = 20;
System.out.println(isSame(a, b));
System.out.println(isSame((short) 20, (short) 20));
System.out.println(isSame(11, 12));
System.out.println(isSame(10L, 10L));
}
public static boolean isSame(byte a, byte b) {
System.out.println("两个byte参数的方法执行!");
boolean same;
if (a == b) {
same = true;
} else {
same = false;
}
// return a == b;
return same;
}
public static boolean isSame(short a, short b) {
System.out.println("两个short参数的方法执行!");
boolean same = a == b ? true : false;
return same;
}
public static boolean isSame(int a, int b) {
System.out.println("两个int参数的方法执行!");
return a == b;
}
public static boolean isSame(long a, long b) {
System.out.println("两个long参数的方法执行!");
if (a == b) {
return true;
} else {
return false;
}
}
}
package com.zzm.day04.demo03;
/**
* 用途:
* 时间:2021/5/20 8:51
* 创建人:张子默
*/
public class Demo03OverloadJudge {
public static void open(){} // 正确重载
public static void open(int a){} // 正确重载
// static void open(int a,int b){} //代码错误,和第17行冲突
public static void open(double a,int b){} // 正确重载
// public static void open(int a,double b){} // 代码错误,和第15行冲突
// public void open(int i,double d){} // 代码错误,和第14行冲突
public static void OPEN(){} // 代码正确不会报错,但是并不是有效重载
// public static void open(int i,int j){} // 代码错误,和第12行冲突
}
package com.zzm.day04.demo03;
/**
* 用途:
* 时间:2021/5/20 8:56
* 创建人:张子默
*/
// byte short int long float double char boolean
// String
// 在调用输出语句的时候,println方法其实就是进行了多种数据类型的重载形式。
public class Demo04OverloadPrint {
public static void main(String[] args) {
myPrint(100); // int
myPrint("Hello"); // String
}
public static void myPrint(byte num) {
System.out.println(num);
}
public static void myPrint(short num) {
System.out.println(num);
}
public static void myPrint(int num) {
System.out.println(num);
}
public static void myPrint(long num) {
System.out.println(num);
}
public static void myPrint(float num) {
System.out.println(num);
}
public static void myPrint(double num) {
System.out.println(num);
}
public static void myPrint(char zifu) {
System.out.println(zifu);
}
public static void myPrint(boolean is) {
System.out.println(is);
}
public static void myPrint(String str) {
System.out.println(str);
}
}