文章目录
- 一、方法的基本声明形式
- 1.语法
- 2.说明
- 3.方法的分类
- 4.方法的调用
- 5.方法的特点
- 6.return的几种形式
- 7.Java中的方法传参只有值传递
- 二、方法的重载
- 1.重载的概念
- 2.重载的特点
- 3.方法重载的三大原则
- 4.说明几点
- 5.重载示例
- 6.可变参数
- 7.方法递归
一、方法的基本声明形式
1.语法
访问控制修饰符 返回值类型 方法名(形参1,形参2…){
方法体
}
2.说明
- 成员方法是类中进行数据处理,实现相关功能的函数
- 方法决定了一个对象能够接收什么样的消息。
- 方法的基本组成部分包括:名称、参数、返回值和方法体。
- 返回类型可以是任意的Java数据类型,当一个方法不需要返回值时,返回类型为void。
- 方法名的命名规范:
方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头,例
如: sendMessge,一般使用动词。 - 参数的命名规范和方法的命名规范相同,见名知义,参数一般使用名词。
3.方法的分类
按照是否有形参和返回值
4.方法的调用
对象名.方法名(实参1,实参2,…);
方法通过方法名被调用,且只有被调用才会执行
- 返回类型描述的是在调用方法之后计算的结果并告知调用者的值的类型
- 参数列表给出了要传给方法的信息的类型和名称
- 方法名和参数列表(它们合起来被称为“方法签名”)唯一地标识出某个方法
- Java中的方法只能作为类的一部分来创建
- 方法只有通过对象才能被调用(后续介绍的static方法除外),且这个对象必须能执行这个方法调用,如果试图在某个对象上调用它并不具备的方法,那么在编译时就会得到一个错误
public class Dog {
//定义了两个方法
public void sleep(){
System.out.println("狗狗在睡觉");
}
public void lookHome(){
System.out.println("狗狗在看家"); }
}
public class TestDog{
public static void main(String[] args){
//创建一个对象 类名 对象名 = new 类名();
Dog dog = new Dog();
//通过对象名调用这两个方法
dog.sleep();
dog.lookHome();
}
}
5.方法的特点
- 定义方法可以将功能代码进行封装,便于该功能进行复用。
- 方法只有被调用才会被执行。
- 方法若没有返回值,则用关键字void表示,那么该方法中的return语句如果在最后一行可以省
略不写。 - 方法中可以调用方法,不可以在方法内部定义方法。
- 方法声明中有一个重要的关键字:return,return的用法包括两方面:
1.代表“已经做完,离开此方法”
2.如果此方法产生了一个值,这个值要放在return语句后面
3.可以定义方法返回任意想要的类型,如果不想返回任何值,可以指示此方法返回
void(空) - 同一个类中的方法在本对象中可以调用其他方法
public class Dog {
//定义了两个方法
public void sleep(){
System.out.println("狗狗在睡觉");
}
public void lookHome(){
System.out.println("狗狗在看家");
//调用sleep()方法
sleep();
}
}
6.return的几种形式
- 代表“已经做完,离开此方法”
- 如果此方法产生了一个值,这个值要放在return语句后面
- 如果方法有返回值,则在方法中必须写return语句
String say(){
System.out.println("你好"); //
// 不写return语句就会发生编译错误:Missing return statement 翻译:缺少return语句
}
- 你在方法的声明返回数据类型与return 语句返回值的类型必须一致
void say(){
System.out.println("你好"); //
return 1; //与方法所写的返回值类型不同,报错
}
}
- 当返回值类型是void的时候,可以写return,也可以不写
void say(){
System.out.println("你好");
return ;
}
- 若在方法体中return不在最后一句,则会报错
String say(){
System.out.println("你好");
return null; //return不在语句最后面,报错
System.out.println("你好");
}
解决方案:
1.把return语句后面的去掉
2.将return语句用if包起来,让编译器通过
void study(){
System.out.println(name+"在努力学习");
if(true){
return;
}System.out.println(name+"在努力学习");
}
- 当return放在循环体内部时,他的作用不但跳出循环体,同时还跳出方法
public class TestReturn {
public static void main(String[] args) {
for (int i=0;i<3;i++) {
for (int j=0;j<2;j++) {
System.out.println("i="+i+",j="+j);
if(i==1){
return;
}
System.out.println("我好happy...");
System.out.println("你也好happy...");
System.out.println("他也好happy...");
}
}
System.out.println("Hello World!");
}
}
7.Java中的方法传参只有值传递
Java中的参数只有值传递
即将实际参数值的副本(复制品)传入方法内,而参数本身不受影响。
- 形参是基本数据类型:将实参基本数据类型变量的“数据值”的副本传递给形参
- 形参是引用数据类型:将实参引用数据类型变量的“地址值”的副本传递给形参
二、方法的重载
1.重载的概念
在同一个类中至少有两个方法用同一个名字,但有不同的参数类型列表,这就是方法重载.
2.重载的特点
- 利用方法重载,只需要定义一个方法名 println(),接收不同类型的参数即可实现问题的简化
- 方法重载即指同一个类中多个方法可以享有相同的名字。但是这些方法的参数类型列表必须不同,或者是参数个数不同,或者是参数类型不同,或者是参数类型的排列顺序不同
- 编译器会根据调用时传递的实际参数自动判断具体调用的是哪个重载方法.
3.方法重载的三大原则
- 方法名相同
- 参数不同(可以有三方面的不同)
1.数量不同
2.类型不同
3.顺序不同 - 同一个类中
4.说明几点
- 参数列表不同包括:个数不同、顺序不同、类型不同。
- 仅仅参数变量名称不同是不可以的。
- 跟成员方法一样,构造方法也可以重载。
- 方法的返回类型可以相同也可以不相同。
- 仅仅返回类型不同不足以称为方法的重载
5.重载示例
//返回两个整数的和
int add(int x,int y){
return x+y;
}
//返回三个整数的和
int add(int x,int y,int z){
return x+y+z;
}
//返回两个小数的和
double add(double x,double y){
return x+y;
}
public static void main(String[] args) {
Test test = new Test();
System.out.println(test.add(1,2));
System.out.println(test.add(1,2,3));
System.out.println(test.add(1.1,2.1));
}
6.可变参数
JavaSE 5.0 中提供了Varargs(variable number of arguments)机制,允许直接定义能和多个实参相匹配的形
参。从而,可以用一种更简单的方式,来传递个数可变的实
//JDK 5.0以前:采用数组形参来定义方法,传入多个同一类型变量
public static void test(int a ,String[] books);
//JDK5.0:采用可变个数形参来定义方法,传入多个同一类型变量
public static void test(int a ,String…books);
- 声明格式:方法名(参数的类型名 …参数名)
- 可变参数:方法参数部分指定类型的参数个数是可变多个:0个,1个或多个,Java把可变参数
当做数组处理,用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中
以数组的形式访问可变参数 - 可变参数用…代替标识, …位于变量类型和变量名之间,前后有无空格都可以
- 可变参数方法的使用与方法参数部分使用数组是一致的
- 方法的参数部分有可变形参,需要放在形参声明的最后
- 在一个方法的形参位置,最多只能声明一个可变个数
public class TestVarArgus {
public static void dealArray(int... intArray){
for (int i : intArray) {
System.out.print(i +" ");
System.out.println();
}
public static void main(String args[]){
dealArray();
dealArray(1);
dealArray(1, 2, 3);
}
}
7.方法递归
在程序设计中,方法直接或者间接调用其自身的方法叫做递归调用,简称递归,其设计方法被应用到很多
特殊问题的解决上.
递归方法:一个方法体内调用它自身。
- 方法递归包含了一种隐式的循环,它会重复执行某段代码,但这种重复执行无须循环控制。
- 递归一定要向已知方向递归,否则这种递归就变成了无穷递归,类似于死循环。
public int sum(int num){
if(num==1){
return 1;
}else {
return num+sum(num-1);
}
}