网站导航排版布局,做外贸怎么登陆国外网站,萌宝宝投票网站怎么做,上海 网站建设业务营销方法方法的定义和调用
方法的定义 方法#xff08;method#xff09;是一段用于实现特定功能的代码块#xff0c;类似于其他编程语言中的函数#xff08;function#xff09;。方法被用来定义类或类的实例的行为特征和功能实现。方法是类和对象行为特征的抽象表示。方法与面向…方法的定义和调用
方法的定义 方法method是一段用于实现特定功能的代码块类似于其他编程语言中的函数function。方法被用来定义类或类的实例的行为特征和功能实现。方法是类和对象行为特征的抽象表示。方法与面向过程中的函数非常相似。在面向过程中函数是最基本的单位整个程序由一系列函数调用构成。而在面向对象中整个程序的基本单位是类方法是从属于类和对象的。 方法的声明格式 [修饰符1 修饰符2 …] 返回值类型 方法名(形式参数列表){ Java语句… … … } 方法的调用方式 对象名.方法名(实参列表) 方法的详细说明 形式参数在方法声明时用于接收外界传入的数据。实参调用方法时实际传给方法的数据。返回值方法在执行完毕后返还给调用它的环境的数据。返回值类型事先约定的返回值的数据类型如无返回值必须显示指定为为void。 演示代码
public class TestMethod01{ //方法的定义写方法public static int add(int num1,int num2){int sum 0;sum num1;sum num2;return sum;//将返回值返回到方法的调用处}public static void main(String[] args){//1020://方法的调用用方法int num add(10,20);System.out.println(num);/*int num1 10;int num2 20;int sum 0;sum num1;sum num2;System.out.println(sum);*///3090:int sum add(30,90);System.out.println(sum);/*int num3 30;int num4 90; int sum1 0 ;sum1 num3;sum1 num4;System.out.println(sum1);*///5048:System.out.println(add(50,48));}
}
总结 1.方法是对特定的功能进行提取形成一个代码片段这个代码片段就是我们所说的方法 2.方法和方法是并列的关系所以我们定义的方法不能写到main方法中 3.方法的定义--》格式 修饰符 方法返回值类型 方法名(形参列表){ 方法体; return 方法返回值; } 4.方法的作用提高代码的复用性 5.总结方法定义的格式 1) 修饰符: public static ---具体修饰符的用法可查看《Java之面向对象中》 2) 方法返回值类型 : 方法的返回值对应的数据类型 数据类型 可以是基本数据类型byte,short,int,long,float,double,char,boolean 也可以是引用数据类型 3) 方法名 :见名知意首字母小写其余遵循驼峰命名 eg: addNum ,一般尽量使用英文来命名 4) 形参列表 :方法定义的时候需要的形式参数 int num1, int num2 --相当于告诉方法的调用者需要传入几个参数需要传入的参数的类型 实际参数方法调用的时候传入的具体的参数 10,20 --根据形式参数的需要传入的 5)方法体具体的业务逻辑代码 6) return 方法返回值; 方法如果有返回值的话 return方法返回值将返回值返回到方法的调用处 方法没有返回值的话return可以省略不写了并且方法的返回值类型为void 演示代码
public class TestMethod02{ public static void add(int num1,int num2){int sum 0;sum num1;sum num2; System.out.println(sum);//return; }public static void main(String[] args){//1020://方法的调用用方法add(10,20); //3090:add(30,90);//5048://System.out.println(add(50,48));//报错 错误: 此处不允许使用 空 类型}
}
什么时候有返回值什么时候没有返回值 看心情 --》看需求
方法定义注意事项 1形参列表要怎么写定义几个参数分别是什么类型的 ---》不确定因素我们会当做方法的形参 2) 方法到底是否需要返回值 如果需要的话返回值的类型是什么 方法的调用注意事项 1实际参数要怎么传入传入几个参数传入什么类型的 2方法是否有返回值需要接受 Demo练习
【1】基本功能
import java.util.Scanner;
public class TestMethod03{public static void main(String[] args){//功能我心里有一个数你来猜看是否猜对//1.你猜一个数Scanner sc new Scanner(System.in);System.out.println(请你猜一个数);int yourGuessNum sc.nextInt();//2.我心里有一个数int myHeartNum 5;//3.将两个数比对System.out.println(yourGuessNummyHeartNum?猜对了:猜错了);}
}
对猜数功能提取为一个方法
import java.util.Scanner;
public class TestMethod03{public static void main(String[] args){//功能我心里有一个数你来猜看是否猜对//1.你猜一个数Scanner sc new Scanner(System.in);System.out.println(请你猜一个数);int yourGuessNum sc.nextInt();//调用猜数的方法guessNum(yourGuessNum);}//方法的定义功能实现猜数功能public static void guessNum(int yourNum){//生成一个随机数范围在(1-6)int myHeartNum (int)(Math.random()*6)1;//将两个数比对System.out.println(yourNummyHeartNum?猜对了:猜错了); }
}
面试题两个数是否交换成功
public class TestM{public static void main(String[] args){int a10;int b20;System.out.println(输出交换前的两个数a---b);changeNum(a,b);System.out.println(输出交换后的两个数a---b);}public static void changeNum(int num1,int num2){int t;tnum1;num1num2;num2t;}
}
结果没有交换成功 形参改变 不影响 实参的改变Java拿不到栈中的地址但可以拿到堆的地址比如用数组先来存然后交换数组下标当然还有其它方法可以查看Java面向对象章节中交换两数的值。
具体原因如下 方法的重载
方法重载的定义 方法的重载是指同一个类(包括继承关系)中可以定义多个方法名相同但参数不同的方法。 调用时会根据不同的参数自动匹配对应的方法。 注意本质重载的方法实际是完全不同的方法只是名称相同而已 构成方法重载的必要条件 ❀不同的含义形参类型、形参个数、形参顺序不同 ❀只有返回值不同不构成方法的重载 如int a(String str){} 与 void a(String str){} 不构成方法重载 ❀只有形参的名称不同不构成方法的重载 如int a(String str){} 与 int a(String s){} 不构成方法重载 演示代码
public class TestMethod05{public static void main(String[] args){//1020:int sum add(10,20);System.out.println(sum);//204080://System.out.println(add(add(20,40),80));System.out.println(add(20,40,80));//306090120://System.out.println(add(add(30,60),add(90,120)));System.out.println(add(30,60,90,120));//9.84.7://System.out.println(add(9.8,4.7));System.out.println(add(9.8,4.7));}//定义一个方法两个数相加两个int类型数据相加public static int add(int num1,int num2){return num1num2;}//定义一个方法三个数相加public static int add(int num1,int num2,int num3){return num1num2num3;}//定义一个方法四个数相加public static int add(int num1,int num2,int num3,int num4){return num1num2num3num4;}//定义一个方法两个数相加两个double类型的数据相加public static double add(double num1,double num2){return num1num2;}
}
总结 1.方法的重载在同一个类(或者继承关系)中方法名相同形参列表不同的多个方法构成了方法的重载。 2.方法的重载只跟方法名和形参列表有关与修饰符返回值类型无关。 3.注意形参列表不同指的是什么1个数不同 add() add(int num1) add(int num1,int num2)2顺序不同 add(int num1,double num2) add(double num1,int num2)3类型不同 add(int num1) add(double num1) 4.请问下面的方法是否构成了方法的重载 (1)add(int a) 和 add(int b) ---不构成,相当于方法的重复定义 (2)public static int add(int a) 和 public static void add(int b) ---不构成,与返回值无关 扩充
public class TestMethod06{public static void main(String[] args){add(5);//级别byte,short,char--int--long--float---double//依次匹配最近的例如形参没有int类型的会去执行同方法名形参为long的去匹配}public static void add(double num1){System.out.println(------2);}public static void add(float num1){System.out.println(------3);}public static void add(long num1){System.out.println(------4);}/*public static void add(int num1){System.out.println(------1);}*/
}
此时调用5而没有符合这个类型形参的函数会优先去匹配形参为long类型的同名函数再是float---》double。
Demo练习 题目描述一个木块如果高度比宽度大我们说它是竖着放的否则我们说它是平放的。 读入一个木块的高度和宽度。如果它是平放的则输出A否则输出B。 import java.util.Scanner;
public class Demo {public static void main(String[] args) {Scanner in new Scanner(System.in);int height in.nextInt();int width in.nextInt();Board board new Board(height, width);char status board.getStatus();System.out.println(status);}
}
class Board {int height, width;public Board(int height, int width) {this.height height;this.width width;}public char getStatus() {if (height width) {return status(1);} else {return status(1.0);}}public char status(int rate) {return A;//平放的}public char status(double rate) {return B;}
}