1.方法的定义
作为一个java初学者,我们经常会听到方法与函数,但对于两者有何异同并没有深入的了解 。通过查阅资料自己对方法与函数有了初步的认识。
- 函数: 是一段可以重复调用的代码,通过名字来进行调用。它能将数据传递进去进行一些处理,然后返回数据(或者没有返回值),函数和对象无关。
- 方法: 也是一段可以重复调用的代码,也通过名字来进行调用的,但是它跟一个对象相关联。方法可以操作类内部由private封装的数据。
在很多语言中都有函数的定义,但是在咱们JAVA语言中,我们将其称之为方法。简单理解,方法就是完成特定功能的代码块。
2.方法的声明(格式)
方法的格式为:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2 ....){
方法体;
return 返回值;//return 返回值这部分可以没有
}
方法的格式 参数 | 说明 |
修饰符 | 比较多,后面会详细介绍。目前使用 public static |
返回值类型 | 用于限定返回值的数据类型 |
方法名 | 就是一个名称,它的存在是为了方便我们调用方法 |
参数类型 | 限定调用方法时传入参数的数据类型 |
参数名 | 是一个变量,接收调用方法时传入的参数,这个参数其实有一个专业的名词,被称之为形式参数,它的作用是用来接收实际参数的 |
实际参数 | 说明 |
方法体 | 完成功能的代码 |
return | 结束方法以及返回方法指定类型的值 |
返回值 | 就是功能的结果,由return带回,带回给调用者 |
注意:当方法以void关键字声明,那么此方法没有返回值,但可以使用return来结束调用。
package disizhang;
public class FangFaShuoMing {
public static void main(String[] args) {
System.out.println("主方法调用");
show();
show();
show();
}
/*方法就是对一段功能逻辑的封装,以实现重复调用。
方法的语法:
1.方法要定义在类中
2.方法跟方法是平级关系,不能嵌套定义
3.权限修饰符 状态修饰符 返回值类型 方法名(参数){ 封装的代码 }
4.方法不调用,不执行。
5.可以在主方法里面,通过方法名来调用我们自己定义的方法
*/
public static void show(){
System.out.println("helloworld");
return;//此处的return可以进行省略
}
}
输出的结果为:
主方法调用
helloworld
helloworld
helloworld
3.方法之求和案例及其调用
package disizhang.diaoyong;
public class XiangJiaDiaoYong {
public static void main(String[] args) {
//相加的方法
add1();
int sum=add2();
System.out.println("方法2被调用");
System.out.println(sum);
}
//方法名一般就是小写,多个单词,第一个单词字母小写
//void 返回值类型,没有明确的返回值类型
public static void add1(){
int a=3;
int b=5;
System.out.println("方法1被调用");
System.out.println(a+b);
return;//结束方法,方法的没有明确返回值类型,也就void 那么这个return 可以省略不写
}
public static int add2() {
//明确了返回值类型 为 int
//一旦一个方法,明确了返回值类型,那么必须在方法的最后,由return 带回一个与你明确了数据类型相一致的结果
int m = 3;
int n = 3;
int sum = m + n;
return sum;//return 结束方法,并返回结果
}
}
输出的结果为:
方法1被调用
8
方法2被调用
6
package disizhang.diaoyong;
public class Test1 {
public static void main(String[] args) {
//以后我们在设计一个方法时,你得考虑两点,1,这个方法要不要参数,要几个参数,参数的数据类型是什么。
//2.这个方法要不要设计返回值,返回值是什么。
int sum=add(20,30);
System.out.println("两个数的和为:"+sum);
}
//我们定义在方法括号里面的参数,我们称之为形式参数,简称形参,语法格式 数据类型 参数名 多个参数用逗号隔开
//形参的作用,就是用来接收调用方法时,传过来的实参
public static int add(int a, int b) {
int sum=a+b;
return sum;
}
}
输出的结果为:
两个数的和为:50
方法的注意事项 |
方法不调用不执行 |
方法与方法是平级关系,不能嵌套定义 |
方法调用的时候不用在传递数据类型 实参 :可以是常量,也可以是变量 |
如果方法有明确的返回值,一定要由return带回一个值 |
4.方法定义和使用的练习
1.键盘录入来获取两个数中的较大值
package disizhang.diaoyong;
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入第一个数");
int a=sc.nextInt();
System.out.println("请输入第二个数:");
int b=sc.nextInt();
int max=zuidazhi(a,b);
System.out.println("两者中的最大值为:"+max);
}
public static int zuidazhi(int a,int b){
int max;
if(a>b){
return max=a;
}
else{
return max=b;
}
}
}
输出的结果为:
请输入第一个数:
6
请输入第二个数:
3
两者中的最大值为:6
2.键盘录入来比较两个数是否相等
package disizhang.diaoyong;
import java.util.Scanner;
public class Test3 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入第一个数为:");
int a=sc.nextInt();
System.out.println("请输入第二个数为:");
int b=sc.nextInt();
bijiao(a,b);
}
public static void bijiao(int a,int b){
if(a==b){
System.out.println("两个数相等");
}
else{
System.out.println("两个数不相等");
}
}
}
输出的结果为:
请输入第一个数为:
3
请输入第二个数为:
5
两个数不相等
3.根据键盘录入的行数,在控制台输出上三角形*
ackage disizhang.diaoyong;
import java.util.Scanner;
public class Test4 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入行数:");
int i=sc.nextInt();
printxingxing( i);
}
public static void printxingxing(int i){
for(int k=1;k<=i;k++){
for(int m=1;m<=k;m++){
System.out.print("*");
}
System.out.println();
}
}
}
请输入行数:
3
*
**
***
4.根据键盘录入的数据输出对应的乘法表
package disizhang.diaoyong;
import java.util.Scanner;
public class Test5 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入行数:");
int i=sc.nextInt();
chengfabiao(i);
}
public static void chengfabiao(int i){
for(int k=1;k<=i;k++){
for(int m=1;m<=k;m++){
System.out.print(k+"*"+m+"="+(k*m)+"\t");
}
System.out.println();
}
}
}
输出的结果为:
请输入行数:
9
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
5.方法重载概述和基本使用
方法重载概述:
在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同,与返回值无关,不拿返回值/类型来区分。
参数列表不同:1.参数个数不同 2. 参数类型不同
package disizhang.diaoyong;
public class Test6 {
public static void main(String[] args) {
//求多个数相加
double sum=add(1,2.0);
int sum2 = add(1, 2, 3);
int sum3 = add(1, 2, 3, 4);
// 变量名.sout 快捷输出变量
System.out.println(sum);
System.out.println(sum2);
System.out.println(sum3);
}
/*方法重载:允许一个类中可以定义多个同名方法,
只要,他们的参数个数或参数的类型,不一样就可以。不能返回值类型来区分*/
public static int add(int a,int b){
System.out.println("两个int的调用了");
return a+b;
}
public static double add(int a, double b) {
System.out.println("一个int的一个double调用了");
return a + b;
}
public static int add(int a,int b,int c){
return a+b+c;
}
public static int add(int a,int b,int c,int d){
return a+b+c+d;
}
}