Java基础知识(四)
方法的概述
1、就是具有某种特定功能的代码块
2、比如有一些代码需要反复编写和执行,将这块代码使用大括号包裹起来,取一个名字,下次需要的使用直接通过名字进行调用
3、方法的好处
1、提高了代码的复用性
2、将方法的实现封装起来,外界是无法看到的,提高了代码的安全性
3、简化了逻辑的思维
方法的定义
直男
撩妹
public static 撩妹(金钱 时间) {
花金钱请吃饭
花时间陪她
芳心
}
1、格式
修饰符 返回值类型 方法名称(参数列表) {
方法体;
return 语句;
}
2、解释
1、修饰符现在统一写成public static
2、返回值类型,就是一个数据类型,方法是一个功能,有可能有产出的数据,返回值类型跟产出的数据保持一致
产出一个整数10,写成int,产出字符串"张三",写成String
3、方法名称,是自己的定义的,要保证是一个合法的标识符,方法的命名规则,第一个单词全部小写,从第二个单词开始首字母大写,其他字母小写 getName
4、参数列表:方法是一个功能,可能需要一些数据才能完成这个功能,这些数据有可能是一个、多个、或者没有。在内存中开辟一个空间,当做容器,用来接收传递来的实参
5、方法体 真正完成这个功能的代码
6、return语句,方法可能会有一些产出,通过return将产出的数据返回回去,返回给谁?谁调用我我就返回给谁,返回的数据必须跟返回值类型保持一致
方法的注意事项
1、方法不调用就不会执行
2、方法是定义在类中方法外,千万不要定义在主方法中,方法和方法都是平级的,可以定义在main方法上面,也可以定义在main方法下面,一般都是定义在main方法下面
3、方法可以相互调用,甚至方法可以自己调用自己
4、形式参数:相当于声明两个变量,既然是声明变量肯定要给数据类型,jvm才知道分配多大的内存空间,形式参数可以有,也可以没有,也可以有多个,多个参数使用逗号进行分割
(int a ,int b ) a和b是变量名,可以任意取名
5、return语句
return语句返回的数据必须跟返回值类型保持一致
假如不需要返回数据,写成return; return;可以省略不写,但是返回值类型必须写成void
6、实际参数:
实际参数需要确定的值,目的就是给形式列表进行赋值,不需要数据类型
方法的调用
1、直接调用【遇到在说】
方法名(实际参数);
有些方法不需要产出内容,只是打印或者给某个数据赋值,就可以直接调用
2、输出调用
System.out.println(方法名(实际参数));
方法的返回值结果,我只想打印看一下进行验证,就可以使用输出调用
3、赋值调用[常用]
int sum = 方法名(实际参数);
方法的返回值结果还要做后续的逻辑处理,必须使用赋值调用,将结果赋值给一个变量
class Demo01_方法的定义 {
public static void main(String[] args) {
int a = 1;
int b = 2;
//直接调用
//getSum(a,b);//什么也不会打印,因为没有打印语句
//输出调用
//System.out.println(getSum(a,b));
int sum = getSum(a,b);
System.out.println(sum * sum);
}
/*
定义一个方法,求两个数的和
参数列表 两个整数
返回值 两个数的和 int
*/
public static int getSum(int a, int b) {
int sum = a + b;
return sum;
}
/*
做辣子鸡
参数列表 辣椒 鸡
return 一盘辣子鸡
*/
/*public static 盘 做辣子鸡(辣椒 l, 鸡 j) {
倒油
放鸡
放辣椒
装盘
return 一盘辣子鸡;
}*/
}
方法的重载
1、overload 超载,重载
2、如果没有方法的重载
1、一个类似的功能需要定义很多的方法名,对于程序员来说,要记忆大量的方法名,非常的不方便
3、方法的重载
在同一个类中,方法名相同,参数列表不同,和返回值无关
方法名相同,大小写都一样
参数列表不同:(类型不同、个数不同,不是变量名不同)
和返回值无关,不需要再关注返回值
4、System.out中的println方法什么类型都可以进行打印,说明这个类中存在大量的方法的重载
class Demo05_方法的重载 {
//在同一个类中,方法名相同,参数列表不同,和返回值无关
// 参数列表不同:(类型不同、个数不同,不是变量名不同)
public static void main(String[] args) {
//求两个整数的和
System.out.println(getSum(10,20));
}
//求两个整数的和
public static int getSum(int a, int b) {
System.out.println("求两个整数的和方法执行了");
return a + b;
}
//求两个小数的和
public static double getSum(double a,double b) {
System.out.println("求两个小数的和方法执行了");
return a + b;
}
//方法的重复定义,不是方法的重载, 因为参数都是int
/*public static boolean getSum(int b, int a) {
return true;
}*/
//不是方法的重载,方法名不同
public static void getsum(int a) {
}
//是方法的重载
public static void getSum(double a, int b) {
}
//是方法的重载,参数的类型不同
public static int getSum(int a, double b) {
return 1;
}
//是方法的重载,参数的个数不同
public static void getSum(int a, int b, int c) {
}
//求两个小数的和
public static double getSum1(double a,double b) {
return a + b;
}
//求一个整数和一个小数的和
public static double getSum2(int a, double b) {
return a + b;
}
}